diff options
author | Anssi Hannula <anssi.hannula@iki.fi> | 2016-09-24 09:29:03 +0300 |
---|---|---|
committer | Anssi Hannula <anssi.hannula@iki.fi> | 2016-09-24 09:46:32 +0300 |
commit | a6f5e25ad989550dff9493311d6ba08d882df079 (patch) | |
tree | b2a48d4b10471ec3a26bbd3555d7e38fd52f364c /libavformat | |
parent | 1212e3468e7b66007a3a3f0363af5fd92718835a (diff) |
avformat/hls: Fix handling of EXT-X-BYTERANGE streams over 2GB
Replace uses of atoi() with strtoll() when trying to read values into
int64_t variables.
Fixes Kodi trac #16926:
http://trac.kodi.tv/ticket/16926
Diffstat (limited to 'libavformat')
-rw-r--r-- | libavformat/hls.c | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/libavformat/hls.c b/libavformat/hls.c index 1ad08a4d40..3c09dd8be0 100644 --- a/libavformat/hls.c +++ b/libavformat/hls.c @@ -417,10 +417,10 @@ static struct segment *new_init_section(struct playlist *pls, } if (info->byterange[0]) { - sec->size = atoi(info->byterange); + sec->size = strtoll(info->byterange, NULL, 10); ptr = strchr(info->byterange, '@'); if (ptr) - sec->url_offset = atoi(ptr+1); + sec->url_offset = strtoll(ptr+1, NULL, 10); } else { /* the entire file is the init section */ sec->size = -1; @@ -732,7 +732,7 @@ static int parse_playlist(HLSContext *c, const char *url, ret = ensure_playlist(c, &pls, url); if (ret < 0) goto fail; - pls->target_duration = atoi(ptr) * AV_TIME_BASE; + pls->target_duration = strtoll(ptr, NULL, 10) * AV_TIME_BASE; } else if (av_strstart(line, "#EXT-X-MEDIA-SEQUENCE:", &ptr)) { ret = ensure_playlist(c, &pls, url); if (ret < 0) @@ -761,10 +761,10 @@ static int parse_playlist(HLSContext *c, const char *url, is_segment = 1; duration = atof(ptr) * AV_TIME_BASE; } else if (av_strstart(line, "#EXT-X-BYTERANGE:", &ptr)) { - seg_size = atoi(ptr); + seg_size = strtoll(ptr, NULL, 10); ptr = strchr(ptr, '@'); if (ptr) - seg_offset = atoi(ptr+1); + seg_offset = strtoll(ptr+1, NULL, 10); } else if (av_strstart(line, "#", NULL)) { continue; } else if (line[0]) { |