Bug#1741: getservbyport doesn't work
Package: libc
Version: 4.6.27
chiark:~> cat t.c
#include <netdb.h>
int main(void) {
printf("%s\n",getservbyport(23,"tcp")->s_name);
return 0;
}
chiark:~> gcc t.c
chiark:~> ./a.out
Segmentation fault (core dumped)
chiark:~> gcc -g t.c
chiark:~> gdb a.out
GDB is free software and you are welcome to distribute copies of it
under certain conditions; type "show copying" to see the conditions.
There is absolutely no warranty for GDB; type "show warranty" for details.
GDB 4.14 (i486-debian-linux), Copyright 1995 Free Software Foundation, Inc...
(gdb) print getservbyport(23,"tcp")
You can't do that without a process to debug
(gdb) run
Starting program: /u/ijackson/a.out
Program received signal SIGSEGV, Segmentation fault.
0x109d in main () at t.c:3
3 printf("%s\n",getservbyport(23,"tcp")->s_name);
(gdb) print getservbyport(23,"tcp")
$1 = (struct servent *) 0x0
(gdb)
getservbyport is returning NULL inappropriately, so the test program
dereferences zero and dumps core.
On a SunOS4 machine:
grus:~/junk> ./a.out
telnet
grus:~/junk>
Ian.
Reply to: