aboutsummaryrefslogtreecommitdiffstats
path: root/libavformat/hls.c
diff options
context:
space:
mode:
authorAnssi Hannula <anssi.hannula@iki.fi>2016-09-24 09:29:03 +0300
committerAnssi Hannula <anssi.hannula@iki.fi>2016-09-24 09:46:32 +0300
commita6f5e25ad989550dff9493311d6ba08d882df079 (patch)
treeb2a48d4b10471ec3a26bbd3555d7e38fd52f364c /libavformat/hls.c
parent1212e3468e7b66007a3a3f0363af5fd92718835a (diff)
downloadffmpeg-a6f5e25ad989550dff9493311d6ba08d882df079.tar.gz
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/hls.c')
-rw-r--r--libavformat/hls.c10
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]) {