diff options
| author | Xavier Del Campo Romero <xavi.dcr@tutanota.com> | 2023-09-09 02:22:00 +0200 |
|---|---|---|
| committer | Xavier Del Campo Romero <xavi.dcr@tutanota.com> | 2023-09-09 02:32:34 +0200 |
| commit | 5be3ffdd3bfd96b314509f6f03e211e309d0fef3 (patch) | |
| tree | 9ddf9be667b0d090f51bf4be6274041f23ac4731 | |
| parent | 1790e70e6131a4dc6d8b10f479f5927e8e60eb9f (diff) | |
http: Use null-terminated string for POST data
application/x-www-form-urlencoded-data is (or should be) always text, so
it is preferrable to define struct http_post member "data" as a null-
terminated string.
For applications already making this assumption, this change should now
remove the need for string duplication.
| -rw-r--r-- | http.c | 6 | ||||
| -rw-r--r-- | include/slweb/http.h | 4 |
2 files changed, 5 insertions, 5 deletions
@@ -1716,7 +1716,7 @@ static int read_body_to_mem(struct http_ctx *const h, bool *const close) struct ctx *const c = &h->ctx; struct post *const p = &c->post; - if (p->read >= sizeof h->line) + if (p->read >= sizeof h->line - 1) { fprintf(stderr, "%s: exceeded maximum length\n", __func__); return 1; @@ -1738,11 +1738,11 @@ static int read_body_to_mem(struct http_ctx *const h, bool *const close) .resource = c->resource, .u.post = { - .data = h->line, - .n = p->len + .data = h->line } }; + h->line[p->len] = '\0'; return send_payload(h, &pl); } diff --git a/include/slweb/http.h b/include/slweb/http.h index 7f5935a..a9c9751 100644 --- a/include/slweb/http.h +++ b/include/slweb/http.h @@ -25,8 +25,8 @@ struct http_payload struct http_post { bool expect_continue; - const void *data; - size_t n, nfiles, npairs; + const char *data; + size_t nfiles, npairs; const struct http_post_pair { |
