diff options
author | Thibault Saunier <thibault.saunier@collabora.com> | 2012-03-10 19:10:52 -0300 |
---|---|---|
committer | Thibault Saunier <thibault.saunier@collabora.com> | 2012-03-10 19:22:07 -0300 |
commit | 20669d461a4953eb5ed01374d5ab628b4dc73b64 (patch) | |
tree | 5647a44580eba66f6b360066f90406f0779f121f /sys/vdpau | |
parent | a7eda9ed4942e24f0a3971c3591af54cc4cd9a5b (diff) | |
download | gstreamer-plugins-bad-20669d461a4953eb5ed01374d5ab628b4dc73b64.tar.gz |
Fix 'ignoring return value of function declared with const attribute'
This always happens with GstByteReader/Writer and friends when
not taking into account returned boolean of the _read/_write functions
(which is actually wrong).
Make use of the *_unchecked variant as much as possible, or take the
returned value into account.
Diffstat (limited to 'sys/vdpau')
-rw-r--r-- | sys/vdpau/h264/gstvdph264dec.c | 18 | ||||
-rw-r--r-- | sys/vdpau/mpeg/gstvdpmpegdec.c | 11 |
2 files changed, 16 insertions, 13 deletions
diff --git a/sys/vdpau/h264/gstvdph264dec.c b/sys/vdpau/h264/gstvdph264dec.c index d7af47b6f..71893ca0b 100644 --- a/sys/vdpau/h264/gstvdph264dec.c +++ b/sys/vdpau/h264/gstvdph264dec.c @@ -687,23 +687,25 @@ gst_vdp_h264_dec_parse_data (GstBaseVideoDecoder * base_video_decoder, gst_bit_reader_init_from_buffer (&reader, buf); + if (gst_bit_reader_get_remaining (&reader) < + h264_dec->nal_length_size * 8 + 7) + goto invalid_packet; + /* skip nal_length or sync code */ - gst_bit_reader_skip (&reader, h264_dec->nal_length_size * 8); + gst_bit_reader_skip_unchecked (&reader, h264_dec->nal_length_size * 8); + + forbidden_zero_bit = gst_bit_reader_get_bits_uint8_unchecked (&reader, 1); - if (!gst_bit_reader_get_bits_uint8 (&reader, &forbidden_zero_bit, 1)) - goto invalid_packet; if (forbidden_zero_bit != 0) { GST_WARNING ("forbidden_zero_bit != 0"); return GST_FLOW_ERROR; } - if (!gst_bit_reader_get_bits_uint16 (&reader, &nal_unit.ref_idc, 2)) - goto invalid_packet; + nal_unit.ref_idc = gst_bit_reader_get_bits_uint16_unchecked (&reader, 2); GST_DEBUG ("nal_ref_idc: %u", nal_unit.ref_idc); /* read nal_unit_type */ - if (!gst_bit_reader_get_bits_uint16 (&reader, &nal_unit.type, 5)) - goto invalid_packet; + nal_unit.type = gst_bit_reader_get_bits_uint16_unchecked (&reader, 5); GST_DEBUG ("nal_unit_type: %u", nal_unit.type); if (nal_unit.type == 14 || nal_unit.type == 20) { @@ -716,7 +718,7 @@ gst_vdp_h264_dec_parse_data (GstBaseVideoDecoder * base_video_decoder, size = gst_bit_reader_get_remaining (&reader) / 8; i = size - 1; - while (size > 0 && data[i] == 0x00) { + while ((gint) size > 0 && data[i] == 0x00) { size--; i--; } diff --git a/sys/vdpau/mpeg/gstvdpmpegdec.c b/sys/vdpau/mpeg/gstvdpmpegdec.c index 6a473e48e..87456eb78 100644 --- a/sys/vdpau/mpeg/gstvdpmpegdec.c +++ b/sys/vdpau/mpeg/gstvdpmpegdec.c @@ -415,12 +415,14 @@ gst_vdp_mpeg_dec_parse_data (GstBaseVideoDecoder * base_video_decoder, GstBitReader b_reader = GST_BIT_READER_INIT_FROM_BUFFER (buf); guint8 start_code; + if (gst_bit_reader_get_remaining (&b_reader) < 8 * 3 + 8) + return GST_FLOW_ERROR; + /* skip sync_code */ - gst_bit_reader_skip (&b_reader, 8 * 3); + gst_bit_reader_skip_unchecked (&b_reader, 8 * 3); /* start_code */ - if (!gst_bit_reader_get_bits_uint8 (&b_reader, &start_code, 8)) - return GST_FLOW_ERROR; + start_code = gst_bit_reader_get_bits_uint8_unchecked (&b_reader, 8); mpeg_frame = GST_VDP_MPEG_FRAME_CAST (frame); @@ -624,8 +626,7 @@ gst_vdp_mpeg_dec_base_init (gpointer gclass) "Decode mpeg stream with vdpau", "Carl-Anton Ingmarsson <ca.ingmarsson@gmail.com>"); - gst_element_class_add_static_pad_template (element_class, - &sink_template); + gst_element_class_add_static_pad_template (element_class, &sink_template); } /* initialize the vdpaumpegdecoder's class */ |