mirror of https://git.ffmpeg.org/ffmpeg.git
avdevice/avfoundation: check strdup
This commit is contained in:
parent
6b708592fa
commit
079de49912
|
@ -310,18 +310,21 @@ static void destroy_context(AVFContext* ctx)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void parse_device_name(AVFormatContext *s)
|
static int parse_device_name(AVFormatContext *s)
|
||||||
{
|
{
|
||||||
AVFContext *ctx = (AVFContext*)s->priv_data;
|
AVFContext *ctx = (AVFContext*)s->priv_data;
|
||||||
ctx->url = av_strdup(s->url);
|
ctx->url = av_strdup(s->url);
|
||||||
char *save;
|
char *save;
|
||||||
|
|
||||||
|
if (!ctx->url)
|
||||||
|
return AVERROR(ENOMEM);
|
||||||
if (ctx->url[0] != ':') {
|
if (ctx->url[0] != ':') {
|
||||||
ctx->video_filename = av_strtok(ctx->url, ":", &save);
|
ctx->video_filename = av_strtok(ctx->url, ":", &save);
|
||||||
ctx->audio_filename = av_strtok(NULL, ":", &save);
|
ctx->audio_filename = av_strtok(NULL, ":", &save);
|
||||||
} else {
|
} else {
|
||||||
ctx->audio_filename = av_strtok(ctx->url, ":", &save);
|
ctx->audio_filename = av_strtok(ctx->url, ":", &save);
|
||||||
}
|
}
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -760,6 +763,7 @@ static int get_audio_config(AVFormatContext *s)
|
||||||
|
|
||||||
static int avf_read_header(AVFormatContext *s)
|
static int avf_read_header(AVFormatContext *s)
|
||||||
{
|
{
|
||||||
|
int ret = 0;
|
||||||
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
|
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
|
||||||
uint32_t num_screens = 0;
|
uint32_t num_screens = 0;
|
||||||
AVFContext *ctx = (AVFContext*)s->priv_data;
|
AVFContext *ctx = (AVFContext*)s->priv_data;
|
||||||
|
@ -812,7 +816,9 @@ static int avf_read_header(AVFormatContext *s)
|
||||||
}
|
}
|
||||||
|
|
||||||
// parse input filename for video and audio device
|
// parse input filename for video and audio device
|
||||||
parse_device_name(s);
|
ret = parse_device_name(s);
|
||||||
|
if (ret)
|
||||||
|
goto fail;
|
||||||
|
|
||||||
// check for device index given in filename
|
// check for device index given in filename
|
||||||
if (ctx->video_device_index == -1 && ctx->video_filename) {
|
if (ctx->video_device_index == -1 && ctx->video_filename) {
|
||||||
|
@ -1002,6 +1008,8 @@ static int avf_read_header(AVFormatContext *s)
|
||||||
fail:
|
fail:
|
||||||
[pool release];
|
[pool release];
|
||||||
destroy_context(ctx);
|
destroy_context(ctx);
|
||||||
|
if (ret)
|
||||||
|
return ret;
|
||||||
return AVERROR(EIO);
|
return AVERROR(EIO);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue