summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lasso/xml/tools.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/lasso/xml/tools.c b/lasso/xml/tools.c
index c5eb6d51..4f630aff 100644
--- a/lasso/xml/tools.c
+++ b/lasso/xml/tools.c
@@ -234,13 +234,28 @@ lasso_query_to_dict(const gchar *query)
i = 0;
sa1 = g_strsplit(query, "&", 0);
+
while (sa1[i++] != NULL) {
/* split of key=value to get (key, value) sub-strings */
sa2 = g_strsplit(sa1[i-1], "=", 0);
+ /* if no key / value found, then continue */
+ if (sa2 == NULL) {
+ continue;
+ }
+ /* if only a key but no value, then continue */
+ if (sa2[1] == NULL) {
+ continue;
+ }
+
/* printf("%s => ", sa2[0]); */
/* split of value to get mutli values sub-strings separated by SPACE char */
str_unescaped = lasso_str_unescape(sa2[1]);
sa3 = g_strsplit(str_unescaped, " ", 0);
+ if (sa3 == NULL) {
+ g_strfreev(sa2);
+ continue;
+ }
+
xmlFree(str_unescaped);
gpa = g_ptr_array_new();
j = 0;