public inbox for glibc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug libc/12491] New: Calling getpwuid in a statically linked program should return an error, not a seg fault.
@ 2011-02-14 23:32 geir at cray dot com
  2011-03-04 23:55 ` [Bug libc/12491] " geir at cray dot com
                   ` (4 more replies)
  0 siblings, 5 replies; 6+ messages in thread
From: geir at cray dot com @ 2011-02-14 23:32 UTC (permalink / raw)
  To: glibc-bugs

http://sourceware.org/bugzilla/show_bug.cgi?id=12491

           Summary: Calling getpwuid in a statically linked program should
                    return an error, not a seg fault.
           Product: glibc
           Version: 2.9
            Status: NEW
          Severity: normal
          Priority: P2
         Component: libc
        AssignedTo: drepper.fsp@gmail.com
        ReportedBy: geir@cray.com


For a system that is NOT running the nscd daemon, a statically linked program
that calls getpwuid will return a segmentation fault.  The resulting core file
does not provide much help in debugging the problem.   getpwuid or the routines
that it calls should be more robust and not seg fault in this situation, but
rather return an error to the user.

I realize that a link time warning message is shown about using getpwuid in a
statically linked program, but this warning message can easily be overlooked
when building a large application that has other warning messages.

test case:

$ cat getpwuid.c
#include <sys/types.h>
#include <stdio.h>
#include <pwd.h>
int main(){
    int uid;
    struct passwd *pw;

    uid=getuid();
    printf("UID=%d\n", uid);
    pw = getpwuid(uid);
    printf("Done.\n");
    printf("Name=%s\n", pw->pw_name);
    return 0;
}
$  strings /usr/lib64/libc.a | grep -i "release version"
GNU C Library stable release version 2.9 (20081117), by Roland McGrath et al.
$ gcc -g -static -o getpwuid getpwuid.c
/tmp/pbs.581087.sdb/ccyZpaUZ.o: In function `main':
/home/users/geir/getpwuid.c:10: warning: Using 'getpwuid' in statically linked
applications requires at runtime the shared libraries from the glibc version
used for linking
$ ps -ale | grep nscd
$ ./getpwuid
UID=10682
Segmentation fault
$

Here is the unhelpful traceback of the corefile:

(gdb) bt
#0  0x0000000000000000 in ?? ()
#1  0x00002aaaad4fd5dc in __pthread_initialize_minimal_internal ()
   from /lib64/libpthread.so.0
#2  0x00002aaaad4fce49 in _init () from /lib64/libpthread.so.0
#3  0x0000000000000000 in ?? ()
(gdb)

-- 
Configure bugmail: http://sourceware.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.


^ permalink raw reply	[flat|nested] 6+ messages in thread

* [Bug libc/12491] Calling getpwuid in a statically linked program should return an error, not a seg fault.
  2011-02-14 23:32 [Bug libc/12491] New: Calling getpwuid in a statically linked program should return an error, not a seg fault geir at cray dot com
@ 2011-03-04 23:55 ` geir at cray dot com
  2011-04-18  2:26 ` drepper.fsp at gmail dot com
                   ` (3 subsequent siblings)
  4 siblings, 0 replies; 6+ messages in thread
From: geir at cray dot com @ 2011-03-04 23:55 UTC (permalink / raw)
  To: glibc-bugs

http://sourceware.org/bugzilla/show_bug.cgi?id=12491

--- Comment #1 from Geir Johansen <geir at cray dot com> 2011-03-04 23:55:15 UTC ---
Here is where the problem looks like it starts to occur:

