* [PATCH] getlogin_r: return early when linux sentinel value is set @ 2018-03-16 16:18 Jesse Hathaway 2018-03-19 15:03 ` Jesse Hathaway 2018-03-20 8:00 ` Adhemerval Zanella 0 siblings, 2 replies; 18+ messages in thread From: Jesse Hathaway @ 2018-03-16 16:18 UTC (permalink / raw) To: libc-alpha When there is no login uid Linux sets /proc/self/loginid to the sentinel value of 4294967295. If this is set we can return early and avoid needlessly looking up the sentinel value in any configured nss databases. diff --git a/sysdeps/unix/sysv/linux/getlogin_r.c b/sysdeps/unix/sysv/linux/getlogin_r.c index 73ea14c8f9..43f55a2188 100644 --- a/sysdeps/unix/sysv/linux/getlogin_r.c +++ b/sysdeps/unix/sysv/linux/getlogin_r.c @@ -55,6 +55,12 @@ __getlogin_r_loginuid (char *name, size_t namesize) endp == uidbuf || *endp != '\0')) return -1; + /* If there is no login uid, linux sets /proc/self/loginid to the sentinel + value of 4294967295, so check if the value is set and return early to + avoid making unneeded nss lookups. */ + if (uid == 4294967295) + return ENXIO; + struct passwd pwd; struct passwd *tpwd; int result = 0; ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [PATCH] getlogin_r: return early when linux sentinel value is set 2018-03-16 16:18 [PATCH] getlogin_r: return early when linux sentinel value is set Jesse Hathaway @ 2018-03-19 15:03 ` Jesse Hathaway 2018-03-20 8:00 ` Adhemerval Zanella 1 sibling, 0 replies; 18+ messages in thread From: Jesse Hathaway @ 2018-03-19 15:03 UTC (permalink / raw) To: libc-alpha This is my first time submitting a patch, so any feedback would be very much appreciated. On Fri, Mar 16, 2018 at 11:18 AM, Jesse Hathaway <jesse@mbuki-mvuki.org> wrote: > When there is no login uid Linux sets /proc/self/loginid to the sentinel > value of 4294967295. If this is set we can return early and avoid > needlessly looking up the sentinel value in any configured nss > databases. > > diff --git a/sysdeps/unix/sysv/linux/getlogin_r.c > b/sysdeps/unix/sysv/linux/getlogin_r.c > index 73ea14c8f9..43f55a2188 100644 > --- a/sysdeps/unix/sysv/linux/getlogin_r.c > +++ b/sysdeps/unix/sysv/linux/getlogin_r.c > @@ -55,6 +55,12 @@ __getlogin_r_loginuid (char *name, size_t namesize) > endp == uidbuf || *endp != '\0')) > return -1; > > + /* If there is no login uid, linux sets /proc/self/loginid to the sentinel > + value of 4294967295, so check if the value is set and return early to > + avoid making unneeded nss lookups. */ > + if (uid == 4294967295) > + return ENXIO; > + > struct passwd pwd; > struct passwd *tpwd; > int result = 0; ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [PATCH] getlogin_r: return early when linux sentinel value is set 2018-03-16 16:18 [PATCH] getlogin_r: return early when linux sentinel value is set Jesse Hathaway 2018-03-19 15:03 ` Jesse Hathaway @ 2018-03-20 8:00 ` Adhemerval Zanella 2018-03-20 9:05 ` Andreas Schwab 2018-03-20 17:52 ` Jesse Hathaway 1 sibling, 2 replies; 18+ messages in thread From: Adhemerval Zanella @ 2018-03-20 8:00 UTC (permalink / raw) To: libc-alpha On 17/03/2018 00:18, Jesse Hathaway wrote: > When there is no login uid Linux sets /proc/self/loginid to the sentinel > value of 4294967295. If this is set we can return early and avoid > needlessly looking up the sentinel value in any configured nss > databases. The change is short enough so I think it won't require a copyright assignment. However it does require a ChangeLog entry, could you please resend the patch with a proper one? > > diff --git a/sysdeps/unix/sysv/linux/getlogin_r.c > b/sysdeps/unix/sysv/linux/getlogin_r.c > index 73ea14c8f9..43f55a2188 100644 > --- a/sysdeps/unix/sysv/linux/getlogin_r.c > +++ b/sysdeps/unix/sysv/linux/getlogin_r.c > @@ -55,6 +55,12 @@ __getlogin_r_loginuid (char *name, size_t namesize) > endp == uidbuf || *endp != '\0')) > return -1; > > + /* If there is no login uid, linux sets /proc/self/loginid to the sentinel > + value of 4294967295, so check if the value is set and return early to > + avoid making unneeded nss lookups. */ > + if (uid == 4294967295) > + return ENXIO; I prefer to just use either (int)-1 or just 0xffffffff. Also, __getlogin_r_loginuid should set errno itself as for ERANGE instead of just return its value (errno won't be set in this case and I think it got it wrong for ENOMEM in this case). > + > struct passwd pwd; > struct passwd *tpwd; > int result = 0; > ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [PATCH] getlogin_r: return early when linux sentinel value is set 2018-03-20 8:00 ` Adhemerval Zanella @ 2018-03-20 9:05 ` Andreas Schwab 2018-03-20 17:52 ` Jesse Hathaway 1 sibling, 0 replies; 18+ messages in thread From: Andreas Schwab @ 2018-03-20 9:05 UTC (permalink / raw) To: Adhemerval Zanella; +Cc: libc-alpha On Mär 20 2018, Adhemerval Zanella <adhemerval.zanella@linaro.org> wrote: > On 17/03/2018 00:18, Jesse Hathaway wrote: >> When there is no login uid Linux sets /proc/self/loginid to the sentinel >> value of 4294967295. If this is set we can return early and avoid >> needlessly looking up the sentinel value in any configured nss >> databases. > > The change is short enough so I think it won't require a copyright > assignment. However it does require a ChangeLog entry, could you please > resend the patch with a proper one? > >> >> diff --git a/sysdeps/unix/sysv/linux/getlogin_r.c >> b/sysdeps/unix/sysv/linux/getlogin_r.c >> index 73ea14c8f9..43f55a2188 100644 >> --- a/sysdeps/unix/sysv/linux/getlogin_r.c >> +++ b/sysdeps/unix/sysv/linux/getlogin_r.c >> @@ -55,6 +55,12 @@ __getlogin_r_loginuid (char *name, size_t namesize) >> endp == uidbuf || *endp != '\0')) >> return -1; >> >> + /* If there is no login uid, linux sets /proc/self/loginid to the sentinel >> + value of 4294967295, so check if the value is set and return early to >> + avoid making unneeded nss lookups. */ >> + if (uid == 4294967295) >> + return ENXIO; > > I prefer to just use either (int)-1 or just 0xffffffff. That should be (uid_t) -1. Andreas. -- Andreas Schwab, SUSE Labs, schwab@suse.de GPG Key fingerprint = 0196 BAD8 1CE9 1970 F4BE 1748 E4D4 88E3 0EEA B9D7 "And now for something completely different." ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [PATCH] getlogin_r: return early when linux sentinel value is set 2018-03-20 8:00 ` Adhemerval Zanella 2018-03-20 9:05 ` Andreas Schwab @ 2018-03-20 17:52 ` Jesse Hathaway 2018-03-20 18:30 ` Andreas Schwab 1 sibling, 1 reply; 18+ messages in thread From: Jesse Hathaway @ 2018-03-20 17:52 UTC (permalink / raw) To: Adhemerval Zanella; +Cc: libc-alpha Thanks for the review Adhemerval: On Tue, Mar 20, 2018 at 3:00 AM, Adhemerval Zanella <adhemerval.zanella@linaro.org> wrote: > The change is short enough so I think it won't require a copyright > assignment. However it does require a ChangeLog entry, could you please > resend the patch with a proper one? added > > diff --git a/sysdeps/unix/sysv/linux/getlogin_r.c > > b/sysdeps/unix/sysv/linux/getlogin_r.c > > index 73ea14c8f9..43f55a2188 100644 > > --- a/sysdeps/unix/sysv/linux/getlogin_r.c > > +++ b/sysdeps/unix/sysv/linux/getlogin_r.c > > @@ -55,6 +55,12 @@ __getlogin_r_loginuid (char *name, size_t namesize) > > endp == uidbuf || *endp != '\0')) > > return -1; > > > > + /* If there is no login uid, linux sets /proc/self/loginid to the sentinel > > + value of 4294967295, so check if the value is set and return early to > > + avoid making unneeded nss lookups. */ > > + if (uid == 4294967295) > > + return ENXIO; > > I prefer to just use either (int)-1 or just 0xffffffff. changed to (uid_t) - 1 > Also, > __getlogin_r_loginuid should set errno itself as for ERANGE instead > of just return its value (errno won't be set in this case and I think > it got it wrong for ENOMEM in this case). Would you be so kind as to explain this a little more to someone with very little C experience. I returned the errno value because the comment on the function indicates that is what the caller expects: /* Try to determine login name from /proc/self/loginuid and return 0 if successful. If /proc/self/loginuid cannot be read return -1. Otherwise return the error number. */ and getlogin when it calls __getlogin_r_loginuid, only checks the return value, and not the errno value Thanks, Jesse Updated patch: From 7ddef30f32b30cd7579ff4b0ea666862022aa0ec Mon Sep 17 00:00:00 2001 From: Jesse Hathaway <jesse@mbuki-mvuki.org> Date: Fri, 16 Mar 2018 10:46:50 -0500 Subject: [PATCH] getlogin_r: return early when linux sentinel value is set When there is no login uid Linux sets /proc/self/loginid to the sentinel value of, (uid_t) - 1. If this is set we can return early and avoid needlessly looking up the sentinel value in any configured nss databases. diff --git a/ChangeLog b/ChangeLog index 3399e567b8..1ceff1c094 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2018-03-20 Jesse Hathaway <jesse@mbuki-mvuki.org> (tiny change) + + * sysdeps/unix/sysv/linux/getlogin_r.c (__getlogin_r_loginuid): return early + when linux sentinel value is set. + 2018-03-20 Samuel Thibault <samuel.thibault@ens-lyon.org> * manual/errno.texi (EOWNERDEAD, ENOTRECOVERABLE): Remove errno diff --git a/sysdeps/unix/sysv/linux/getlogin_r.c b/sysdeps/unix/sysv/linux/getlogin_r.c index 73ea14c8f9..8f0e997d43 100644 --- a/sysdeps/unix/sysv/linux/getlogin_r.c +++ b/sysdeps/unix/sysv/linux/getlogin_r.c @@ -55,6 +55,12 @@ __getlogin_r_loginuid (char *name, size_t namesize) endp == uidbuf || *endp != '\0')) return -1; + /* If there is no login uid, linux sets /proc/self/loginid to the sentinel + value of, (uid_t) - 1, so check if that value is set and return early to + avoid making unneeded nss lookups. */ + if (uid == (uid_t) - 1) + return ENXIO; + struct passwd pwd; struct passwd *tpwd; int result = 0; ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [PATCH] getlogin_r: return early when linux sentinel value is set 2018-03-20 17:52 ` Jesse Hathaway @ 2018-03-20 18:30 ` Andreas Schwab 2018-03-21 21:28 ` Jesse Hathaway 0 siblings, 1 reply; 18+ messages in thread From: Andreas Schwab @ 2018-03-20 18:30 UTC (permalink / raw) To: Jesse Hathaway; +Cc: Adhemerval Zanella, libc-alpha On Mär 20 2018, Jesse Hathaway <jesse@mbuki-mvuki.org> wrote: >> Also, >> __getlogin_r_loginuid should set errno itself as for ERANGE instead >> of just return its value (errno won't be set in this case and I think >> it got it wrong for ENOMEM in this case). > > Would you be so kind as to explain this a little more to someone with > very little C experience. I returned the errno value because the > comment on the function indicates that is what the caller expects: > > /* Try to determine login name from /proc/self/loginuid and return 0 > if successful. If /proc/self/loginuid cannot be read return -1. > Otherwise return the error number. */ > > and getlogin when it calls __getlogin_r_loginuid, only checks the > return value, and not the errno value Depends on whether you want the linux __getlogin_r to fall back to the generic __getlogin_r. Andreas. -- Andreas Schwab, schwab@linux-m68k.org GPG Key fingerprint = 58CA 54C7 6D53 942B 1756 01D3 44D5 214B 8276 4ED5 "And now for something completely different." ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [PATCH] getlogin_r: return early when linux sentinel value is set 2018-03-20 18:30 ` Andreas Schwab @ 2018-03-21 21:28 ` Jesse Hathaway 2018-03-22 6:14 ` Adhemerval Zanella 2018-03-22 17:35 ` Andreas Schwab 0 siblings, 2 replies; 18+ messages in thread From: Jesse Hathaway @ 2018-03-21 21:28 UTC (permalink / raw) To: Andreas Schwab; +Cc: Adhemerval Zanella, libc-alpha On Tue, Mar 20, 2018 at 1:30 PM, Andreas Schwab <schwab@linux-m68k.org> wrote: > Depends on whether you want the linux __getlogin_r to fall back to the > generic __getlogin_r. Thanks, updated patch below: From 04a50b5ee857aa33e1527d70f0676b6daf5a036c Mon Sep 17 00:00:00 2001 From: Jesse Hathaway <jesse@mbuki-mvuki.org> Date: Fri, 16 Mar 2018 10:46:50 -0500 Subject: [PATCH] getlogin_r: return early when linux sentinel value is set When there is no login uid Linux sets /proc/self/loginid to the sentinel value of, (uid_t) - 1. If this is set we can return early and avoid needlessly looking up the sentinel value in any configured nss databases. diff --git a/ChangeLog b/ChangeLog index 3399e567b8..1ceff1c094 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2018-03-20 Jesse Hathaway <jesse@mbuki-mvuki.org> (tiny change) + + * sysdeps/unix/sysv/linux/getlogin_r.c (__getlogin_r_loginuid): return early + when linux sentinel value is set. + 2018-03-20 Samuel Thibault <samuel.thibault@ens-lyon.org> * manual/errno.texi (EOWNERDEAD, ENOTRECOVERABLE): Remove errno diff --git a/sysdeps/unix/sysv/linux/getlogin_r.c b/sysdeps/unix/sysv/linux/getlogin_r.c index 73ea14c8f9..1f90c1ca2d 100644 --- a/sysdeps/unix/sysv/linux/getlogin_r.c +++ b/sysdeps/unix/sysv/linux/getlogin_r.c @@ -55,6 +55,15 @@ __getlogin_r_loginuid (char *name, size_t namesize) endp == uidbuf || *endp != '\0')) return -1; + /* If there is no login uid, linux sets /proc/self/loginid to the sentinel + value of, (uid_t) - 1, so check if that value is set and return early to + avoid making unneeded nss lookups. */ + if (uid == (uid_t) - 1) + { + __set_errno (ENXIO); + return ENXIO; + } + struct passwd pwd; struct passwd *tpwd; int result = 0; ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [PATCH] getlogin_r: return early when linux sentinel value is set 2018-03-21 21:28 ` Jesse Hathaway @ 2018-03-22 6:14 ` Adhemerval Zanella 2018-03-22 13:49 ` Jesse Hathaway 2018-03-22 17:35 ` Andreas Schwab 1 sibling, 1 reply; 18+ messages in thread From: Adhemerval Zanella @ 2018-03-22 6:14 UTC (permalink / raw) To: Jesse Hathaway, Andreas Schwab; +Cc: libc-alpha On 22/03/2018 05:27, Jesse Hathaway wrote: > On Tue, Mar 20, 2018 at 1:30 PM, Andreas Schwab <schwab@linux-m68k.org> wrote: >> Depends on whether you want the linux __getlogin_r to fall back to the >> generic __getlogin_r. > > Thanks, updated patch below: > > From 04a50b5ee857aa33e1527d70f0676b6daf5a036c Mon Sep 17 00:00:00 2001 > From: Jesse Hathaway <jesse@mbuki-mvuki.org> > Date: Fri, 16 Mar 2018 10:46:50 -0500 > Subject: [PATCH] getlogin_r: return early when linux sentinel value is set > > When there is no login uid Linux sets /proc/self/loginid to the sentinel > value of, (uid_t) - 1. If this is set we can return early and avoid > needlessly looking up the sentinel value in any configured nss > databases. LGTM with CL bit fixed below. Do you need someone to push it for you? Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org> > > diff --git a/ChangeLog b/ChangeLog > index 3399e567b8..1ceff1c094 100644 > --- a/ChangeLog > +++ b/ChangeLog > @@ -1,3 +1,8 @@ > +2018-03-20 Jesse Hathaway <jesse@mbuki-mvuki.org> (tiny change) > + > + * sysdeps/unix/sysv/linux/getlogin_r.c (__getlogin_r_loginuid): return early > + when linux sentinel value is set. It should contain a tab first and respect the maximum line size of 78, as: * sysdeps/unix/sysv/linux/getlogin_r.c (__getlogin_r_loginuid): Return early when linux sentinel value is set. > + > 2018-03-20 Samuel Thibault <samuel.thibault@ens-lyon.org> > > * manual/errno.texi (EOWNERDEAD, ENOTRECOVERABLE): Remove errno > diff --git a/sysdeps/unix/sysv/linux/getlogin_r.c > b/sysdeps/unix/sysv/linux/getlogin_r.c > index 73ea14c8f9..1f90c1ca2d 100644 > --- a/sysdeps/unix/sysv/linux/getlogin_r.c > +++ b/sysdeps/unix/sysv/linux/getlogin_r.c > @@ -55,6 +55,15 @@ __getlogin_r_loginuid (char *name, size_t namesize) > endp == uidbuf || *endp != '\0')) > return -1; > > + /* If there is no login uid, linux sets /proc/self/loginid to the sentinel > + value of, (uid_t) - 1, so check if that value is set and return early to > + avoid making unneeded nss lookups. */ > + if (uid == (uid_t) - 1) > + { > + __set_errno (ENXIO); > + return ENXIO; > + } > + > struct passwd pwd; > struct passwd *tpwd; > int result = 0; > ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [PATCH] getlogin_r: return early when linux sentinel value is set 2018-03-22 6:14 ` Adhemerval Zanella @ 2018-03-22 13:49 ` Jesse Hathaway 0 siblings, 0 replies; 18+ messages in thread From: Jesse Hathaway @ 2018-03-22 13:49 UTC (permalink / raw) To: Adhemerval Zanella; +Cc: Andreas Schwab, libc-alpha [-- Attachment #1: Type: text/plain, Size: 286 bytes --] On Thu, Mar 22, 2018 at 1:14 AM, Adhemerval Zanella <adhemerval.zanella@linaro.org> wrote: > LGTM with CL bit fixed below. Do you need someone to push it for you? Thanks for the review, if you could push it that would be great, updated patch attached which fixes the changelog entry [-- Attachment #2: getlogin_r.c.patch --] [-- Type: text/x-patch, Size: 1565 bytes --] commit 2fe96a5e58bb1b4ab379d1e7a85925bd83755cf7 Author: Jesse Hathaway <jesse@mbuki-mvuki.org> Date: Fri Mar 16 10:46:50 2018 -0500 getlogin_r: return early when linux sentinel value is set When there is no login uid Linux sets /proc/self/loginid to the sentinel value of, (uid_t) - 1. If this is set we can return early and avoid needlessly looking up the sentinel value in any configured nss databases. diff --git a/ChangeLog b/ChangeLog index 3399e567b8..5d776d995f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2018-03-20 Jesse Hathaway <jesse@mbuki-mvuki.org> (tiny change) + + * sysdeps/unix/sysv/linux/getlogin_r.c (__getlogin_r_loginuid): Return + early when linux sentinel value is set. + 2018-03-20 Samuel Thibault <samuel.thibault@ens-lyon.org> * manual/errno.texi (EOWNERDEAD, ENOTRECOVERABLE): Remove errno diff --git a/sysdeps/unix/sysv/linux/getlogin_r.c b/sysdeps/unix/sysv/linux/getlogin_r.c index 73ea14c8f9..1f90c1ca2d 100644 --- a/sysdeps/unix/sysv/linux/getlogin_r.c +++ b/sysdeps/unix/sysv/linux/getlogin_r.c @@ -55,6 +55,15 @@ __getlogin_r_loginuid (char *name, size_t namesize) endp == uidbuf || *endp != '\0')) return -1; + /* If there is no login uid, linux sets /proc/self/loginid to the sentinel + value of, (uid_t) - 1, so check if that value is set and return early to + avoid making unneeded nss lookups. */ + if (uid == (uid_t) - 1) + { + __set_errno (ENXIO); + return ENXIO; + } + struct passwd pwd; struct passwd *tpwd; int result = 0; ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [PATCH] getlogin_r: return early when linux sentinel value is set 2018-03-21 21:28 ` Jesse Hathaway 2018-03-22 6:14 ` Adhemerval Zanella @ 2018-03-22 17:35 ` Andreas Schwab 2018-03-22 19:30 ` Jesse Hathaway 1 sibling, 1 reply; 18+ messages in thread From: Andreas Schwab @ 2018-03-22 17:35 UTC (permalink / raw) To: Jesse Hathaway; +Cc: Adhemerval Zanella, libc-alpha On Mär 21 2018, Jesse Hathaway <jesse@mbuki-mvuki.org> wrote: > + /* If there is no login uid, linux sets /proc/self/loginid to the sentinel > + value of, (uid_t) - 1, so check if that value is set and return early to > + avoid making unneeded nss lookups. */ > + if (uid == (uid_t) - 1) No space after unary operator. Andreas. -- Andreas Schwab, schwab@linux-m68k.org GPG Key fingerprint = 58CA 54C7 6D53 942B 1756 01D3 44D5 214B 8276 4ED5 "And now for something completely different." ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [PATCH] getlogin_r: return early when linux sentinel value is set 2018-03-22 17:35 ` Andreas Schwab @ 2018-03-22 19:30 ` Jesse Hathaway 2018-03-26 14:22 ` Jesse Hathaway 0 siblings, 1 reply; 18+ messages in thread From: Jesse Hathaway @ 2018-03-22 19:30 UTC (permalink / raw) To: Andreas Schwab; +Cc: Adhemerval Zanella, libc-alpha [-- Attachment #1: Type: text/plain, Size: 197 bytes --] On Thu, Mar 22, 2018 at 12:35 PM, Andreas Schwab <schwab@linux-m68k.org> wrote: > On Mär 21 2018, Jesse Hathaway <jesse@mbuki-mvuki.org> wrote: >> + if (uid == (uid_t) - 1) fixed, attached [-- Attachment #2: getlogin_r.c.patch --] [-- Type: text/x-patch, Size: 1562 bytes --] commit 7d60c6ab90d23bab16adc2809de95f99e84862d5 Author: Jesse Hathaway <jesse@mbuki-mvuki.org> Date: Fri Mar 16 10:46:50 2018 -0500 getlogin_r: return early when linux sentinel value is set When there is no login uid Linux sets /proc/self/loginid to the sentinel value of, (uid_t) -1. If this is set we can return early and avoid needlessly looking up the sentinel value in any configured nss databases. diff --git a/ChangeLog b/ChangeLog index 3399e567b8..5d776d995f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2018-03-20 Jesse Hathaway <jesse@mbuki-mvuki.org> (tiny change) + + * sysdeps/unix/sysv/linux/getlogin_r.c (__getlogin_r_loginuid): Return + early when linux sentinel value is set. + 2018-03-20 Samuel Thibault <samuel.thibault@ens-lyon.org> * manual/errno.texi (EOWNERDEAD, ENOTRECOVERABLE): Remove errno diff --git a/sysdeps/unix/sysv/linux/getlogin_r.c b/sysdeps/unix/sysv/linux/getlogin_r.c index 73ea14c8f9..14587712a7 100644 --- a/sysdeps/unix/sysv/linux/getlogin_r.c +++ b/sysdeps/unix/sysv/linux/getlogin_r.c @@ -55,6 +55,15 @@ __getlogin_r_loginuid (char *name, size_t namesize) endp == uidbuf || *endp != '\0')) return -1; + /* If there is no login uid, linux sets /proc/self/loginid to the sentinel + value of, (uid_t) -1, so check if that value is set and return early to + avoid making unneeded nss lookups. */ + if (uid == (uid_t) -1) + { + __set_errno (ENXIO); + return ENXIO; + } + struct passwd pwd; struct passwd *tpwd; int result = 0; ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [PATCH] getlogin_r: return early when linux sentinel value is set 2018-03-22 19:30 ` Jesse Hathaway @ 2018-03-26 14:22 ` Jesse Hathaway 2018-03-26 16:30 ` Adhemerval Zanella 0 siblings, 1 reply; 18+ messages in thread From: Jesse Hathaway @ 2018-03-26 14:22 UTC (permalink / raw) To: Andreas Schwab; +Cc: Adhemerval Zanella, libc-alpha [-- Attachment #1: Type: text/plain, Size: 156 bytes --] On Thu, Mar 22, 2018 at 2:30 PM, Jesse Hathaway <jesse@mbuki-mvuki.org> wrote: > fixed, attached Adhemerval Zanella would you be able to push this for me? [-- Attachment #2: getlogin_r.c.patch --] [-- Type: text/x-patch, Size: 1562 bytes --] commit 7d60c6ab90d23bab16adc2809de95f99e84862d5 Author: Jesse Hathaway <jesse@mbuki-mvuki.org> Date: Fri Mar 16 10:46:50 2018 -0500 getlogin_r: return early when linux sentinel value is set When there is no login uid Linux sets /proc/self/loginid to the sentinel value of, (uid_t) -1. If this is set we can return early and avoid needlessly looking up the sentinel value in any configured nss databases. diff --git a/ChangeLog b/ChangeLog index 3399e567b8..5d776d995f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2018-03-20 Jesse Hathaway <jesse@mbuki-mvuki.org> (tiny change) + + * sysdeps/unix/sysv/linux/getlogin_r.c (__getlogin_r_loginuid): Return + early when linux sentinel value is set. + 2018-03-20 Samuel Thibault <samuel.thibault@ens-lyon.org> * manual/errno.texi (EOWNERDEAD, ENOTRECOVERABLE): Remove errno diff --git a/sysdeps/unix/sysv/linux/getlogin_r.c b/sysdeps/unix/sysv/linux/getlogin_r.c index 73ea14c8f9..14587712a7 100644 --- a/sysdeps/unix/sysv/linux/getlogin_r.c +++ b/sysdeps/unix/sysv/linux/getlogin_r.c @@ -55,6 +55,15 @@ __getlogin_r_loginuid (char *name, size_t namesize) endp == uidbuf || *endp != '\0')) return -1; + /* If there is no login uid, linux sets /proc/self/loginid to the sentinel + value of, (uid_t) -1, so check if that value is set and return early to + avoid making unneeded nss lookups. */ + if (uid == (uid_t) -1) + { + __set_errno (ENXIO); + return ENXIO; + } + struct passwd pwd; struct passwd *tpwd; int result = 0; ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [PATCH] getlogin_r: return early when linux sentinel value is set 2018-03-26 14:22 ` Jesse Hathaway @ 2018-03-26 16:30 ` Adhemerval Zanella 2018-03-28 0:37 ` Adhemerval Zanella 0 siblings, 1 reply; 18+ messages in thread From: Adhemerval Zanella @ 2018-03-26 16:30 UTC (permalink / raw) To: Jesse Hathaway; +Cc: Andreas Schwab, libc-alpha I will take care of it today, thanks for remind me. Sent from my iPhone > On 26 Mar 2018, at 11:22, Jesse Hathaway <jesse@mbuki-mvuki.org> wrote: > >> On Thu, Mar 22, 2018 at 2:30 PM, Jesse Hathaway <jesse@mbuki-mvuki.org> wrote: >> fixed, attached > > Adhemerval Zanella would you be able to push this for me? > <getlogin_r.c.patch> ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [PATCH] getlogin_r: return early when linux sentinel value is set 2018-03-26 16:30 ` Adhemerval Zanella @ 2018-03-28 0:37 ` Adhemerval Zanella 2018-04-03 10:46 ` Florian Weimer 0 siblings, 1 reply; 18+ messages in thread From: Adhemerval Zanella @ 2018-03-28 0:37 UTC (permalink / raw) To: Jesse Hathaway; +Cc: Andreas Schwab, libc-alpha Pushed upstream. On 26/03/2018 13:30, Adhemerval Zanella wrote: > I will take care of it today, thanks for remind me. > > Sent from my iPhone > >> On 26 Mar 2018, at 11:22, Jesse Hathaway <jesse@mbuki-mvuki.org> wrote: >> >>> On Thu, Mar 22, 2018 at 2:30 PM, Jesse Hathaway <jesse@mbuki-mvuki.org> wrote: >>> fixed, attached >> >> Adhemerval Zanella would you be able to push this for me? >> <getlogin_r.c.patch> ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [PATCH] getlogin_r: return early when linux sentinel value is set 2018-03-28 0:37 ` Adhemerval Zanella @ 2018-04-03 10:46 ` Florian Weimer 2018-04-03 11:41 ` Adhemerval Zanella 0 siblings, 1 reply; 18+ messages in thread From: Florian Weimer @ 2018-04-03 10:46 UTC (permalink / raw) To: Adhemerval Zanella, Jesse Hathaway; +Cc: Andreas Schwab, libc-alpha On 03/28/2018 02:37 AM, Adhemerval Zanella wrote: > Pushed upstream. > > On 26/03/2018 13:30, Adhemerval Zanella wrote: >> I will take care of it today, thanks for remind me. >> >> Sent from my iPhone >> >>> On 26 Mar 2018, at 11:22, Jesse Hathaway <jesse@mbuki-mvuki.org> wrote: >>> >>>> On Thu, Mar 22, 2018 at 2:30 PM, Jesse Hathaway <jesse@mbuki-mvuki.org> wrote: >>>> fixed, attached >>> >>> Adhemerval Zanella would you be able to push this for me? >>> <getlogin_r.c.patch> If this has user-visible impact, it should have a bug in Bugzilla, referenced from the ChangeLog entry. Thanks, Florian ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [PATCH] getlogin_r: return early when linux sentinel value is set 2018-04-03 10:46 ` Florian Weimer @ 2018-04-03 11:41 ` Adhemerval Zanella 2018-04-03 11:45 ` Florian Weimer 0 siblings, 1 reply; 18+ messages in thread From: Adhemerval Zanella @ 2018-04-03 11:41 UTC (permalink / raw) To: Florian Weimer, Jesse Hathaway; +Cc: Andreas Schwab, libc-alpha On 03/04/2018 07:46, Florian Weimer wrote: > On 03/28/2018 02:37 AM, Adhemerval Zanella wrote: >> Pushed upstream. >> >> On 26/03/2018 13:30, Adhemerval Zanella wrote: >>> I will take care of it today, thanks for remind me. >>> >>> Sent from my iPhone >>> >>>> On 26 Mar 2018, at 11:22, Jesse Hathaway <jesse@mbuki-mvuki.org> wrote: >>>> >>>>> On Thu, Mar 22, 2018 at 2:30 PM, Jesse Hathaway <jesse@mbuki-mvuki.org> wrote: >>>>> fixed, attached >>>> >>>> Adhemerval Zanella would you be able to push this for me? >>>> <getlogin_r.c.patch> > > If this has user-visible impact, it should have a bug in Bugzilla, referenced from the ChangeLog entry. > My understanding it is optimization to avoid access nss in case of invalid uid. ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [PATCH] getlogin_r: return early when linux sentinel value is set 2018-04-03 11:41 ` Adhemerval Zanella @ 2018-04-03 11:45 ` Florian Weimer 2018-04-03 11:53 ` Adhemerval Zanella 0 siblings, 1 reply; 18+ messages in thread From: Florian Weimer @ 2018-04-03 11:45 UTC (permalink / raw) To: Adhemerval Zanella, Jesse Hathaway; +Cc: Andreas Schwab, libc-alpha On 04/03/2018 01:40 PM, Adhemerval Zanella wrote: > > > On 03/04/2018 07:46, Florian Weimer wrote: >> On 03/28/2018 02:37 AM, Adhemerval Zanella wrote: >>> Pushed upstream. >>> >>> On 26/03/2018 13:30, Adhemerval Zanella wrote: >>>> I will take care of it today, thanks for remind me. >>>> >>>> Sent from my iPhone >>>> >>>>> On 26 Mar 2018, at 11:22, Jesse Hathaway <jesse@mbuki-mvuki.org> wrote: >>>>> >>>>>> On Thu, Mar 22, 2018 at 2:30 PM, Jesse Hathaway <jesse@mbuki-mvuki.org> wrote: >>>>>> fixed, attached >>>>> >>>>> Adhemerval Zanella would you be able to push this for me? >>>>> <getlogin_r.c.patch> >> >> If this has user-visible impact, it should have a bug in Bugzilla, referenced from the ChangeLog entry. > My understanding it is optimization to avoid access nss in > case of invalid uid. There's a Launchpad bug that suggests a very visible difference in behavior: https://bugs.launchpad.net/ubuntu/+source/glibc/+bug/1760713 Thanks, Florian ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [PATCH] getlogin_r: return early when linux sentinel value is set 2018-04-03 11:45 ` Florian Weimer @ 2018-04-03 11:53 ` Adhemerval Zanella 0 siblings, 0 replies; 18+ messages in thread From: Adhemerval Zanella @ 2018-04-03 11:53 UTC (permalink / raw) To: Florian Weimer, Jesse Hathaway; +Cc: Andreas Schwab, libc-alpha On 03/04/2018 08:44, Florian Weimer wrote: > On 04/03/2018 01:40 PM, Adhemerval Zanella wrote: >> >> >> On 03/04/2018 07:46, Florian Weimer wrote: >>> On 03/28/2018 02:37 AM, Adhemerval Zanella wrote: >>>> Pushed upstream. >>>> >>>> On 26/03/2018 13:30, Adhemerval Zanella wrote: >>>>> I will take care of it today, thanks for remind me. >>>>> >>>>> Sent from my iPhone >>>>> >>>>>> On 26 Mar 2018, at 11:22, Jesse Hathaway <jesse@mbuki-mvuki.org> wrote: >>>>>> >>>>>>> On Thu, Mar 22, 2018 at 2:30 PM, Jesse Hathaway <jesse@mbuki-mvuki.org> wrote: >>>>>>> fixed, attached >>>>>> >>>>>> Adhemerval Zanella would you be able to push this for me? >>>>>> <getlogin_r.c.patch> >>> >>> If this has user-visible impact, it should have a bug in Bugzilla, referenced from the ChangeLog entry. > >> My understanding it is optimization to avoid access nss in >> case of invalid uid. > > There's a Launchpad bug that suggests a very visible difference in behavior: > > https://bugs.launchpad.net/ubuntu/+source/glibc/+bug/1760713 > > Thanks, > Florian Alright, https://sourceware.org/bugzilla/show_bug.cgi?id=23024 ^ permalink raw reply [flat|nested] 18+ messages in thread
end of thread, other threads:[~2018-04-03 11:53 UTC | newest] Thread overview: 18+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2018-03-16 16:18 [PATCH] getlogin_r: return early when linux sentinel value is set Jesse Hathaway 2018-03-19 15:03 ` Jesse Hathaway 2018-03-20 8:00 ` Adhemerval Zanella 2018-03-20 9:05 ` Andreas Schwab 2018-03-20 17:52 ` Jesse Hathaway 2018-03-20 18:30 ` Andreas Schwab 2018-03-21 21:28 ` Jesse Hathaway 2018-03-22 6:14 ` Adhemerval Zanella 2018-03-22 13:49 ` Jesse Hathaway 2018-03-22 17:35 ` Andreas Schwab 2018-03-22 19:30 ` Jesse Hathaway 2018-03-26 14:22 ` Jesse Hathaway 2018-03-26 16:30 ` Adhemerval Zanella 2018-03-28 0:37 ` Adhemerval Zanella 2018-04-03 10:46 ` Florian Weimer 2018-04-03 11:41 ` Adhemerval Zanella 2018-04-03 11:45 ` Florian Weimer 2018-04-03 11:53 ` Adhemerval Zanella
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).