diff options
Diffstat (limited to 'src/daemon/postprocessor.c')
-rw-r--r-- | src/daemon/postprocessor.c | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/src/daemon/postprocessor.c b/src/daemon/postprocessor.c index e1fd6d9c..2b978384 100644 --- a/src/daemon/postprocessor.c +++ b/src/daemon/postprocessor.c | |||
@@ -323,10 +323,14 @@ post_process_urlencoded (struct MHD_PostProcessor *pp, | |||
323 | static int | 323 | static int |
324 | try_match_header (const char *prefix, char *line, char **suffix) | 324 | try_match_header (const char *prefix, char *line, char **suffix) |
325 | { | 325 | { |
326 | if (0 == strncasecmp (prefix, line, strlen (prefix))) | 326 | while(*line != 0) |
327 | { | 327 | { |
328 | *suffix = strdup (&line[strlen (prefix)]); | 328 | if (0 == strncasecmp (prefix, line, strlen (prefix))) |
329 | return MHD_YES; | 329 | { |
330 | *suffix = strdup (&line[strlen (prefix)]); | ||
331 | return MHD_YES; | ||
332 | } | ||
333 | ++line; | ||
330 | } | 334 | } |
331 | return MHD_NO; | 335 | return MHD_NO; |
332 | } | 336 | } |
@@ -467,7 +471,7 @@ post_process_multipart (struct MHD_PostProcessor *pp, | |||
467 | endquote++; | 471 | endquote++; |
468 | pp->content_disposition[endquote++] = '\0'; /* remove end-quote */ | 472 | pp->content_disposition[endquote++] = '\0'; /* remove end-quote */ |
469 | if ((MHD_YES | 473 | if ((MHD_YES |
470 | == try_match_header (" filename=", | 474 | == try_match_header (" filename=\"", |
471 | &pp->content_disposition[endquote], | 475 | &pp->content_disposition[endquote], |
472 | &pp->filename)) && | 476 | &pp->filename)) && |
473 | (pp->filename != NULL) && (0 < strlen (pp->filename))) | 477 | (pp->filename != NULL) && (0 < strlen (pp->filename))) |
@@ -525,6 +529,7 @@ post_process_multipart (struct MHD_PostProcessor *pp, | |||
525 | ioff += newline; | 529 | ioff += newline; |
526 | memmove (buf, &buf[ioff], pp->buffer_pos - ioff); | 530 | memmove (buf, &buf[ioff], pp->buffer_pos - ioff); |
527 | pp->buffer_pos -= ioff; | 531 | pp->buffer_pos -= ioff; |
532 | ioff = 0; | ||
528 | break; | 533 | break; |
529 | } | 534 | } |
530 | if (newline + blen + 4 < pp->buffer_pos) | 535 | if (newline + blen + 4 < pp->buffer_pos) |
@@ -576,8 +581,7 @@ post_process_multipart (struct MHD_PostProcessor *pp, | |||
576 | newline += 4; | 581 | newline += 4; |
577 | continue; | 582 | continue; |
578 | } | 583 | } |
579 | 584 | goto END; | |
580 | |||
581 | } | 585 | } |
582 | break; | 586 | break; |
583 | case PP_FinalDash: | 587 | case PP_FinalDash: |