about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authormarco <marco@conformal.com>2011-10-25 08:22:39 -0500
committermarco <marco@conformal.com>2011-10-25 08:22:39 -0500
commit1a7370ba33c6fe7bc708d8e9421dcb1e60bbbd64 (patch)
tree235741652f8dbe37756f10dcd150754d2d24b720
parent1a6f141417718eb28dcfe23928127778fc0bc907 (diff)
downloadxombrero-1a7370ba33c6fe7bc708d8e9421dcb1e60bbbd64.tar.gz
fix segfault in config file parsing
found by Ingo Feinerer <feinerer@logic.at>
-rw-r--r--xxxterm.c19
1 files changed, 11 insertions, 8 deletions
diff --git a/xxxterm.c b/xxxterm.c
index 02b5d66..3717543 100644
--- a/xxxterm.c
+++ b/xxxterm.c
@@ -2284,17 +2284,20 @@ config_parse(char *filename, int runtime)
 		if ((var = strsep(&cp, WS)) == NULL || cp == NULL)
 			startpage_add("invalid configuration file entry: %s",
 			    line);
+		else {
+			cp += (long)strspn(cp, WS);
 
-		cp += (long)strspn(cp, WS);
-
-		if ((val = strsep(&cp, "\0")) == NULL)
-			break;
+			if ((val = strsep(&cp, "\0")) == NULL)
+				break;
 
-		DNPRINTF(XT_D_CONFIG, "config_parse: %s=%s\n", var, val);
-		handled = settings_add(var, val);
-		if (handled == 0)
-			startpage_add("invalid configuration file entry: %s=%s",
+			DNPRINTF(XT_D_CONFIG, "config_parse: %s=%s\n",
 			    var, val);
+			handled = settings_add(var, val);
+
+			if (handled == 0)
+				startpage_add("invalid configuration file entry"
+				    ": %s=%s", var, val);
+		}
 
 		free(line);
 	}