diff --git a/src/utils_cgi.c b/src/utils_cgi.c
index 0b63daf6ae89a3103fbdaf2fa9f7f5eb6cc9d59a..475e14e4361427c394b946cce756dc13c35dd8ce 100644 (file)
--- 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) /* {{{ */
{
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];
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];
term_html = html_escape (param ("q"));
printf ("<form action=\"%s\" method=\"get\" id=\"search-form\">\n"
- " <input type=\"hidden\" name=\"action\" value=\"list_graphs\" />\n"
+ " <input type=\"hidden\" name=\"action\" value=\"search\" />\n"
" <input type=\"text\" name=\"q\" value=\"%s\" id=\"search-input\" />\n"
" <input type=\"submit\" name=\"button\" value=\"Search\" />\n"
"</form>\n",