about summary refs log tree commit diff stats
path: root/settings.c
diff options
context:
space:
mode:
authorJosh Rickmar <jrick@conformal.com>2013-07-05 10:34:03 -0400
committerJosh Rickmar <jrick@conformal.com>2013-07-08 14:52:56 -0400
commitc5ec3f447beb3ca21dfc6c7d9ebcc072352f7716 (patch)
treed218229c03413fcd7ff5e29e967ebddf6be48dfa /settings.c
parent8f88bcce004f20aaa4a1ff6d9766d1926bdd66a5 (diff)
downloadxombrero-c5ec3f447beb3ca21dfc6c7d9ebcc072352f7716.tar.gz
Fix types and bounds checking on config inputs.
Diffstat (limited to 'settings.c')
-rw-r--r--settings.c15
1 files changed, 11 insertions, 4 deletions
diff --git a/settings.c b/settings.c
index f9d3e36..49153bf 100644
--- a/settings.c
+++ b/settings.c
@@ -78,7 +78,7 @@ int		cookies_enabled = XT_DS_COOKIES_ENABLED; /* enable cookies */
 int		read_only_cookies = XT_DS_READ_ONLY_COOKIES; /* enable to not write cookies */
 int		enable_scripts = XT_DS_ENABLE_SCRIPTS;
 int		enable_plugins = XT_DS_ENABLE_PLUGINS;
-gfloat		default_zoom_level = XT_DS_DEFAULT_ZOOM_LEVEL;
+double		default_zoom_level = XT_DS_DEFAULT_ZOOM_LEVEL;
 char		default_script[PATH_MAX];	/* special setting - is never g_free'd */
 int		refresh_interval = XT_DS_REFRESH_INTERVAL; /* download refresh interval */
 int		enable_plugin_whitelist = XT_DS_ENABLE_PLUGIN_WHITELIST;
@@ -3608,11 +3608,15 @@ int
 settings_add(char *var, char *val)
 {
 	int			i, rv, *p;
-	gfloat			*f;
+	int			tmp;
+	double			*f;
 	char			c[PATH_MAX], **s;
+	const char		*errstr;
 
 	/* get settings */
 	for (i = 0, rv = 0; i < LENGTH(rs); i++) {
+		errstr = NULL;
+
 		if (strcmp(var, rs[i].name))
 			continue;
 
@@ -3634,7 +3638,10 @@ settings_add(char *var, char *val)
 			case XT_S_INT:	/* FALLTHROUGH */
 			case XT_S_BOOL:
 				p = rs[i].ival;
-				*p = atoi(val);
+				tmp = strtonum(val, INT_MIN, INT_MAX, &errstr);
+				if (errstr)
+					break;
+				*p = tmp;
 				rv = 1;
 				break;
 			case XT_S_STR:
@@ -3649,7 +3656,7 @@ settings_add(char *var, char *val)
 				break;
 			case XT_S_FLOAT:
 				f = rs[i].fval;
-				*f = atof(val);
+				*f = g_ascii_strtod(val, NULL);
 				rv = 1;
 				break;
 			case XT_S_INVALID: