[FFmpeg-devel] [PATCH 1/3] lavf/srtdec: simplify start/end computation.

Clément Bœsch ubitux at gmail.com
Thu Oct 25 00:05:29 CEST 2012


On Sun, Oct 21, 2012 at 12:24:12AM +0200, Clément Bœsch wrote:
> Also fix potential overflow (CID733778)
> ---
>  libavformat/srtdec.c | 17 +++++++----------
>  1 file changed, 7 insertions(+), 10 deletions(-)
> 
> diff --git a/libavformat/srtdec.c b/libavformat/srtdec.c
> index a66ced3..056165e 100644
> --- a/libavformat/srtdec.c
> +++ b/libavformat/srtdec.c
> @@ -53,19 +53,16 @@ static int srt_read_header(AVFormatContext *s)
>  
>  static int64_t get_pts(const char *buf, int *duration)
>  {
> -    int i, hour, min, sec, hsec;
> -    int he, me, se, mse;
> +    int i;
>  
>      for (i=0; i<2; i++) {
> -        int64_t start, end;
> +        int hh1, mm1, ss1, ms1;
> +        int hh2, mm2, ss2, ms2;
>          if (sscanf(buf, "%d:%2d:%2d%*1[,.]%3d --> %d:%2d:%2d%*1[,.]%3d",
> -                   &hour, &min, &sec, &hsec, &he, &me, &se, &mse) == 8) {
> -            min += 60*hour;
> -            sec += 60*min;
> -            start = sec*1000+hsec;
> -            me += 60*he;
> -            se += 60*me;
> -            end = se*1000+mse;
> +                   &hh1, &mm1, &ss1, &ms1,
> +                   &hh2, &mm2, &ss2, &ms2) == 8) {
> +            int64_t start = (hh1*3600LL + mm1*60LL + ss1) * 1000LL + ms1;
> +            int64_t end   = (hh2*3600LL + mm2*60LL + ss2) * 1000LL + ms2;
>              *duration = end - start;
>              return start;
>          }

Applied, with LL, sorry Nicolas :)

-- 
Clément B.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 490 bytes
Desc: not available
URL: <http://ffmpeg.org/pipermail/ffmpeg-devel/attachments/20121025/3dc71d33/attachment.asc>


More information about the ffmpeg-devel mailing list