diff options
author | keis <keijser@gmail.com> | 2011-01-24 19:49:04 +0100 |
---|---|---|
committer | keis <keijser@gmail.com> | 2011-02-15 21:17:16 +0100 |
commit | d3bde90f9ec4ef80f7130de0cc9b802c9537a700 (patch) | |
tree | 22daa42fcf329b84d2c48748e2903dc821ee6cdf /src | |
parent | e2e1f6203fa8e9bdbae567cfbec1ee341c10282b (diff) |
assert that NAME arguments are valid names
Diffstat (limited to 'src')
-rw-r--r-- | src/events.c | 7 | ||||
-rw-r--r-- | src/uzbl-core.c | 9 | ||||
-rw-r--r-- | src/uzbl-core.h | 1 |
3 files changed, 14 insertions, 3 deletions
diff --git a/src/events.c b/src/events.c index e8c42a3..174ff75 100644 --- a/src/events.c +++ b/src/events.c @@ -145,6 +145,7 @@ vsend_event(int type, const gchar *custom_event, va_list vargs) { if (type >= LAST_EVENT) return; const gchar *event = custom_event ? custom_event : event_table[type]; + char* str; int next; g_string_printf (event_message, "EVENT [%s] %s", @@ -162,9 +163,13 @@ vsend_event(int type, const gchar *custom_event, va_list vargs) { g_string_append_c (event_message, '\''); break; case TYPE_FORMATTEDSTR: - case TYPE_NAME: g_string_append (event_message, va_arg (vargs, char*)); break; + case TYPE_NAME: + str = va_arg (vargs, char*); + g_assert (valid_name (str)); + g_string_append (event_message, str); + break; case TYPE_FLOAT: // ‘float’ is promoted to ‘double’ when passed through ‘...’ g_string_append_printf (event_message, "%.2f", va_arg (vargs, double)); diff --git a/src/uzbl-core.c b/src/uzbl-core.c index ca936c1..6809441 100644 --- a/src/uzbl-core.c +++ b/src/uzbl-core.c @@ -1217,11 +1217,16 @@ move_statusbar() { } gboolean +valid_name(const gchar* name) { + char *invalid_chars = "\t^°!\"§$%&/()=?'`'+~*'#-:,;@<>| \\{}[]¹²³¼½"; + return strpbrk(name, invalid_chars) == NULL; +} + +gboolean set_var_value(const gchar *name, gchar *val) { uzbl_cmdprop *c = NULL; char *endp = NULL; char *buf = NULL; - char *invalid_chars = "\t^°!\"§$%&/()=?'`'+~*'#-:,;@<>| \\{}[]¹²³¼½"; if( (c = g_hash_table_lookup(uzbl.comm.proto_var, name)) ) { if(!c->writeable) return FALSE; @@ -1261,7 +1266,7 @@ set_var_value(const gchar *name, gchar *val) { if(c->func) c->func(); } else { /* check wether name violates our naming scheme */ - if(strpbrk(name, invalid_chars)) { + if(!valid_name(name)) { if (uzbl.state.verbose) printf("Invalid variable name: %s\n", name); return FALSE; diff --git a/src/uzbl-core.h b/src/uzbl-core.h index 9e72511..3240fc6 100644 --- a/src/uzbl-core.h +++ b/src/uzbl-core.h @@ -317,6 +317,7 @@ void handle_authentication (SoupSession *session, void handle_cookies (SoupSession *session, SoupMessage *msg, gpointer user_data); +gboolean valid_name(const gchar* name); void set_var(WebKitWebView *page, GArray *argv, GString *result); void act_dump_config(); void act_dump_config_as_events(); |