Thanks Phillip!
I think we are getting somewhere. Here is the modified snippet:

          hlp[299]=0;
          strncpy(hlp,optarg,299);
          printf("hlp :%p-\n", hlp);
          printf("hlp :%s-\n", hlp);
          hlp2=strtok(hlp,":");
          printf("hlp :%p-\n", hlp);
          printf("hlp :%s-\n", hlp);
          printf("hlp2 :%p-\n", hlp2);
          printf("hlp2 :%s-\n", hlp2);
          IP[255]=0;
          strncpy(IP,hlp,255);

And here the result for sudo sniffit -t192.1.100.1:

hlp :0x7fff9c7e1bb0-
hlp :192.1.100.1-
hlp :0x7fff9c7e1bb0-
hlp :192.1.100.1-
hlp2 :0xffffffff9c7e1bb0-
Segmentation fault

So, indeed the two pointers are not the same.
Do you understand why hlp2 is 64 bytes long (is it a logical address?).
Do you understand why the high byte of hlp2 when truncated to 48 bytes is f 
(not 7)?
Still, it doesn't look like this is an app bug, but a libc or gcc bug?

-- 
Segmentation Fault
https://bugs.launchpad.net/bugs/107180
You received this bug notification because you are a member of Ubuntu
Bugs, which is the bug contact for Ubuntu.

-- 
ubuntu-bugs mailing list
ubuntu-bugs@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to