diff options
author | Uoti Urpala <uau@glyph.nonexistent.invalid> | 2010-12-20 06:34:11 +0200 |
---|---|---|
committer | Uoti Urpala <uau@glyph.nonexistent.invalid> | 2010-12-20 06:34:11 +0200 |
commit | 835d3deea2023bd53a079513f6b742b575ae1896 (patch) | |
tree | 9907aeb662ac8a249ebdb99fa30bd81c068de945 /command.c | |
parent | 2bc23997973f353e037b44a1bfde38685a6ff0bd (diff) | |
download | mpv-835d3deea2023bd53a079513f6b742b575ae1896.tar.bz2 mpv-835d3deea2023bd53a079513f6b742b575ae1896.tar.xz |
commands: clean up get_metadata() and related code
Code in get_metadata() allocated too small a buffer for the text it
wrote (noticed by Clément Bœsch). Make the code cleaner and more
robust by changing it to use talloc_asprintf(). Also make it always
return non-NULL and remove checks on caller side.
Diffstat (limited to 'command.c')
-rw-r--r-- | command.c | 110 |
1 files changed, 42 insertions, 68 deletions
@@ -3278,126 +3278,100 @@ void run_command(MPContext *mpctx, mp_cmd_t *cmd) break; case MP_CMD_GET_FILENAME:{ - mp_msg(MSGT_GLOBAL, MSGL_INFO, "ANS_FILENAME='%s'\n", - get_metadata(mpctx, META_NAME)); + char *inf = get_metadata(mpctx, META_NAME); + mp_msg(MSGT_GLOBAL, MSGL_INFO, "ANS_FILENAME='%s'\n", inf); + talloc_free(inf); } break; case MP_CMD_GET_VIDEO_CODEC:{ - char *inf = get_metadata(mpctx, META_VIDEO_CODEC); - if (!inf) - inf = strdup(""); - mp_msg(MSGT_GLOBAL, MSGL_INFO, "ANS_VIDEO_CODEC='%s'\n", inf); - free(inf); + char *inf = get_metadata(mpctx, META_VIDEO_CODEC); + mp_msg(MSGT_GLOBAL, MSGL_INFO, "ANS_VIDEO_CODEC='%s'\n", inf); + talloc_free(inf); } break; case MP_CMD_GET_VIDEO_BITRATE:{ - char *inf = get_metadata(mpctx, META_VIDEO_BITRATE); - if (!inf) - inf = strdup(""); - mp_msg(MSGT_GLOBAL, MSGL_INFO, "ANS_VIDEO_BITRATE='%s'\n", inf); - free(inf); + char *inf = get_metadata(mpctx, META_VIDEO_BITRATE); + mp_msg(MSGT_GLOBAL, MSGL_INFO, "ANS_VIDEO_BITRATE='%s'\n", inf); + talloc_free(inf); } break; case MP_CMD_GET_VIDEO_RESOLUTION:{ - char *inf = get_metadata(mpctx, META_VIDEO_RESOLUTION); - if (!inf) - inf = strdup(""); - mp_msg(MSGT_GLOBAL, MSGL_INFO, - "ANS_VIDEO_RESOLUTION='%s'\n", inf); - free(inf); + char *inf = get_metadata(mpctx, META_VIDEO_RESOLUTION); + mp_msg(MSGT_GLOBAL, MSGL_INFO, "ANS_VIDEO_RESOLUTION='%s'\n", inf); + talloc_free(inf); } break; case MP_CMD_GET_AUDIO_CODEC:{ - char *inf = get_metadata(mpctx, META_AUDIO_CODEC); - if (!inf) - inf = strdup(""); - mp_msg(MSGT_GLOBAL, MSGL_INFO, "ANS_AUDIO_CODEC='%s'\n", inf); - free(inf); + char *inf = get_metadata(mpctx, META_AUDIO_CODEC); + mp_msg(MSGT_GLOBAL, MSGL_INFO, "ANS_AUDIO_CODEC='%s'\n", inf); + talloc_free(inf); } break; case MP_CMD_GET_AUDIO_BITRATE:{ - char *inf = get_metadata(mpctx, META_AUDIO_BITRATE); - if (!inf) - inf = strdup(""); - mp_msg(MSGT_GLOBAL, MSGL_INFO, "ANS_AUDIO_BITRATE='%s'\n", inf); - free(inf); + char *inf = get_metadata(mpctx, META_AUDIO_BITRATE); + mp_msg(MSGT_GLOBAL, MSGL_INFO, "ANS_AUDIO_BITRATE='%s'\n", inf); + talloc_free(inf); } break; case MP_CMD_GET_AUDIO_SAMPLES:{ - char *inf = get_metadata(mpctx, META_AUDIO_SAMPLES); - if (!inf) - inf = strdup(""); - mp_msg(MSGT_GLOBAL, MSGL_INFO, "ANS_AUDIO_SAMPLES='%s'\n", inf); - free(inf); + char *inf = get_metadata(mpctx, META_AUDIO_SAMPLES); + mp_msg(MSGT_GLOBAL, MSGL_INFO, "ANS_AUDIO_SAMPLES='%s'\n", inf); + talloc_free(inf); } break; case MP_CMD_GET_META_TITLE:{ - char *inf = get_metadata(mpctx, META_INFO_TITLE); - if (!inf) - inf = strdup(""); - mp_msg(MSGT_GLOBAL, MSGL_INFO, "ANS_META_TITLE='%s'\n", inf); - free(inf); + char *inf = get_metadata(mpctx, META_INFO_TITLE); + mp_msg(MSGT_GLOBAL, MSGL_INFO, "ANS_META_TITLE='%s'\n", inf); + talloc_free(inf); } break; case MP_CMD_GET_META_ARTIST:{ - char *inf = get_metadata(mpctx, META_INFO_ARTIST); - if (!inf) - inf = strdup(""); - mp_msg(MSGT_GLOBAL, MSGL_INFO, "ANS_META_ARTIST='%s'\n", inf); - free(inf); + char *inf = get_metadata(mpctx, META_INFO_ARTIST); + mp_msg(MSGT_GLOBAL, MSGL_INFO, "ANS_META_ARTIST='%s'\n", inf); + talloc_free(inf); } break; case MP_CMD_GET_META_ALBUM:{ - char *inf = get_metadata(mpctx, META_INFO_ALBUM); - if (!inf) - inf = strdup(""); - mp_msg(MSGT_GLOBAL, MSGL_INFO, "ANS_META_ALBUM='%s'\n", inf); - free(inf); + char *inf = get_metadata(mpctx, META_INFO_ALBUM); + mp_msg(MSGT_GLOBAL, MSGL_INFO, "ANS_META_ALBUM='%s'\n", inf); + talloc_free(inf); } break; case MP_CMD_GET_META_YEAR:{ - char *inf = get_metadata(mpctx, META_INFO_YEAR); - if (!inf) - inf = strdup(""); - mp_msg(MSGT_GLOBAL, MSGL_INFO, "ANS_META_YEAR='%s'\n", inf); - free(inf); + char *inf = get_metadata(mpctx, META_INFO_YEAR); + mp_msg(MSGT_GLOBAL, MSGL_INFO, "ANS_META_YEAR='%s'\n", inf); + talloc_free(inf); } break; case MP_CMD_GET_META_COMMENT:{ - char *inf = get_metadata(mpctx, META_INFO_COMMENT); - if (!inf) - inf = strdup(""); - mp_msg(MSGT_GLOBAL, MSGL_INFO, "ANS_META_COMMENT='%s'\n", inf); - free(inf); + char *inf = get_metadata(mpctx, META_INFO_COMMENT); + mp_msg(MSGT_GLOBAL, MSGL_INFO, "ANS_META_COMMENT='%s'\n", inf); + talloc_free(inf); } break; case MP_CMD_GET_META_TRACK:{ - char *inf = get_metadata(mpctx, META_INFO_TRACK); - if (!inf) - inf = strdup(""); - mp_msg(MSGT_GLOBAL, MSGL_INFO, "ANS_META_TRACK='%s'\n", inf); - free(inf); + char *inf = get_metadata(mpctx, META_INFO_TRACK); + mp_msg(MSGT_GLOBAL, MSGL_INFO, "ANS_META_TRACK='%s'\n", inf); + talloc_free(inf); } break; case MP_CMD_GET_META_GENRE:{ - char *inf = get_metadata(mpctx, META_INFO_GENRE); - if (!inf) - inf = strdup(""); - mp_msg(MSGT_GLOBAL, MSGL_INFO, "ANS_META_GENRE='%s'\n", inf); - free(inf); + char *inf = get_metadata(mpctx, META_INFO_GENRE); + mp_msg(MSGT_GLOBAL, MSGL_INFO, "ANS_META_GENRE='%s'\n", inf); + talloc_free(inf); } break; |