mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-11-21 10:55:51 +02:00
avformat/hls: Don't strdup non-null-terminated string
If an URI indicated that the data protocol was in use, it would be copied into a temporary buffer via strncpy(dst, src, strlen(src)), thereby ensuring that the trailing \0 would not be copied, despite dst being uninitialized. dst would then be av_strdup'ed, leading to potential segfaults. The solution to this is simple: Don't copy the URI in the temporary buffer at all, instead av_strdup it directly. This fixes a -Wstringop-truncation warning emitted by GCC 9.2. Reviewed-by: Steven Liu <lq@chinaffmpeg.org> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
This commit is contained in:
parent
65e8f6dd9b
commit
9dfc409e6b
@ -403,8 +403,7 @@ static struct segment *new_init_section(struct playlist *pls,
|
||||
const char *url_base)
|
||||
{
|
||||
struct segment *sec;
|
||||
char *ptr;
|
||||
char tmp_str[MAX_URL_SIZE];
|
||||
char tmp_str[MAX_URL_SIZE], *ptr = tmp_str;
|
||||
|
||||
if (!info->uri[0])
|
||||
return NULL;
|
||||
@ -414,11 +413,11 @@ static struct segment *new_init_section(struct playlist *pls,
|
||||
return NULL;
|
||||
|
||||
if (!av_strncasecmp(info->uri, "data:", 5)) {
|
||||
strncpy(tmp_str, info->uri, strlen(info->uri));
|
||||
ptr = info->uri;
|
||||
} else {
|
||||
ff_make_absolute_url(tmp_str, sizeof(tmp_str), url_base, info->uri);
|
||||
}
|
||||
sec->url = av_strdup(tmp_str);
|
||||
sec->url = av_strdup(ptr);
|
||||
if (!sec->url) {
|
||||
av_free(sec);
|
||||
return NULL;
|
||||
|
Loading…
Reference in New Issue
Block a user