Add missing PDU length checks in __pmDecodeProfile routine
authorNathan Scott <nathans@redhat.com>
Mon, 13 Aug 2012 01:28:43 +0000 (11:28 +1000)
committerNathan Scott <nathans@redhat.com>
Mon, 13 Aug 2012 01:28:43 +0000 (11:28 +1000)
commite4faa1f0ba29151340920d975fc7639adf8371d5
tree1f5482d884f0e9f65e29cdb7055d211a0adb8257
parent46961420c503e0d1218e0c8b465ca9d2d06cbd36
Add missing PDU length checks in __pmDecodeProfile routine

__pmDecodeProfile did not check whether the PDU actually contains room for
profile_len elements of type __pmInDomProfile, or instances_len elemeents
of type int.  This leads to a read buffer overflow and crash in pmcd.

On 32-bit architectures, the malloc size calculations can overflow,
leading to a heap-based buffer overflow when the code writes past the
end of the allocated buffer.

Original report and fixes reviewed by Florian Weimer of the Red Hat
Security team.  Red Hat bugzilla bug #841126.

Security advisory CVE-2012-3418.
src/libpcp/src/p_profile.c
src/pmcd/src/dopdus.c