In May 2000 I was asking here about sin_zero problem. getpeername for example
writes some random data to sin_zero while IMHO it should leave sin_zero alone.
24 memset(&ss, 0, sizeof(ss));
(gdb)
25 getpeername(s, (struct sockaddr *)&ss, &sslen);
(gdb) print *(struct sockaddr_in *)&ss
$1 = {sin_family = 0, sin_port = 0, sin_addr = {s_addr = 0},
sin_zero = "\000\000\000\000\000\000\000"}
(gdb) n
26 printf("eot\n");
(gdb) print *(struct sockaddr_in *)&ss
$2 = {sin_family = 2, sin_port = 6400, sin_addr = {s_addr = 16777343}, sin_zero
= "i\212\020ŔPĽşŔ"}
(gdb)
Someone posted small fix, but it wasn't applied to kernel src.
What's the reason ?
--
Arkadiusz Miśkiewicz http://www.misiek.eu.org/ipv6/
PLD GNU/Linux [IPv6 enabled] http://www.pld.org.pl/
|