Commit fc57f552 authored by Jean-Paul Saman's avatar Jean-Paul Saman

dr_09: Add boundary checking

parent 6c8f07d1
...@@ -69,6 +69,9 @@ dvbpsi_ca_dr_t * dvbpsi_DecodeCADr(dvbpsi_descriptor_t * p_descriptor) ...@@ -69,6 +69,9 @@ dvbpsi_ca_dr_t * dvbpsi_DecodeCADr(dvbpsi_descriptor_t * p_descriptor)
p_decoded->i_ca_pid = ((uint16_t)(p_descriptor->p_data[2] & 0x1f) << 8) p_decoded->i_ca_pid = ((uint16_t)(p_descriptor->p_data[2] & 0x1f) << 8)
| p_descriptor->p_data[3]; | p_descriptor->p_data[3];
p_decoded->i_private_length = p_descriptor->i_length - 4; p_decoded->i_private_length = p_descriptor->i_length - 4;
if (p_decoded->i_private_length > 251)
p_decoded->i_private_length = 251;
if (p_decoded->i_private_length) if (p_decoded->i_private_length)
memcpy(p_decoded->i_private_data, memcpy(p_decoded->i_private_data,
p_descriptor->p_data + 4, p_descriptor->p_data + 4,
...@@ -85,6 +88,9 @@ dvbpsi_ca_dr_t * dvbpsi_DecodeCADr(dvbpsi_descriptor_t * p_descriptor) ...@@ -85,6 +88,9 @@ dvbpsi_ca_dr_t * dvbpsi_DecodeCADr(dvbpsi_descriptor_t * p_descriptor)
dvbpsi_descriptor_t * dvbpsi_GenCADr(dvbpsi_ca_dr_t * p_decoded, dvbpsi_descriptor_t * dvbpsi_GenCADr(dvbpsi_ca_dr_t * p_decoded,
bool b_duplicate) bool b_duplicate)
{ {
if (p_decoded->i_private_length > 251)
p_decoded->i_private_length = 251;
/* Create the descriptor */ /* Create the descriptor */
dvbpsi_descriptor_t * p_descriptor = dvbpsi_descriptor_t * p_descriptor =
dvbpsi_NewDescriptor(0x09, p_decoded->i_private_length + 4, NULL); dvbpsi_NewDescriptor(0x09, p_decoded->i_private_length + 4, NULL);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment