From: Andre Noll <maan@tuebingen.mpg.de>
Date: Sat, 3 Oct 2015 22:48:38 +0000 (+0000)
Subject: play: Handle empty arguments to --key-map gracefully.
X-Git-Tag: v0.5.6~93
X-Git-Url: https://git.tue.mpg.de/?a=commitdiff_plain;h=64cc9685a1bfa789dbcc447d68493691727e11ba;p=paraslash.git

play: Handle empty arguments to --key-map gracefully.

Executing para_play with an empty argument to --key-map results in
a read which starts one byte past the allocated buffer:

	==24163== Invalid read of size 1
	==24163==    at 0x402A1DA: index (mc_replace_strmem.c:223)
	==24163==    by 0x804DA22: main (play.c:187)
	==24163==  Address 0x498e331 is 0 bytes after a block of size 1 alloc'd

This patch fixes the issue by rejecting empty arguments as invalid.
---

diff --git a/play.c b/play.c
index 61c30aed..1b3cc933 100644
--- a/play.c
+++ b/play.c
@@ -184,10 +184,10 @@ static void parse_config_or_die(int argc, char *argv[])
 		loglevel = get_loglevel_by_name(conf.loglevel_arg);
 	}
 	for (i = 0; i < conf.key_map_given; i++) {
-		char *s = strchr(conf.key_map_arg[i] + 1, ':');
-		if (s)
+		char *kma = conf.key_map_arg[i];
+		if (*kma && strchr(kma + 1, ':'))
 			continue;
-		PARA_EMERG_LOG("invalid key map arg: %s\n", conf.key_map_arg[i]);
+		PARA_EMERG_LOG("invalid key map arg: %s\n", kma);
 		goto err;
 	}
 	free(config_file);