Hello! When I run the program "bug" [1] under valgrind, I get a lot of error messages [2]. Is it really a bug in glibc or is it a Valgrind bug? Thanks, Jakson -------------------------------------------- [1] The program "bug" #include <stdio.h> #include <unistd.h> #include <pwd.h> int main(){ char *s = NULL; struct passwd* uinf = NULL; s = getlogin(); if(s == NULL) return; uinf = getpwnam(s); if(uinf == NULL) return; printf("%s\n", uinf->pw_dir); } -------------------------------------------- [2] The Valgrind log: ==6687== Memcheck, a memory error detector. ==6687== Copyright (C) 2002-2005, and GNU GPL'd, by Julian Seward et al. ==6687== Using LibVEX rev 1367, a library for dynamic binary translation. ==6687== Copyright (C) 2004-2005, and GNU GPL'd, by OpenWorks LLP. ==6687== Using valgrind-3.0.1-Debian, a dynamic binary instrumentation framework. ==6687== Copyright (C) 2000-2005, and GNU GPL'd, by Julian Seward et al. ==6687== ==6687== My PID = 6687, parent PID = 6665. Prog and args are: ==6687== ./bug ==6687== For more details, rerun with: -v ==6687== ==6687== Conditional jump or move depends on uninitialised value(s) ==6687== at 0x1B8F4DEE: (within /lib/ld-2.3.5.so) ==6687== by 0x1B9F7B30: (within /lib/libc-2.3.5.so) ==6687== by 0x1B8EF026: (within /lib/ld-2.3.5.so) ==6687== by 0x1B9F8414: _dl_open (in /lib/libc-2.3.5.so) ==6687== by 0x1B9F9924: (within /lib/libc-2.3.5.so) ==6687== by 0x1B8EF026: (within /lib/ld-2.3.5.so) ==6687== by 0x1B9F98E1: (within /lib/libc-2.3.5.so) ==6687== by 0x1B9F99C6: __libc_dlopen_mode (in /lib/libc-2.3.5.so) ==6687== by 0x1B9D7E45: __nss_lookup_function (in /lib/libc-2.3.5.so) ==6687== by 0x1B9D7FC6: (within /lib/libc-2.3.5.so) ==6687== by 0x1B9D9970: __nss_passwd_lookup (in /lib/libc-2.3.5.so) ==6687== by 0x1B9967BE: getpwnam_r (in /lib/libc-2.3.5.so) ==6687== ==6687== Conditional jump or move depends on uninitialised value(s) ==6687== at 0x1B8F4DFD: (within /lib/ld-2.3.5.so) ==6687== by 0x1B9F7B30: (within /lib/libc-2.3.5.so) ==6687== by 0x1B8EF026: (within /lib/ld-2.3.5.so) ==6687== by 0x1B9F8414: _dl_open (in /lib/libc-2.3.5.so) ==6687== by 0x1B9F9924: (within /lib/libc-2.3.5.so) ==6687== by 0x1B8EF026: (within /lib/ld-2.3.5.so) ==6687== by 0x1B9F98E1: (within /lib/libc-2.3.5.so) ==6687== by 0x1B9F99C6: __libc_dlopen_mode (in /lib/libc-2.3.5.so) ==6687== by 0x1B9D7E45: __nss_lookup_function (in /lib/libc-2.3.5.so) ==6687== by 0x1B9D7FC6: (within /lib/libc-2.3.5.so) ==6687== by 0x1B9D9970: __nss_passwd_lookup (in /lib/libc-2.3.5.so) ==6687== by 0x1B9967BE: getpwnam_r (in /lib/libc-2.3.5.so) ==6687== ==6687== Conditional jump or move depends on uninitialised value(s) ==6687== at 0x1B8F4E0C: (within /lib/ld-2.3.5.so) ==6687== by 0x1B9F7B30: (within /lib/libc-2.3.5.so) ==6687== by 0x1B8EF026: (within /lib/ld-2.3.5.so) ==6687== by 0x1B9F8414: _dl_open (in /lib/libc-2.3.5.so) ==6687== by 0x1B9F9924: (within /lib/libc-2.3.5.so) ==6687== by 0x1B8EF026: (within /lib/ld-2.3.5.so) ==6687== by 0x1B9F98E1: (within /lib/libc-2.3.5.so) ==6687== by 0x1B9F99C6: __libc_dlopen_mode (in /lib/libc-2.3.5.so) ==6687== by 0x1B9D7E45: __nss_lookup_function (in /lib/libc-2.3.5.so) ==6687== by 0x1B9D7FC6: (within /lib/libc-2.3.5.so) ==6687== by 0x1B9D9970: __nss_passwd_lookup (in /lib/libc-2.3.5.so) ==6687== by 0x1B9967BE: getpwnam_r (in /lib/libc-2.3.5.so) ==6687== ==6687== Conditional jump or move depends on uninitialised value(s) ==6687== at 0x1B8F4E1B: (within /lib/ld-2.3.5.so) ==6687== by 0x1B9F7B30: (within /lib/libc-2.3.5.so) ==6687== by 0x1B8EF026: (within /lib/ld-2.3.5.so) ==6687== by 0x1B9F8414: _dl_open (in /lib/libc-2.3.5.so) ==6687== by 0x1B9F9924: (within /lib/libc-2.3.5.so) ==6687== by 0x1B8EF026: (within /lib/ld-2.3.5.so) ==6687== by 0x1B9F98E1: (within /lib/libc-2.3.5.so) ==6687== by 0x1B9F99C6: __libc_dlopen_mode (in /lib/libc-2.3.5.so) ==6687== by 0x1B9D7E45: __nss_lookup_function (in /lib/libc-2.3.5.so) ==6687== by 0x1B9D7FC6: (within /lib/libc-2.3.5.so) ==6687== by 0x1B9D9970: __nss_passwd_lookup (in /lib/libc-2.3.5.so) ==6687== by 0x1B9967BE: getpwnam_r (in /lib/libc-2.3.5.so) ==6687== ==6687== Conditional jump or move depends on uninitialised value(s) ==6687== at 0x1B8F4F7C: (within /lib/ld-2.3.5.so) ==6687== by 0x1B9F7B30: (within /lib/libc-2.3.5.so) ==6687== by 0x1B8EF026: (within /lib/ld-2.3.5.so) ==6687== by 0x1B9F8414: _dl_open (in /lib/libc-2.3.5.so) ==6687== by 0x1B9F9924: (within /lib/libc-2.3.5.so) ==6687== by 0x1B8EF026: (within /lib/ld-2.3.5.so) ==6687== by 0x1B9F98E1: (within /lib/libc-2.3.5.so) ==6687== by 0x1B9F99C6: __libc_dlopen_mode (in /lib/libc-2.3.5.so) ==6687== by 0x1B9D7E45: __nss_lookup_function (in /lib/libc-2.3.5.so) ==6687== by 0x1B9D7FC6: (within /lib/libc-2.3.5.so) ==6687== by 0x1B9D9970: __nss_passwd_lookup (in /lib/libc-2.3.5.so) ==6687== by 0x1B9967BE: getpwnam_r (in /lib/libc-2.3.5.so) ==6687== ==6687== Conditional jump or move depends on uninitialised value(s) ==6687== at 0x1B8F4F87: (within /lib/ld-2.3.5.so) ==6687== by 0x1B9F7B30: (within /lib/libc-2.3.5.so) ==6687== by 0x1B8EF026: (within /lib/ld-2.3.5.so) ==6687== by 0x1B9F8414: _dl_open (in /lib/libc-2.3.5.so) ==6687== by 0x1B9F9924: (within /lib/libc-2.3.5.so) ==6687== by 0x1B8EF026: (within /lib/ld-2.3.5.so) ==6687== by 0x1B9F98E1: (within /lib/libc-2.3.5.so) ==6687== by 0x1B9F99C6: __libc_dlopen_mode (in /lib/libc-2.3.5.so) ==6687== by 0x1B9D7E45: __nss_lookup_function (in /lib/libc-2.3.5.so) ==6687== by 0x1B9D7FC6: (within /lib/libc-2.3.5.so) ==6687== by 0x1B9D9970: __nss_passwd_lookup (in /lib/libc-2.3.5.so) ==6687== by 0x1B9967BE: getpwnam_r (in /lib/libc-2.3.5.so) ==6687== ==6687== Conditional jump or move depends on uninitialised value(s) ==6687== at 0x1B8F4F7C: (within /lib/ld-2.3.5.so) ==6687== by 0x1B8E89C1: (within /lib/ld-2.3.5.so) ==6687== by 0x1B8EA51A: (within /lib/ld-2.3.5.so) ==6687== by 0x1B9F7B30: (within /lib/libc-2.3.5.so) ==6687== by 0x1B8EF026: (within /lib/ld-2.3.5.so) ==6687== by 0x1B9F8414: _dl_open (in /lib/libc-2.3.5.so) ==6687== by 0x1B9F9924: (within /lib/libc-2.3.5.so) ==6687== by 0x1B8EF026: (within /lib/ld-2.3.5.so) ==6687== by 0x1B9F98E1: (within /lib/libc-2.3.5.so) ==6687== by 0x1B9F99C6: __libc_dlopen_mode (in /lib/libc-2.3.5.so) ==6687== by 0x1B9D7E45: __nss_lookup_function (in /lib/libc-2.3.5.so) ==6687== by 0x1B9D7FC6: (within /lib/libc-2.3.5.so) ==6687== ==6687== Conditional jump or move depends on uninitialised value(s) ==6687== at 0x1B8F4F87: (within /lib/ld-2.3.5.so) ==6687== by 0x1B8E89C1: (within /lib/ld-2.3.5.so) ==6687== by 0x1B8EA51A: (within /lib/ld-2.3.5.so) ==6687== by 0x1B9F7B30: (within /lib/libc-2.3.5.so) ==6687== by 0x1B8EF026: (within /lib/ld-2.3.5.so) ==6687== by 0x1B9F8414: _dl_open (in /lib/libc-2.3.5.so) ==6687== by 0x1B9F9924: (within /lib/libc-2.3.5.so) ==6687== by 0x1B8EF026: (within /lib/ld-2.3.5.so) ==6687== by 0x1B9F98E1: (within /lib/libc-2.3.5.so) ==6687== by 0x1B9F99C6: __libc_dlopen_mode (in /lib/libc-2.3.5.so) ==6687== by 0x1B9D7E45: __nss_lookup_function (in /lib/libc-2.3.5.so) ==6687== by 0x1B9D7FC6: (within /lib/libc-2.3.5.so) ==6687== ==6687== Invalid read of size 4 ==6687== at 0x1B8F4F73: (within /lib/ld-2.3.5.so) ==6687== by 0x1B8E89C1: (within /lib/ld-2.3.5.so) ==6687== by 0x1B8EA51A: (within /lib/ld-2.3.5.so) ==6687== by 0x1B8EDBBF: (within /lib/ld-2.3.5.so) ==6687== by 0x1B8EF026: (within /lib/ld-2.3.5.so) ==6687== by 0x1B8EE144: (within /lib/ld-2.3.5.so) ==6687== by 0x1B9F7B87: (within /lib/libc-2.3.5.so) ==6687== by 0x1B8EF026: (within /lib/ld-2.3.5.so) ==6687== by 0x1B9F8414: _dl_open (in /lib/libc-2.3.5.so) ==6687== by 0x1B9F9924: (within /lib/libc-2.3.5.so) ==6687== by 0x1B8EF026: (within /lib/ld-2.3.5.so) ==6687== by 0x1B9F98E1: (within /lib/libc-2.3.5.so) ==6687== Address 0x1BA2D288 is 16 bytes inside a block of size 17 alloc'd ==6687== at 0x1B8FF886: malloc (vg_replace_malloc.c:149) ==6687== by 0x1B8EA722: (within /lib/ld-2.3.5.so) ==6687== by 0x1B8EDBBF: (within /lib/ld-2.3.5.so) ==6687== by 0x1B8EF026: (within /lib/ld-2.3.5.so) ==6687== by 0x1B8EE144: (within /lib/ld-2.3.5.so) ==6687== by 0x1B9F7B87: (within /lib/libc-2.3.5.so) ==6687== by 0x1B8EF026: (within /lib/ld-2.3.5.so) ==6687== by 0x1B9F8414: _dl_open (in /lib/libc-2.3.5.so) ==6687== by 0x1B9F9924: (within /lib/libc-2.3.5.so) ==6687== by 0x1B8EF026: (within /lib/ld-2.3.5.so) ==6687== by 0x1B9F98E1: (within /lib/libc-2.3.5.so) ==6687== by 0x1B9F99C6: __libc_dlopen_mode (in /lib/libc-2.3.5.so) ==6687== ==6687== Conditional jump or move depends on uninitialised value(s) ==6687== at 0x1B8ECB13: (within /lib/ld-2.3.5.so) ==6687== by 0x1B9F7DF5: (within /lib/libc-2.3.5.so) ==6687== by 0x1B8EF026: (within /lib/ld-2.3.5.so) ==6687== by 0x1B9F8414: _dl_open (in /lib/libc-2.3.5.so) ==6687== by 0x1B9F9924: (within /lib/libc-2.3.5.so) ==6687== by 0x1B8EF026: (within /lib/ld-2.3.5.so) ==6687== by 0x1B9F98E1: (within /lib/libc-2.3.5.so) ==6687== by 0x1B9F99C6: __libc_dlopen_mode (in /lib/libc-2.3.5.so) ==6687== by 0x1B9D7E45: __nss_lookup_function (in /lib/libc-2.3.5.so) ==6687== by 0x1B9D7FC6: (within /lib/libc-2.3.5.so) ==6687== by 0x1B9D9970: __nss_passwd_lookup (in /lib/libc-2.3.5.so) ==6687== by 0x1B9967BE: getpwnam_r (in /lib/libc-2.3.5.so) ==6687== ==6687== Conditional jump or move depends on uninitialised value(s) ==6687== at 0x1B8EC7D3: (within /lib/ld-2.3.5.so) ==6687== by 0x1B9F7DF5: (within /lib/libc-2.3.5.so) ==6687== by 0x1B8EF026: (within /lib/ld-2.3.5.so) ==6687== by 0x1B9F8414: _dl_open (in /lib/libc-2.3.5.so) ==6687== by 0x1B9F9924: (within /lib/libc-2.3.5.so) ==6687== by 0x1B8EF026: (within /lib/ld-2.3.5.so) ==6687== by 0x1B9F98E1: (within /lib/libc-2.3.5.so) ==6687== by 0x1B9F99C6: __libc_dlopen_mode (in /lib/libc-2.3.5.so) ==6687== by 0x1B9D7E45: __nss_lookup_function (in /lib/libc-2.3.5.so) ==6687== by 0x1B9D7FC6: (within /lib/libc-2.3.5.so) ==6687== by 0x1B9D9970: __nss_passwd_lookup (in /lib/libc-2.3.5.so) ==6687== by 0x1B9967BE: getpwnam_r (in /lib/libc-2.3.5.so) ==6687== ==6687== Invalid read of size 4 ==6687== at 0x1B8F4F89: (within /lib/ld-2.3.5.so) ==6687== by 0x1B8E89C1: (within /lib/ld-2.3.5.so) ==6687== by 0x1B8EA51A: (within /lib/ld-2.3.5.so) ==6687== by 0x1B9F7B30: (within /lib/libc-2.3.5.so) ==6687== by 0x1B8EF026: (within /lib/ld-2.3.5.so) ==6687== by 0x1B9F8414: _dl_open (in /lib/libc-2.3.5.so) ==6687== by 0x1B9F9924: (within /lib/libc-2.3.5.so) ==6687== by 0x1B8EF026: (within /lib/ld-2.3.5.so) ==6687== by 0x1B9F98E1: (within /lib/libc-2.3.5.so) ==6687== by 0x1B9F99C6: __libc_dlopen_mode (in /lib/libc-2.3.5.so) ==6687== by 0x1B9D7E45: __nss_lookup_function (in /lib/libc-2.3.5.so) ==6687== by 0x1B905F39: (within /lib/libnss_compat-2.3.5.so) ==6687== Address 0x1BA2D904 is 20 bytes inside a block of size 21 alloc'd ==6687== at 0x1B8FF886: malloc (vg_replace_malloc.c:149) ==6687== by 0x1B8EA722: (within /lib/ld-2.3.5.so) ==6687== by 0x1B9F7B30: (within /lib/libc-2.3.5.so) ==6687== by 0x1B8EF026: (within /lib/ld-2.3.5.so) ==6687== by 0x1B9F8414: _dl_open (in /lib/libc-2.3.5.so) ==6687== by 0x1B9F9924: (within /lib/libc-2.3.5.so) ==6687== by 0x1B8EF026: (within /lib/ld-2.3.5.so) ==6687== by 0x1B9F98E1: (within /lib/libc-2.3.5.so) ==6687== by 0x1B9F99C6: __libc_dlopen_mode (in /lib/libc-2.3.5.so) ==6687== by 0x1B9D7E45: __nss_lookup_function (in /lib/libc-2.3.5.so) ==6687== by 0x1B905F39: (within /lib/libnss_compat-2.3.5.so) ==6687== by 0x1B9078D8: _nss_compat_getpwnam_r (in /lib/libnss_compat-2.3.5.so) ==6687== ==6687== Invalid read of size 4 ==6687== at 0x1B8F4F89: (within /lib/ld-2.3.5.so) ==6687== by 0x1B8E89C1: (within /lib/ld-2.3.5.so) ==6687== by 0x1B8EA51A: (within /lib/ld-2.3.5.so) ==6687== by 0x1B8EDBBF: (within /lib/ld-2.3.5.so) ==6687== by 0x1B8EF026: (within /lib/ld-2.3.5.so) ==6687== by 0x1B8EE144: (within /lib/ld-2.3.5.so) ==6687== by 0x1B9F7B87: (within /lib/libc-2.3.5.so) ==6687== by 0x1B8EF026: (within /lib/ld-2.3.5.so) ==6687== by 0x1B9F8414: _dl_open (in /lib/libc-2.3.5.so) ==6687== by 0x1B9F9924: (within /lib/libc-2.3.5.so) ==6687== by 0x1B8EF026: (within /lib/ld-2.3.5.so) ==6687== by 0x1B9F98E1: (within /lib/libc-2.3.5.so) ==6687== Address 0x1BA2DC24 is 20 bytes inside a block of size 23 alloc'd ==6687== at 0x1B8FF886: malloc (vg_replace_malloc.c:149) ==6687== by 0x1B8EA722: (within /lib/ld-2.3.5.so) ==6687== by 0x1B8EDBBF: (within /lib/ld-2.3.5.so) ==6687== by 0x1B8EF026: (within /lib/ld-2.3.5.so) ==6687== by 0x1B8EE144: (within /lib/ld-2.3.5.so) ==6687== by 0x1B9F7B87: (within /lib/libc-2.3.5.so) ==6687== by 0x1B8EF026: (within /lib/ld-2.3.5.so) ==6687== by 0x1B9F8414: _dl_open (in /lib/libc-2.3.5.so) ==6687== by 0x1B9F9924: (within /lib/libc-2.3.5.so) ==6687== by 0x1B8EF026: (within /lib/ld-2.3.5.so) ==6687== by 0x1B9F98E1: (within /lib/libc-2.3.5.so) ==6687== by 0x1B9F99C6: __libc_dlopen_mode (in /lib/libc-2.3.5.so) ==6687== ==6687== Syscall param exit_group(exit_code) contains uninitialised byte(s) ==6687== at 0x1B997807: _Exit (in /lib/libc-2.3.5.so) ==6687== by 0x1B92441A: __libc_start_main (in /lib/libc-2.3.5.so) ==6687== by 0x8048370: ??? (start.S:119) ==6687== ==6687== ERROR SUMMARY: 20 errors from 14 contexts (suppressed: 13 from 1) ==6687== malloc/free: in use at exit: 156 bytes in 11 blocks. ==6687== malloc/free: 65 allocs, 54 frees, 6174 bytes allocated. ==6687== For counts of detected errors, rerun with: -v ==6687== searching for pointers to 11 not-freed blocks. ==6687== checked 69632 bytes. ==6687== ==6687== LEAK SUMMARY: ==6687== definitely lost: 156 bytes in 11 blocks. ==6687== possibly lost: 0 bytes in 0 blocks. ==6687== still reachable: 0 bytes in 0 blocks. ==6687== suppressed: 0 bytes in 0 blocks. ==6687== Use --leak-check=full to see details of leaked memory.
Attachment:
signature.asc
Description: Digital signature