author | Lars Hjemli <hjemli@gmail.com> | 2010-08-29 15:40:51 (UTC) |
---|---|---|
committer | Lars Hjemli <hjemli@gmail.com> | 2010-08-29 15:40:51 (UTC) |
commit | 6940b23b9e4698ba466a4616e4de77b986560ad3 (patch) (side-by-side diff) | |
tree | 69dc61393b834474a8556d7b3969b327d223dc15 /html.c | |
parent | 6d7552bc072599313ef423d69156d824c075572a (diff) | |
parent | 48434780ca62fde84337ea1e797f642de5ca50d5 (diff) | |
download | cgit-6940b23b9e4698ba466a4616e4de77b986560ad3.zip cgit-6940b23b9e4698ba466a4616e4de77b986560ad3.tar.gz cgit-6940b23b9e4698ba466a4616e4de77b986560ad3.tar.bz2 |
Merge branch 'stable'
-rw-r--r-- | html.c | 9 |
1 files changed, 5 insertions, 4 deletions
@@ -259,37 +259,38 @@ int hextoint(char c) if (c >= 'a' && c <= 'f') return 10 + c - 'a'; else if (c >= 'A' && c <= 'F') return 10 + c - 'A'; else if (c >= '0' && c <= '9') return c - '0'; else return -1; } char *convert_query_hexchar(char *txt) { - int d1, d2; - if (strlen(txt) < 3) { + int d1, d2, n; + n = strlen(txt); + if (n < 3) { *txt = '\0'; return txt-1; } d1 = hextoint(*(txt+1)); d2 = hextoint(*(txt+2)); if (d1<0 || d2<0) { - strcpy(txt, txt+3); + memmove(txt, txt+3, n-3); return txt-1; } else { *txt = d1 * 16 + d2; - strcpy(txt+1, txt+3); + memmove(txt+1, txt+3, n-2); return txt; } } int http_parse_querystring(const char *txt_, void (*fn)(const char *name, const char *value)) { char *t, *txt, *value = NULL, c; if (!txt_) return 0; t = txt = strdup(txt_); |