+2008-12-04 Dan Winship <danw@gnome.org>
+
+ * libsoup/soup-form.c (soup_form_decode): Correctly handle forms
+ that have URI-encoded parameter names. #563302, Evan Nemerson.
+
+ * tests/forms-test.c: test that
+
2008-12-03 Dan Winship <danw@gnome.org>
* libsoup/soup-proxy-resolver-gconf.c (finalize): disconnect from
for (i = 0; pairs[i]; i++) {
name = pairs[i];
eq = strchr (name, '=');
- if (!form_decode (name)) {
- g_free (name);
- continue;
- }
if (eq) {
*eq = '\0';
value = eq + 1;
} else
value = NULL;
+ if (!form_decode (name) || (value && !form_decode (value))) {
+ g_free (name);
+ continue;
+ }
g_hash_table_insert (form_data_set, name, value);
}
g_ptr_array_add (args, title_arg);
}
if (tests[n].name) {
- name_arg = soup_form_encode ("name", tests[n].name, NULL);
+ name_arg = soup_form_encode ("n@me", tests[n].name, NULL);
g_ptr_array_add (args, "-d");
g_ptr_array_add (args, name_arg);
}
if (query) {
title = g_hash_table_lookup (query, "title");
- name = g_hash_table_lookup (query, "name");
+ name = g_hash_table_lookup (query, "n@me");
fmt = g_hash_table_lookup (query, "fmt");
} else
title = name = fmt = NULL;
}
g_string_append (buf, "<form action='/hello' method='get'>"
"<p>Title: <input name='title'></p>"
- "<p>Name: <input name='name'></p>"
+ "<p>Name: <input name='n@me'></p>"
"<p><input type=hidden name='fmt' value='html'></p>"
"<p><input type=submit></p>"
"</form>\r\n");