author | Jonathon Mah <me@JonathonMah.com> | 2011-04-10 11:10:03 (UTC) |
---|---|---|
committer | Lars Hjemli <hjemli@gmail.com> | 2011-05-23 20:58:06 (UTC) |
commit | 74152744f0d56c2d0211728206a218a33df41a5d (patch) (unidiff) | |
tree | 0231bb2979e22dc92f573b863bc81c404c49a468 | |
parent | facca560d903351ddf1b8a41faafcd1f76de5c7c (diff) | |
download | cgit-74152744f0d56c2d0211728206a218a33df41a5d.zip cgit-74152744f0d56c2d0211728206a218a33df41a5d.tar.gz cgit-74152744f0d56c2d0211728206a218a33df41a5d.tar.bz2 |
Fix escaping of paths with spaces
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
-rw-r--r-- | html.c | 10 |
1 files changed, 6 insertions, 4 deletions
@@ -15,13 +15,13 @@ | |||
15 | 15 | ||
16 | /* Percent-encoding of each character, except: a-zA-Z0-9!$()*,./:;@- */ | 16 | /* Percent-encoding of each character, except: a-zA-Z0-9!$()*,./:;@- */ |
17 | static const char* url_escape_table[256] = { | 17 | static const char* url_escape_table[256] = { |
18 | "%00", "%01", "%02", "%03", "%04", "%05", "%06", "%07", "%08", "%09", | 18 | "%00", "%01", "%02", "%03", "%04", "%05", "%06", "%07", "%08", "%09", |
19 | "%0a", "%0b", "%0c", "%0d", "%0e", "%0f", "%10", "%11", "%12", "%13", | 19 | "%0a", "%0b", "%0c", "%0d", "%0e", "%0f", "%10", "%11", "%12", "%13", |
20 | "%14", "%15", "%16", "%17", "%18", "%19", "%1a", "%1b", "%1c", "%1d", | 20 | "%14", "%15", "%16", "%17", "%18", "%19", "%1a", "%1b", "%1c", "%1d", |
21 | "%1e", "%1f", "+", 0, "%22", "%23", 0, "%25", "%26", "%27", 0, 0, 0, | 21 | "%1e", "%1f", "%20", 0, "%22", "%23", 0, "%25", "%26", "%27", 0, 0, 0, |
22 | "%2b", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "%3c", "%3d", | 22 | "%2b", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "%3c", "%3d", |
23 | "%3e", "%3f", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, | 23 | "%3e", "%3f", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, |
24 | 0, 0, 0, 0, 0, 0, 0, 0, 0, "%5c", 0, "%5e", 0, "%60", 0, 0, 0, 0, 0, | 24 | 0, 0, 0, 0, 0, 0, 0, 0, 0, "%5c", 0, "%5e", 0, "%60", 0, 0, 0, 0, 0, |
25 | 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "%7b", | 25 | 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "%7b", |
26 | "%7c", "%7d", 0, "%7f", "%80", "%81", "%82", "%83", "%84", "%85", | 26 | "%7c", "%7d", 0, "%7f", "%80", "%81", "%82", "%83", "%84", "%85", |
27 | "%86", "%87", "%88", "%89", "%8a", "%8b", "%8c", "%8d", "%8e", "%8f", | 27 | "%86", "%87", "%88", "%89", "%8a", "%8b", "%8c", "%8d", "%8e", "%8f", |
@@ -159,15 +159,15 @@ void html_attr(const char *txt) | |||
159 | void html_url_path(const char *txt) | 159 | void html_url_path(const char *txt) |
160 | { | 160 | { |
161 | const char *t = txt; | 161 | const char *t = txt; |
162 | while(t && *t){ | 162 | while(t && *t){ |
163 | int c = *t; | 163 | int c = *t; |
164 | const char *e = url_escape_table[c]; | 164 | const char *e = url_escape_table[c]; |
165 | if (e && c!='+' && c!='&' && c!='+') { | 165 | if (e && c!='+' && c!='&') { |
166 | html_raw(txt, t - txt); | 166 | html_raw(txt, t - txt); |
167 | html_raw(e, 3); | 167 | html(e); |
168 | txt = t+1; | 168 | txt = t+1; |
169 | } | 169 | } |
170 | t++; | 170 | t++; |
171 | } | 171 | } |
172 | if (t!=txt) | 172 | if (t!=txt) |
173 | html(txt); | 173 | html(txt); |
@@ -176,15 +176,17 @@ void html_url_path(const char *txt) | |||
176 | void html_url_arg(const char *txt) | 176 | void html_url_arg(const char *txt) |
177 | { | 177 | { |
178 | const char *t = txt; | 178 | const char *t = txt; |
179 | while(t && *t){ | 179 | while(t && *t){ |
180 | int c = *t; | 180 | int c = *t; |
181 | const char *e = url_escape_table[c]; | 181 | const char *e = url_escape_table[c]; |
182 | if (c == ' ') | ||
183 | e = "+"; | ||
182 | if (e) { | 184 | if (e) { |
183 | html_raw(txt, t - txt); | 185 | html_raw(txt, t - txt); |
184 | html_raw(e, strlen(e)); | 186 | html(e); |
185 | txt = t+1; | 187 | txt = t+1; |
186 | } | 188 | } |
187 | t++; | 189 | t++; |
188 | } | 190 | } |
189 | if (t!=txt) | 191 | if (t!=txt) |
190 | html(txt); | 192 | html(txt); |