From 88fd763e18b42fbcaaa7738212cfeb1b6b37e8f3 Mon Sep 17 00:00:00 2001 From: wm4 Date: Sun, 22 Dec 2013 23:13:59 +0100 Subject: player: simplify mp_load_per_file_config Get rid of the stupid and error-prone buffer size calculations, use snprintf instead of strcpy. --- player/configfiles.c | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) (limited to 'player') diff --git a/player/configfiles.c b/player/configfiles.c index b3804c0bd0..e506d0453e 100644 --- a/player/configfiles.c +++ b/player/configfiles.c @@ -89,23 +89,22 @@ static void mp_load_per_file_config(struct MPContext *mpctx) { struct MPOpts *opts = mpctx->opts; char *confpath; - char cfg[MP_PATH_MAX]; - const char *name; + char cfg[512]; const char *file = mpctx->filename; - if (strlen(file) > MP_PATH_MAX - 14) { + if (snprintf(cfg, sizeof(cfg), "%s.conf", file) >= sizeof(cfg)) { MP_WARN(mpctx, "Filename is too long, " "can not load file or directory specific config files\n"); return; } - sprintf(cfg, "%s.conf", file); - name = mp_basename(cfg); + char *name = mp_basename(cfg); + if (opts->use_filedir_conf) { - char dircfg[MP_PATH_MAX]; - strcpy(dircfg, cfg); - strcpy(dircfg + (name - cfg), "mpv.conf"); + bstr dir = mp_dirname(cfg); + char *dircfg = mp_path_join(NULL, dir, bstr0("mpv.conf")); try_load_config(mpctx, dircfg, FILE_LOCAL_FLAGS); + talloc_free(dircfg); if (try_load_config(mpctx, cfg, FILE_LOCAL_FLAGS)) return; -- cgit v1.2.3