Resolve multiple issues in PCP result PDU decoding routine
authorNathan Scott <nathans@redhat.com>
Mon, 13 Aug 2012 01:28:46 +0000 (11:28 +1000)
committerNathan Scott <nathans@redhat.com>
Mon, 13 Aug 2012 01:28:46 +0000 (11:28 +1000)
commit49c679c44425915a8d6aa4af5f90b35384843c12
tree17b9c8d2f94c2ab8cd28f3b5b183a188e5fd45e4
parenta7dc844d3586ea79887655a97c4252a79751fdae
Resolve multiple issues in PCP result PDU decoding routine

The value of numpmid was not validated against the overall PDU size.
Processing a crafted PDU could read past the end of the PDU, crashing
the process or disclosing information.

The embedded numval counts are not checked, either, with similar results.

In the valfmt != PM_VAL_INSITU case, the extracted pointer may point
outside the area which holds such values.  This can result in crashes
or information disclosure.  The length field inside the value is not
validated against the PDU size.  Values could be made to overlap with
each other or with other parts of the PDU, which is also a problem.

pmcd uses __pmDecodeResult, but only after store authorization, so the
function is only exposed to localhost in the default configuration.

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

Security advisory CVE-2012-3418.
src/libpcp/src/p_result.c