From cfbaf7f1ae0bd95a2a11a87efdd1d9fc24bacc78 Mon Sep 17 00:00:00 2001 From: Sergey Lyubka <valenok@gmail.com> Date: Wed, 8 May 2013 11:36:38 +0100 Subject: [PATCH] Expose mg_url_decode to the API --- mongoose.c | 13 ++++--------- mongoose.h | 8 ++++++++ 2 files changed, 12 insertions(+), 9 deletions(-) diff --git a/mongoose.c b/mongoose.c index 1b9362291..29709d993 100644 --- a/mongoose.c +++ b/mongoose.c @@ -1635,13 +1635,8 @@ int mg_printf(struct mg_connection *conn, const char *fmt, ...) { return mg_vprintf(conn, fmt, ap); } -// URL-decode input buffer into destination buffer. -// 0-terminate the destination buffer. Return the length of decoded data. -// form-url-encoded data differs from URI encoding in a way that it -// uses '+' as character for space, see RFC 1866 section 8.2.1 -// http://ftp.ics.uci.edu/pub/ietf/html/rfc1866.txt -static int url_decode(const char *src, int src_len, char *dst, - int dst_len, int is_form_url_encoded) { +int mg_url_decode(const char *src, int src_len, char *dst, + int dst_len, int is_form_url_encoded) { int i, j, a, b; #define HEXTOI(x) (isdigit(x) ? x - '0' : x - 'W') @@ -1698,7 +1693,7 @@ int mg_get_var(const char *data, size_t data_len, const char *name, assert(s >= p); // Decode variable into destination buffer - len = url_decode(p, (size_t)(s - p), dst, dst_len, 1); + len = mg_url_decode(p, (size_t)(s - p), dst, dst_len, 1); // Redirect error code from -1 to -2 (destination buffer too small). if (len == -1) { @@ -4396,7 +4391,7 @@ static void handle_request(struct mg_connection *conn) { * ((char *) conn->request_info.query_string++) = '\0'; } uri_len = (int) strlen(ri->uri); - url_decode(ri->uri, uri_len, (char *) ri->uri, uri_len + 1, 0); + mg_url_decode(ri->uri, uri_len, (char *) ri->uri, uri_len + 1, 0); remove_double_dots_and_double_slashes((char *) ri->uri); convert_uri_to_file_name(conn, path, sizeof(path), &file); conn->throttle = set_throttle(conn->ctx->config[THROTTLE], diff --git a/mongoose.h b/mongoose.h index d3ce2b7b8..20b03ad5b 100644 --- a/mongoose.h +++ b/mongoose.h @@ -333,6 +333,14 @@ const char *mg_get_builtin_mime_type(const char *file_name); // Return Mongoose version. const char *mg_version(void); +// URL-decode input buffer into destination buffer. +// 0-terminate the destination buffer. +// form-url-encoded data differs from URI encoding in a way that it +// uses '+' as character for space, see RFC 1866 section 8.2.1 +// http://ftp.ics.uci.edu/pub/ietf/html/rfc1866.txt +// Return: length of the decoded data, or -1 if dst buffer is too small. +int mg_url_decode(const char *src, int src_len, char *dst, + int dst_len, int is_form_url_encoded); // MD5 hash given strings. // Buffer 'buf' must be 33 bytes long. Varargs is a NULL terminated list of -- GitLab