(gdb) x/30i 0x00000000004284c2
0x4284c2 <get_mapping+674>:    je     0x4284d3 <get_mapping+691>
0x4284c4 <get_mapping+676>:    mov    $0xffffffff,%eax
0x4284c9 <get_mapping+681>:    lock xadd %eax,0x18(%rdi)
0x4284ce <get_mapping+686>:    sub    $0x1,%eax
0x4284d1 <get_mapping+689>:    je     0x428500 <get_mapping+736>
0x4284d3 <get_mapping+691>:    lea    -0x28(%rbp),%rsp
0x4284d7 <get_mapping+695>:    mov    %rbx,%rax
0x4284da <get_mapping+698>:    pop    %rbx
0x4284db <get_mapping+699>:    pop    %r12
0x4284dd <get_mapping+701>:    pop    %r13
0x4284df <get_mapping+703>:    pop    %r14
0x4284e1 <get_mapping+705>:    pop    %r15
0x4284e3 <get_mapping+707>:    leaveq 
0x4284e4 <get_mapping+708>:    retq   
0x4284e5 <get_mapping+709>:    nopl   (%rax)
0x4284e8 <get_mapping+712>:    mov    -0x144(%rbp),%edi
0x4284ee <get_mapping+718>:    mov    $0xffffffffffffffff,%rbx
0x4284f5 <get_mapping+725>:    callq  0x422410 <close>
0x4284fa <get_mapping+730>:    jmp    0x42849b <get_mapping+635>
0x4284fc <get_mapping+732>:    nopl   0x0(%rax)
0x428500 <get_mapping+736>:    callq  0x4281e0 <__nscd_unmap>
0x428505 <get_mapping+741>:    nopl   (%rax)
0x428508 <get_mapping+744>:    jmp    0x4284d3 <get_mapping+691>
0x42850a <get_mapping+746>:    nopw   0x0(%rax,%rax,1)
0x428510 <get_mapping+752>:    mov    -0x38(%rbp),%rsi
0x428514 <get_mapping+756>:    mov    %r12,%rdi
0x428517 <get_mapping+759>:    mov    $0xffffffffffffffff,%rbx
0x42851e <get_mapping+766>:    callq  0x423530 <munmap>
0x428523 <get_mapping+771>:    nopl   0x0(%rax,%rax,1)
0x428528 <get_mapping+776>:    jmpq   0x428485 <get_mapping+613>
(gdb) bt 
#0  0x00000000004284e3 in get_mapping (type=<value optimized out>, 
    key=<value optimized out>, mappedp=0x6a28b8) at nscd_helper.c:419
#1  0x0000000000428697 in __nscd_get_map_ref (type=GETFDPW, 
    name=0x476c3f "passwd", mapptr=0x6a28b0, gc_cyclep=0x7fffffffb4ac)
    at nscd_helper.c:450
#2  0x0000000000425e65 in nscd_getpw_r (key=0x7fffffffb506 "10682", keylen=6, 
    type=GETPWBYUID, resultbuf=0x6a1c00, 
    buffer=0x6e75722f7261762f <Address 0x6e75722f7261762f out of bounds>, 
    buflen=1, result=0x7fffffffb5d0) at nscd_getpw_r.c:97
#3  0x0000000000426236 in __nscd_getpwuid_r (uid=<value optimized out>, 
    resultbuf=0x6a1c00, buffer=0x6a59e0 "", buflen=1024, result=0x7fffffffb5d0)
    at nscd_getpw_r.c:65
#4  0x0000000000421a85 in __getpwuid_r (uid=10682, resbuf=0x6a1c00, 
    buffer=0x6a59e0 "", buflen=1024, result=0x7fffffffb5d0)
    at ../nss/getXXbyYY_r.c:191
#5  0x00000000004217fd in getpwuid (uid=10682) at ../nss/getXXbyYY.c:116
#6  0x0000000000400353 in main () at getpwuid.c:10
(gdb) stepi
Cannot access memory at address 0x8
(gdb) bt
#0  0x00000000004284e4 in get_mapping (type=<value optimized out>, 
Cannot access memory at address 0xfffffffffffffea8
Cannot access memory at address 0x8
    key=<value optimized out>, mappedp=) at nscd_helper.c:419
(gdb)

-- 
Configure bugmail: http://sourceware.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.


^ permalink raw reply	[flat|nested] 6+ messages in thread

* [Bug libc/12491] Calling getpwuid in a statically linked program should return an error, not a seg fault.
  2011-02-14 23:32 [Bug libc/12491] New: Calling getpwuid in a statically linked program should return an error, not a seg fault geir at cray dot com
  2011-03-04 23:55 ` [Bug libc/12491] " geir at cray dot com
@ 2011-04-18  2:26 ` drepper.fsp at gmail dot com
  2011-09-15 16:15 ` geir at cray dot com
                   ` (2 subsequent siblings)
  4 siblings, 0 replies; 6+ messages in thread
From: drepper.fsp at gmail dot com @ 2011-04-18  2:26 UTC (permalink / raw)
  To: glibc-bugs

http://sourceware.org/bugzilla/show_bug.cgi?id=12491

Ulrich Drepper <drepper.fsp at gmail dot com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |RESOLVED
         Resolution|                            |WONTFIX

