On Sun, 16 Dec 2007 21:27:17 +0300 (MSK) Maxim Konovalov <maxim_at_macomnet.ru> wrote: > Hello, > > gcc w/ default flags: > > # route add 172.19.16.0.0/16 10.10.10.2 > zsh: segmentation fault (core dumped) > > gcc -O0: > > # route add 172.19.16.0.0/16 10.10.10.2 > route: bad address: 172.19.16.0.0/16 > > I failed to find any bugs in this code snippet where route(8) > dumps a core (line 1041): > > 1033 q = strchr(s,'/'); > 1034 if (q && which == RTA_DST) { > 1035 *q = '\0'; > 1036 if ((val = inet_network(s)) != INADDR_NONE) { > 1037 inet_makenetandmask( > 1038 val, &su->sin, strtoul(q+1, > 0, 0)); 1039 return (0); > 1040 } > 1041 *q = '/'; > 1042 } > > Any comments? > Preliminary results show that inet_network from libc is somehow thrashing $ebx even if it is not supposed to. -O0 disables value caching in register and always allocates stack slot for the 'q' pointer, so the problem is not visible. Thanks for the test case, I'll look some more. -- Alexander Kabaev
This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:39:24 UTC