forked from mirrors/kore
do not http_argument_urldecode for multipart data.
This commit is contained in:
parent
754ba47cc4
commit
566fefd031
15
src/http.c
15
src/http.c
|
@ -116,7 +116,8 @@ static const char http_field_content[] = {
|
||||||
static int http_body_recv(struct netbuf *);
|
static int http_body_recv(struct netbuf *);
|
||||||
static void http_error_response(struct connection *, int);
|
static void http_error_response(struct connection *, int);
|
||||||
static void http_write_response_cookie(struct http_cookie *);
|
static void http_write_response_cookie(struct http_cookie *);
|
||||||
static void http_argument_add(struct http_request *, char *, char *, int);
|
static void http_argument_add(struct http_request *, char *, char *,
|
||||||
|
int, int);
|
||||||
static void http_response_normal(struct http_request *,
|
static void http_response_normal(struct http_request *,
|
||||||
struct connection *, int, const void *, size_t);
|
struct connection *, int, const void *, size_t);
|
||||||
static void multipart_add_field(struct http_request *, struct kore_buf *,
|
static void multipart_add_field(struct http_request *, struct kore_buf *,
|
||||||
|
@ -1118,7 +1119,7 @@ http_populate_post(struct http_request *req)
|
||||||
for (i = 0; i < v; i++) {
|
for (i = 0; i < v; i++) {
|
||||||
kore_split_string(args[i], "=", val, 3);
|
kore_split_string(args[i], "=", val, 3);
|
||||||
if (val[0] != NULL && val[1] != NULL)
|
if (val[0] != NULL && val[1] != NULL)
|
||||||
http_argument_add(req, val[0], val[1], 0);
|
http_argument_add(req, val[0], val[1], 0, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
out:
|
out:
|
||||||
|
@ -1140,7 +1141,7 @@ http_populate_qs(struct http_request *req)
|
||||||
for (i = 0; i < v; i++) {
|
for (i = 0; i < v; i++) {
|
||||||
kore_split_string(args[i], "=", val, 3);
|
kore_split_string(args[i], "=", val, 3);
|
||||||
if (val[0] != NULL && val[1] != NULL)
|
if (val[0] != NULL && val[1] != NULL)
|
||||||
http_argument_add(req, val[0], val[1], 1);
|
http_argument_add(req, val[0], val[1], 1, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
kore_free(query);
|
kore_free(query);
|
||||||
|
@ -1675,7 +1676,7 @@ multipart_add_field(struct http_request *req, struct kore_buf *in,
|
||||||
|
|
||||||
data->offset -= 2;
|
data->offset -= 2;
|
||||||
string = kore_buf_stringify(data, NULL);
|
string = kore_buf_stringify(data, NULL);
|
||||||
http_argument_add(req, name, string, 0);
|
http_argument_add(req, name, string, 0, 0);
|
||||||
kore_buf_free(data);
|
kore_buf_free(data);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1706,11 +1707,13 @@ multipart_file_add(struct http_request *req, struct kore_buf *in,
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
http_argument_add(struct http_request *req, char *name, char *value, int qs)
|
http_argument_add(struct http_request *req, char *name, char *value, int qs,
|
||||||
|
int decode)
|
||||||
{
|
{
|
||||||
struct http_arg *q;
|
struct http_arg *q;
|
||||||
struct kore_handler_params *p;
|
struct kore_handler_params *p;
|
||||||
|
|
||||||
|
if (decode)
|
||||||
http_argument_urldecode(name);
|
http_argument_urldecode(name);
|
||||||
|
|
||||||
TAILQ_FOREACH(p, &(req->hdlr->params), list) {
|
TAILQ_FOREACH(p, &(req->hdlr->params), list) {
|
||||||
|
@ -1725,7 +1728,9 @@ http_argument_add(struct http_request *req, char *name, char *value, int qs)
|
||||||
if (strcmp(p->name, name))
|
if (strcmp(p->name, name))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
if (decode)
|
||||||
http_argument_urldecode(value);
|
http_argument_urldecode(value);
|
||||||
|
|
||||||
if (!kore_validator_check(req, p->validator, value))
|
if (!kore_validator_check(req, p->validator, value))
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue