An insufficient input validation flaw, leading to a heap-based buffer overflow was found in libproxy 0.3.x in the pxpacreload() function. libproxy allocates a memory to store downloaded proxy.pac proxy auto-configuration file content using the Content-Length size from the remote server's HTTP response header. Allocation size is content length + 1. A malicious host hosting proxy.pac, or a man in the middle attacker, could use this flaw to make libproxy allocate insufficient amount of memory and subsequently overflow a heap-based buffer.
http://code.google.com/p/libproxy/source/browse/tags/libproxy-0.3.1/src/lib/pac.c#165
165 self->cache = pxmalloc0(contentlength+1); 166 for (int recvd=0 ; recvd != contentlength ; ) 167 recvd += recv(sock, self->cache + recvd, contentlength - recvd, 0);
This issue was confirmed with libproxy 0.3.x. Earlier 0.2.x versions seems to be affected too. It does not affect 0.4.x versions, where fixed size buffer is used.