Forráskód Böngészése

Ignore leading \r\n in multipart messages (see #470)

bel2125 8 éve
szülő
commit
5edb6dc09b
1 módosított fájl, 14 hozzáadás és 1 törlés
  1. 14 1
      src/handle_form.inl

+ 14 - 1
src/handle_form.inl

@@ -524,6 +524,7 @@ mg_handle_form_request(struct mg_connection *conn,
 		char *hbuf;
 		const char *content_disp, *hend, *fbeg, *fend, *nbeg, *nend;
 		const char *next;
+		unsigned part_no;
 
 		memset(&part_header, 0, sizeof(part_header));
 
@@ -576,7 +577,7 @@ mg_handle_form_request(struct mg_connection *conn,
 			return -1;
 		}
 
-		for (;;) {
+		for (part_no = 0;; part_no++) {
 			size_t towrite, n;
 			int get_block;
 
@@ -594,6 +595,18 @@ mg_handle_form_request(struct mg_connection *conn,
 				return -1;
 			}
 
+			if (part_no == 0) {
+				int d = 0;
+				while ((buf[d] != '-') && (d < buf_fill)) {
+					d++;
+				}
+				if ((d > 0) && (buf[d] == '-')) {
+					memmove(buf, buf + d, buf_fill - d);
+					buf_fill -= d;
+					buf[buf_fill] = 0;
+				}
+			}
+
 			if (buf[0] != '-' || buf[1] != '-') {
 				/* Malformed request */
 				return -1;