libsoup r1220 - in trunk: . libsoup tests



Author: danw
Date: Fri Dec  5 03:57:05 2008
New Revision: 1220
URL: http://svn.gnome.org/viewvc/libsoup?rev=1220&view=rev

Log:
	* 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


Modified:
   trunk/ChangeLog
   trunk/libsoup/soup-form.c
   trunk/tests/forms-test.c

Modified: trunk/libsoup/soup-form.c
==============================================================================
--- trunk/libsoup/soup-form.c	(original)
+++ trunk/libsoup/soup-form.c	Fri Dec  5 03:57:05 2008
@@ -90,15 +90,15 @@
 	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);
 	}

Modified: trunk/tests/forms-test.c
==============================================================================
--- trunk/tests/forms-test.c	(original)
+++ trunk/tests/forms-test.c	Fri Dec  5 03:57:05 2008
@@ -72,7 +72,7 @@
 		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);
 	}
@@ -238,7 +238,7 @@
 
 	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;
@@ -254,7 +254,7 @@
 		}
 		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");



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]