From: Thierry FOURNIER Date: Fri, 4 Oct 2013 14:27:27 +0000 (+0200) Subject: MINOR: http: change url_decode to return the size of the decoded string. X-Git-Tag: v1.5-dev20~256 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=5068d96ac184e45f8aa3f28dd11701cffca60b87;p=thirdparty%2Fhaproxy.git MINOR: http: change url_decode to return the size of the decoded string. Currently url_decode returns 1 or 0 depending on whether it could decode the string or not. For some future use cases, it will be needed to get the decoded string length after a successful decoding, so let's make it return that value, and fall back to a negative one in case of error. --- diff --git a/src/proto_http.c b/src/proto_http.c index 0e9e429c57..831eeeb7bd 100644 --- a/src/proto_http.c +++ b/src/proto_http.c @@ -2861,7 +2861,7 @@ int http_process_req_stat_post(struct stream_interface *si, struct http_txn *txn *value++ = '\0'; } - if (!url_decode(key) || !url_decode(value)) + if (url_decode(key) < 0 || url_decode(value) < 0) break; /* Now we can check the key to see what to do */ diff --git a/src/standard.c b/src/standard.c index cd60a94ed1..b519f5716c 100644 --- a/src/standard.c +++ b/src/standard.c @@ -1047,13 +1047,13 @@ char *encode_string(char *start, char *stop, /* Decode an URL-encoded string in-place. The resulting string might * be shorter. If some forbidden characters are found, the conversion is - * aborted, the string is truncated before the issue and non-zero is returned, - * otherwise the operation returns non-zero indicating success. + * aborted, the string is truncated before the issue and a negative value is + * returned, otherwise the operation returns the length of the decoded string. */ int url_decode(char *string) { char *in, *out; - int ret = 0; + int ret = -1; in = string; out = string; @@ -1074,7 +1074,7 @@ int url_decode(char *string) } in++; } - ret = 1; /* success */ + ret = out - string; /* success */ end: *out = 0; return ret;