X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Futils_cgi.c;h=f4d3e52df1c6cb40b4848183b2d9315c26bbfee9;hb=1091c65227a740830654605f0360a0381171301c;hp=0b63daf6ae89a3103fbdaf2fa9f7f5eb6cc9d59a;hpb=8fca1d79d089342400381c3bd8e1c717d34ce9b1;p=collection4.git diff --git a/src/utils_cgi.c b/src/utils_cgi.c index 0b63daf..f4d3e52 100644 --- a/src/utils_cgi.c +++ b/src/utils_cgi.c @@ -104,6 +104,7 @@ static char *uri_unescape_copy (char *dest, const char *src, size_t n) /* {{{ */ *dest_ptr = *src_ptr; } + n--; src_ptr++; dest_ptr++; *dest_ptr = 0; @@ -111,7 +112,7 @@ static char *uri_unescape_copy (char *dest, const char *src, size_t n) /* {{{ */ assert (*dest_ptr == 0); return (dest); -} /* }}} char *uri_unescape */ +} /* }}} char *uri_unescape_copy */ static char *uri_unescape (const char *string) /* {{{ */ { @@ -431,10 +432,17 @@ char *uri_escape_copy (char *dest, const char *src, size_t n) /* {{{ */ return (dest); } else if ((((unsigned char) src[in]) < 32) - || (src[in] == '&') - || (src[in] == ';') - || (src[in] == '?') - || (src[in] == '/') + || (src[in] == ' ') + /* RFC 3986, gen-delims */ + || (src[in] == ':') || (src[in] == '/') || (src[in] == '?') + || (src[in] == '#') || (src[in] == '[') || (src[in] == ']') + || (src[in] == '@') + /* RFC 3986, sub-delims */ + || (src[in] == '!') || (src[in] == '$') || (src[in] == '&') + || (src[in] == '(') || (src[in] == ')') || (src[in] == '*') + || (src[in] == '+') || (src[in] == ',') || (src[in] == ';') + || (src[in] == '=') || (src[in] == '\'') + /* 8-bit data */ || (((unsigned char) src[in]) >= 128)) { char esc[4]; @@ -461,6 +469,16 @@ char *uri_escape_copy (char *dest, const char *src, size_t n) /* {{{ */ return (dest); } /* }}} char *uri_escape_copy */ +char *uri_escape_buffer (char *buffer, size_t buffer_size) /* {{{ */ +{ + char temp[buffer_size]; + + uri_escape_copy (temp, buffer, buffer_size); + memcpy (buffer, temp, buffer_size); + + return (&buffer[0]); +} /* }}} char *uri_escape_buffer */ + char *uri_escape (const char *string) /* {{{ */ { char buffer[4096]; @@ -669,10 +687,12 @@ int html_print_page (const char *title, /* {{{ */ printf ("\n" " \n" " %s\n" - " \n" - " \n" + " \n" - " \n" " \n", title_html); @@ -726,7 +746,7 @@ int html_print_page (const char *title, /* {{{ */ printf ("\n" " \n" " \n" - "
"PACKAGE_STRING"
\n" + "
"PACKAGE_STRING"
\n" " \n" "\n"); @@ -739,7 +759,7 @@ int html_print_logo (__attribute__((unused)) void *user_data) /* {{{ */ printf ("\n" "

C4

\n" "
collection 4
\n" - "
\n"); + "\n", script_name ()); return (0); } /* }}} int html_print_search_box */ @@ -751,7 +771,7 @@ int html_print_search_box (__attribute__((unused)) void *user_data) /* {{{ */ term_html = html_escape (param ("q")); printf ("
\n" - " \n" + " \n" " \n" " \n" "
\n",