avcodec/h264_ps: Validate num_units_in_tick/time_scale before setting them in the...
authorMichael Niedermayer <michaelni@gmx.at>
Wed, 15 Apr 2015 23:59:19 +0000 (01:59 +0200)
committerMichael Niedermayer <michaelni@gmx.at>
Thu, 16 Apr 2015 01:41:41 +0000 (03:41 +0200)
This probably makes no big difference but it is more correct

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
libavcodec/h264_ps.c

index 3c89181..0d384dd 100644 (file)
@@ -191,13 +191,16 @@ static inline int decode_vui_parameters(H264Context *h, SPS *sps)
 
     sps->timing_info_present_flag = get_bits1(&h->gb);
     if (sps->timing_info_present_flag) {
 
     sps->timing_info_present_flag = get_bits1(&h->gb);
     if (sps->timing_info_present_flag) {
-        sps->num_units_in_tick = get_bits_long(&h->gb, 32);
-        sps->time_scale        = get_bits_long(&h->gb, 32);
-        if (!sps->num_units_in_tick || !sps->time_scale) {
+        unsigned num_units_in_tick = get_bits_long(&h->gb, 32);
+        unsigned time_scale        = get_bits_long(&h->gb, 32);
+        if (!num_units_in_tick || !time_scale) {
             av_log(h->avctx, AV_LOG_ERROR,
             av_log(h->avctx, AV_LOG_ERROR,
-                   "time_scale/num_units_in_tick invalid or unsupported (%"PRIu32"/%"PRIu32")\n",
-                   sps->time_scale, sps->num_units_in_tick);
+                   "time_scale/num_units_in_tick invalid or unsupported (%u/%u)\n",
+                   time_scale, num_units_in_tick);
             sps->timing_info_present_flag = 0;
             sps->timing_info_present_flag = 0;
+        } else {
+            sps->num_units_in_tick = num_units_in_tick;
+            sps->time_scale = time_scale;
         }
         sps->fixed_frame_rate_flag = get_bits1(&h->gb);
     }
         }
         sps->fixed_frame_rate_flag = get_bits1(&h->gb);
     }