Re: Tracking Heap Corruption bug FOUND!
Eugene Crosser <[email protected]> Wed, 24 Oct 2007 23:47:14 +0400
| Newsgroups | gmane.mail.spam.spf.devel |
|---|---|
| Message-ID | <[email protected]> |
David Hinkle wrote: > Maybe fixing this will become trivial for someone with more experience > First invalid write: > > ==30539== Invalid write of size 1 > ==30539== at 0x401BD48: memcpy (in > /usr/local/lib/valgrind/x86-linux/vgpreload_memcheck.so) > ==30539== by 0x4064E74: SPF_dns_resolv_lookup (spf_dns_resolv.c:404) My theory here is that in the file src/libspf2/spf_dns_resolv.c after the line 387, the size of the data in the parsed RR (variable 'rdlen') may under some circumstances be larger than the sum of lengths of text strings inside. Internal text strings are concatenated in the while loop at line 399, but if there is some junk after the last (or only) string, or if the length prefix of some string is set incorrectly, then the code may try to copy data from beyond the end of 'rdata' field. This is because the value of the length prefix (len = *src; line 401) is not checked for "sanity". Here sanity is being more than zero, and less then the remainder of rdata. I added this check; I will report if it helps. Usually, I get a few segfaults a week, so that will take a while. Eugene ------------------------------------------- ----------------------------------------------------------------------- To unsubscribe, change your address, or temporarily deactivate your subscription, please go to http://v2.listbox.com/member/?member_id=6959932&id_secret=57178528-10610a Powered by Listbox: http://www.listbox.com
signature.asc
(application/pgp-signature, 252 B)
-----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.7 (GNU/Linux) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org iD8DBQFHH6FGfrw/cIw6UWkRAiiSAKDTC2zg8pJxIVGN9CH0dxriqQUg7ACeJXL1 nal+ZmbgYPESNWmcEE5esiw= =cgds -----END PGP SIGNATURE-----