commit c4f682f8559b184d64b04aece37d3d2980859832 from: Omar Polo date: Wed Jan 27 15:05:16 2021 UTC trim_req_iri: set error string commit - 72bbed91365401d14492dac426401476986c84cf commit + c4f682f8559b184d64b04aece37d3d2980859832 blob - 862792f230182cda45b185648eac56aabb4efe95 blob + f11ffbba64549c8948b4d2562dafd5dd78235ea5 --- gmid.h +++ gmid.h @@ -243,7 +243,7 @@ char *utf8_nth(char*, size_t); /* iri.c */ int parse_iri(char*, struct iri*, const char**); -int trim_req_iri(char*); +int trim_req_iri(char*, const char **); /* puny.c */ int puny_decode(const char*, char*, size_t); blob - beba36872d89965202880fa3660a2cb55a581e10 blob + f7cb627c73213f73bcf164b9009909dc8953b4b4 --- iri.c +++ iri.c @@ -364,12 +364,14 @@ parse_iri(char *iri, struct iri *ret, const char **err } int -trim_req_iri(char *iri) +trim_req_iri(char *iri, const char **err) { char *i; - if ((i = strstr(iri, "\r\n")) == NULL) + if ((i = strstr(iri, "\r\n")) == NULL) { + *err = "missing CRLF"; return 0; + } *i = '\0'; return 1; } blob - 1383974840e1981cd7812d1bcb55f61586468d89 blob + d0e5e4bd22f891050cb5a74b19f084005badb2db --- server.c +++ server.c @@ -308,8 +308,10 @@ handle_open_conn(struct pollfd *fds, struct client *c) return; } - if (!trim_req_iri(c->req) || !parse_iri(c->req, &c->iri, &parse_err)) { - start_reply(fds, c, BAD_REQUEST, parse_err); + if (!trim_req_iri(c->req, &parse_err) + || !parse_iri(c->req, &c->iri, &parse_err)) { + LOGI(c, "iri parse error: %s", parse_err); + start_reply(fds, c, BAD_REQUEST, "invalid request"); return; }