aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorGravatar keis <keijser@gmail.com>2011-01-24 19:49:04 +0100
committerGravatar keis <keijser@gmail.com>2011-02-15 21:17:16 +0100
commitd3bde90f9ec4ef80f7130de0cc9b802c9537a700 (patch)
tree22daa42fcf329b84d2c48748e2903dc821ee6cdf /src
parente2e1f6203fa8e9bdbae567cfbec1ee341c10282b (diff)
assert that NAME arguments are valid names
Diffstat (limited to 'src')
-rw-r--r--src/events.c7
-rw-r--r--src/uzbl-core.c9
-rw-r--r--src/uzbl-core.h1
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();