remaining_headers = MAX_HTTP_REQUEST_HEADERS;
for (;;) {
+ size_t len;
char *name;
char *value;
ast_http_error(ser, 400, "Bad Request", "Timeout");
return -1;
}
+ len = strlen(header_line);
+ if (!len || header_line[len - 1] != '\n') {
+ /* We didn't get a full line */
+ ast_http_error(ser, 400, "Bad Request",
+ (len == sizeof(header_line) - 1) ? "Header line too long" : "Timeout");
+ return -1;
+ }
/* Trim trailing characters */
ast_trim_blanks(header_line);
struct http_worker_private_data *request;
enum ast_http_method http_method = AST_HTTP_UNKNOWN;
int res;
+ size_t len;
char request_line[MAX_HTTP_LINE_LENGTH];
if (!fgets(request_line, sizeof(request_line), ser->f)) {
request = ser->private_data;
http_request_tracking_init(request);
+ len = strlen(request_line);
+ if (!len || request_line[len - 1] != '\n') {
+ /* We didn't get a full line */
+ ast_http_error(ser, 400, "Bad Request",
+ (len == sizeof(request_line) - 1) ? "Request line too long" : "Timeout");
+ return -1;
+ }
+
/* Get method */
method = ast_skip_blanks(request_line);
uri = ast_skip_nonblanks(method);