From 74152744f0d56c2d0211728206a218a33df41a5d Mon Sep 17 00:00:00 2001 From: Jonathon Mah Date: Sun, 10 Apr 2011 04:10:03 -0700 Subject: Fix escaping of paths with spaces Signed-off-by: Lars Hjemli --- html.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) (limited to 'html.c') diff --git a/html.c b/html.c index a60bc13..6f31097 100644 --- a/html.c +++ b/html.c @@ -18,7 +18,7 @@ static const char* url_escape_table[256] = { "%00", "%01", "%02", "%03", "%04", "%05", "%06", "%07", "%08", "%09", "%0a", "%0b", "%0c", "%0d", "%0e", "%0f", "%10", "%11", "%12", "%13", "%14", "%15", "%16", "%17", "%18", "%19", "%1a", "%1b", "%1c", "%1d", - "%1e", "%1f", "+", 0, "%22", "%23", 0, "%25", "%26", "%27", 0, 0, 0, + "%1e", "%1f", "%20", 0, "%22", "%23", 0, "%25", "%26", "%27", 0, 0, 0, "%2b", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "%3c", "%3d", "%3e", "%3f", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "%5c", 0, "%5e", 0, "%60", 0, 0, 0, 0, 0, @@ -162,9 +162,9 @@ void html_url_path(const char *txt) while(t && *t){ int c = *t; const char *e = url_escape_table[c]; - if (e && c!='+' && c!='&' && c!='+') { + if (e && c!='+' && c!='&') { html_raw(txt, t - txt); - html_raw(e, 3); + html(e); txt = t+1; } t++; @@ -179,9 +179,11 @@ void html_url_arg(const char *txt) while(t && *t){ int c = *t; const char *e = url_escape_table[c]; + if (c == ' ') + e = "+"; if (e) { html_raw(txt, t - txt); - html_raw(e, strlen(e)); + html(e); txt = t+1; } t++; -- cgit v1.2.3-24-g4f1b From 070e109c1413d28b54eb6123a9fd24ac98897554 Mon Sep 17 00:00:00 2001 From: Lukas Fleischer Date: Thu, 31 Mar 2011 01:21:39 +0200 Subject: Fix memory leak in http_parse_querystring(). Signed-off-by: Lukas Fleischer Signed-off-by: Lars Hjemli --- html.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'html.c') diff --git a/html.c b/html.c index 6f31097..a0f6db4 100644 --- a/html.c +++ b/html.c @@ -290,12 +290,12 @@ char *convert_query_hexchar(char *txt) int http_parse_querystring(const char *txt_, void (*fn)(const char *name, const char *value)) { - char *t, *txt, *value = NULL, c; + char *o, *t, *txt, *value = NULL, c; if (!txt_) return 0; - t = txt = strdup(txt_); + o = t = txt = strdup(txt_); if (t == NULL) { printf("Out of memory\n"); exit(1); @@ -318,5 +318,6 @@ int http_parse_querystring(const char *txt_, void (*fn)(const char *name, const } if (t!=txt) (*fn)(txt, value); + free(o); return 0; } -- cgit v1.2.3-24-g4f1b