diff options
author | wm4 <wm4@nowhere> | 2013-09-18 19:56:15 +0200 |
---|---|---|
committer | wm4 <wm4@nowhere> | 2013-09-18 19:56:15 +0200 |
commit | 5249cccfcfb6c345a40dff2dee464d287fc69605 (patch) | |
tree | 7a0ba5538e6306365bde54ca9239156649026a18 | |
parent | 1298dbdf013ef055fc2bb66fb3947441b7afc222 (diff) | |
download | mpv-5249cccfcfb6c345a40dff2dee464d287fc69605.tar.bz2 mpv-5249cccfcfb6c345a40dff2dee464d287fc69605.tar.xz |
Config path functions can return NULL
It's quite unlikely, but functions like mp_find_user_config_file() can
return NULL, e.g. if $HOME is unset.
Fix all the code that didn't check for this correctly yet.
-rw-r--r-- | audio/filter/af_export.c | 6 | ||||
-rw-r--r-- | mpvcore/mplayer.c | 8 |
2 files changed, 11 insertions, 3 deletions
diff --git a/audio/filter/af_export.c b/audio/filter/af_export.c index b4286c0e62..3a6f808a34 100644 --- a/audio/filter/af_export.c +++ b/audio/filter/af_export.c @@ -99,6 +99,12 @@ static int control(struct af_instance* af, int cmd, void* arg) for(i = 1; i < af->data->nch; i++) s->buf[i] = (uint8_t *)s->buf[0] + i*s->sz*af->data->bps; + if (!s->filename) { + mp_msg(MSGT_AFILTER, MSGL_FATAL, "[export] No filename set.\n", + s->filename); + return AF_ERROR; + } + // Init memory mapping s->fd = open(s->filename, O_RDWR | O_CREAT | O_TRUNC, 0640); mp_msg(MSGT_AFILTER, MSGL_INFO, "[export] Exporting to file: %s\n", s->filename); diff --git a/mpvcore/mplayer.c b/mpvcore/mplayer.c index 381f3385fd..d9715e447f 100644 --- a/mpvcore/mplayer.c +++ b/mpvcore/mplayer.c @@ -637,9 +637,11 @@ static void mk_config_dir(char *subdir) { void *tmp = talloc_new(NULL); char *confdir = talloc_steal(tmp, mp_find_user_config_file("")); - if (subdir) - confdir = mp_path_join(tmp, bstr0(confdir), bstr0(subdir)); - mkdir(confdir, 0777); + if (confdir) { + if (subdir) + confdir = mp_path_join(tmp, bstr0(confdir), bstr0(subdir)); + mkdir(confdir, 0777); + } talloc_free(tmp); } |