--- Comment #2 from Ulrich Drepper <drepper.fsp at gmail dot com> 2011-04-18 02:26:16 UTC ---
getpwuid works just fine under the only conditions when it cane work, just as
described in the link message.  If you overlook that message it is your
problem.

-- 
Configure bugmail: http://sourceware.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.


^ permalink raw reply	[flat|nested] 6+ messages in thread

* [Bug libc/12491] Calling getpwuid in a statically linked program should return an error, not a seg fault.
  2011-02-14 23:32 [Bug libc/12491] New: Calling getpwuid in a statically linked program should return an error, not a seg fault geir at cray dot com
  2011-03-04 23:55 ` [Bug libc/12491] " geir at cray dot com
  2011-04-18  2:26 ` drepper.fsp at gmail dot com
@ 2011-09-15 16:15 ` geir at cray dot com
  2014-06-27 13:51 ` fweimer at redhat dot com
  2021-09-12 16:46 ` ovilewade9 at gmail dot com
  4 siblings, 0 replies; 6+ messages in thread
From: geir at cray dot com @ 2011-09-15 16:15 UTC (permalink / raw)
  To: glibc-bugs

http://sourceware.org/bugzilla/show_bug.cgi?id=12491

--- Comment #3 from Geir Johansen <geir at cray dot com> 2011-09-15 16:14:45 UTC ---
(In reply to comment #2)
> getpwuid works just fine under the only conditions when it can work, just as
> described in the link message.  If you overlook that message it is your
> problem.

My editorial comment on this resolution:

If the nscd daemon is running on the system, the program will run fine without
problems.

If the nscd daemon is not running on the system, the program will get a
segmentation fault and the user will not have any idea why the program is
failing. In my opinion this behavior is unacceptable. The library should be
more robust and at the very least report an error in this case.

-- 
Configure bugmail: http://sourceware.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.


^ permalink raw reply	[flat|nested] 6+ messages in thread

* [Bug libc/12491] Calling getpwuid in a statically linked program should return an error, not a seg fault.
  2011-02-14 23:32 [Bug libc/12491] New: Calling getpwuid in a statically linked program should return an error, not a seg fault geir at cray dot com
                   ` (2 preceding siblings ...)
  2011-09-15 16:15 ` geir at cray dot com
@ 2014-06-27 13:51 ` fweimer at redhat dot com
  2021-09-12 16:46 ` ovilewade9 at gmail dot com
  4 siblings, 0 replies; 6+ messages in thread
From: fweimer at redhat dot com @ 2014-06-27 13:51 UTC (permalink / raw)
  To: glibc-bugs

https://sourceware.org/bugzilla/show_bug.cgi?id=12491

Florian Weimer <fweimer at redhat dot com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
              Flags|                            |security-

-- 
You are receiving this mail because:
You are on the CC list for the bug.


^ permalink raw reply	[flat|nested] 6+ messages in thread

* [Bug libc/12491] Calling getpwuid in a statically linked program should return an error, not a seg fault.
  2011-02-14 23:32 [Bug libc/12491] New: Calling getpwuid in a statically linked program should return an error, not a seg fault geir at cray dot com
                   ` (3 preceding siblings ...)
  2014-06-27 13:51 ` fweimer at redhat dot com
@ 2021-09-12 16:46 ` ovilewade9 at gmail dot com
  4 siblings, 0 replies; 6+ messages in thread
From: ovilewade9 at gmail dot com @ 2021-09-12 16:46 UTC (permalink / raw)
  To: glibc-bugs

https://sourceware.org/bugzilla/show_bug.cgi?id=12491

ovile009988 <ovilewade9 at gmail dot com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |ovilewade9 at gmail dot com

--- Comment #4 from ovile009988 <ovilewade9 at gmail dot com> ---
Thanks for share me it update look https://wordunscrambler.online and see some
use full tips to play game.

-- 
You are receiving this mail because:
You are on the CC list for the bug.

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2021-09-12 16:46 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-02-14 23:32 [Bug libc/12491] New: Calling getpwuid in a statically linked program should return an error, not a seg fault geir at cray dot com
2011-03-04 23:55 ` [Bug libc/12491] " geir at cray dot com
2011-04-18  2:26 ` drepper.fsp at gmail dot com
2011-09-15 16:15 ` geir at cray dot com
2014-06-27 13:51 ` fweimer at redhat dot com
2021-09-12 16:46 ` ovilewade9 at gmail dot com

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).