From 886dcb3f5d7291fdf379fb9440eca8662492e08d Mon Sep 17 00:00:00 2001 From: Sergey Lyubka <valenok@gmail.com> Date: Sat, 23 Nov 2013 10:25:20 +0000 Subject: [PATCH] get_request_len() moved to string.c --- build/src/mongoose.c | 25 ---------------------- build/src/string.c | 25 ++++++++++++++++++++++ mongoose.c | 50 ++++++++++++++++++++++---------------------- 3 files changed, 50 insertions(+), 50 deletions(-) diff --git a/build/src/mongoose.c b/build/src/mongoose.c index 44ee4a25a..51bb9180e 100644 --- a/build/src/mongoose.c +++ b/build/src/mongoose.c @@ -445,31 +445,6 @@ static int convert_uri_to_file_name(struct mg_connection *conn, char *buf, return 0; } -// Check whether full request is buffered. Return: -// -1 if request is malformed -// 0 if request is not yet fully buffered -// >0 actual request length, including last \r\n\r\n -static int get_request_len(const char *buf, int buf_len) { - int i; - - for (i = 0; i < buf_len; i++) { - // Control characters are not allowed but >=128 is. - // Abort scan as soon as one malformed character is found; - // don't let subsequent \r\n\r\n win us over anyhow - if (!isprint(* (const unsigned char *) &buf[i]) && buf[i] != '\r' && - buf[i] != '\n' && * (const unsigned char *) &buf[i] < 128) { - return -1; - } else if (buf[i] == '\n' && i + 1 < buf_len && buf[i + 1] == '\n') { - return i + 2; - } else if (buf[i] == '\n' && i + 2 < buf_len && buf[i + 1] == '\r' && - buf[i + 2] == '\n') { - return i + 3; - } - } - - return 0; -} - // Send len bytes from the opened file to the client. static void send_file_data(struct mg_connection *conn, FILE *fp, int64_t offset, int64_t len) { diff --git a/build/src/string.c b/build/src/string.c index 184349308..9a9ffef83 100644 --- a/build/src/string.c +++ b/build/src/string.c @@ -285,3 +285,28 @@ void mg_url_encode(const char *src, char *dst, size_t dst_len) { *dst = '\0'; } + +// Check whether full request is buffered. Return: +// -1 if request is malformed +// 0 if request is not yet fully buffered +// >0 actual request length, including last \r\n\r\n +static int get_request_len(const char *buf, int buf_len) { + int i; + + for (i = 0; i < buf_len; i++) { + // Control characters are not allowed but >=128 is. + // Abort scan as soon as one malformed character is found; + // don't let subsequent \r\n\r\n win us over anyhow + if (!isprint(* (const unsigned char *) &buf[i]) && buf[i] != '\r' && + buf[i] != '\n' && * (const unsigned char *) &buf[i] < 128) { + return -1; + } else if (buf[i] == '\n' && i + 1 < buf_len && buf[i + 1] == '\n') { + return i + 2; + } else if (buf[i] == '\n' && i + 2 < buf_len && buf[i + 1] == '\r' && + buf[i + 2] == '\n') { + return i + 3; + } + } + + return 0; +} diff --git a/mongoose.c b/mongoose.c index a3e558221..a67ea4e8f 100644 --- a/mongoose.c +++ b/mongoose.c @@ -766,6 +766,31 @@ void mg_url_encode(const char *src, char *dst, size_t dst_len) { *dst = '\0'; } +// Check whether full request is buffered. Return: +// -1 if request is malformed +// 0 if request is not yet fully buffered +// >0 actual request length, including last \r\n\r\n +static int get_request_len(const char *buf, int buf_len) { + int i; + + for (i = 0; i < buf_len; i++) { + // Control characters are not allowed but >=128 is. + // Abort scan as soon as one malformed character is found; + // don't let subsequent \r\n\r\n win us over anyhow + if (!isprint(* (const unsigned char *) &buf[i]) && buf[i] != '\r' && + buf[i] != '\n' && * (const unsigned char *) &buf[i] < 128) { + return -1; + } else if (buf[i] == '\n' && i + 1 < buf_len && buf[i + 1] == '\n') { + return i + 2; + } else if (buf[i] == '\n' && i + 2 < buf_len && buf[i + 1] == '\r' && + buf[i + 2] == '\n') { + return i + 3; + } + } + + return 0; +} + static const char *month_names[] = { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" @@ -2989,31 +3014,6 @@ static int convert_uri_to_file_name(struct mg_connection *conn, char *buf, return 0; } -// Check whether full request is buffered. Return: -// -1 if request is malformed -// 0 if request is not yet fully buffered -// >0 actual request length, including last \r\n\r\n -static int get_request_len(const char *buf, int buf_len) { - int i; - - for (i = 0; i < buf_len; i++) { - // Control characters are not allowed but >=128 is. - // Abort scan as soon as one malformed character is found; - // don't let subsequent \r\n\r\n win us over anyhow - if (!isprint(* (const unsigned char *) &buf[i]) && buf[i] != '\r' && - buf[i] != '\n' && * (const unsigned char *) &buf[i] < 128) { - return -1; - } else if (buf[i] == '\n' && i + 1 < buf_len && buf[i + 1] == '\n') { - return i + 2; - } else if (buf[i] == '\n' && i + 2 < buf_len && buf[i + 1] == '\r' && - buf[i + 2] == '\n') { - return i + 3; - } - } - - return 0; -} - // Send len bytes from the opened file to the client. static void send_file_data(struct mg_connection *conn, FILE *fp, int64_t offset, int64_t len) { -- GitLab