When correcting a crash in CVS  it was found that the CVS client suffers from a flaw that causes a heap overflow. If certain conditions are met, glib SIGABRTs the process because glibc memory management structures become corrupted. The flaw is in the proxy_connect() function (src/client.c), where sscanf() copies the first word from read_buf to write_buf without checking if there is enough space in write_buf.
This could allow a malicious HTTP proxy server to cause a denial of service to CVS clients or, possibly, execute arbitrary code on the client system with the privileges of the user running cvs, by sending a malicious HTTP response code to the connecting client.
Created attachment 557095 [details]
proposed patch to correct the flaw in 1.11 branch with back-ported proxy support
Created cvs tracking bugs for this issue
Affects: fedora-all [bug 787683]
Created attachment 559993 [details]
Proposed fix for cvs development branch 1.12
cvs-1.11.23-17.fc15 has been pushed to the Fedora 15 stable repository. If problems still persist, please make note of it in this bug report.
cvs-1.11.23-22.fc16 has been pushed to the Fedora 16 stable repository. If problems still persist, please make note of it in this bug report.
This issue has been addressed in following products:
Red Hat Enterprise Linux 6
Red Hat Enterprise Linux 5
Via RHSA-2012:0321 https://rhn.redhat.com/errata/RHSA-2012-0321.html