aboutsummaryrefslogtreecommitdiff
path: root/src/microhttpd/postprocessor.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/microhttpd/postprocessor.c')
-rw-r--r--src/microhttpd/postprocessor.c18
1 files changed, 11 insertions, 7 deletions
diff --git a/src/microhttpd/postprocessor.c b/src/microhttpd/postprocessor.c
index abe7b437..076de337 100644
--- a/src/microhttpd/postprocessor.c
+++ b/src/microhttpd/postprocessor.c
@@ -360,9 +360,10 @@ process_value (struct MHD_PostProcessor *pp,
360 mhd_assert ( (NULL != value_start) || (NULL == value_end) ); 360 mhd_assert ( (NULL != value_start) || (NULL == value_end) );
361 mhd_assert ( (NULL == last_escape) || (NULL != value_start) ); 361 mhd_assert ( (NULL == last_escape) || (NULL != value_start) );
362 /* move remaining input from previous round into processing buffer */ 362 /* move remaining input from previous round into processing buffer */
363 memcpy (xbuf, 363 if (0 != pp->xbuf_pos)
364 pp->xbuf, 364 memcpy (xbuf,
365 pp->xbuf_pos); 365 pp->xbuf,
366 pp->xbuf_pos);
366 xoff = pp->xbuf_pos; 367 xoff = pp->xbuf_pos;
367 pp->xbuf_pos = 0; 368 pp->xbuf_pos = 0;
368 if ( (NULL != last_escape) && 369 if ( (NULL != last_escape) &&
@@ -460,10 +461,13 @@ process_value (struct MHD_PostProcessor *pp,
460 pp->value_offset += xoff; 461 pp->value_offset += xoff;
461 if (cut) 462 if (cut)
462 break; 463 break;
463 xbuf[delta] = '%'; /* undo 0-termination */ 464 if (0 != clen)
464 memmove (xbuf, 465 {
465 &xbuf[delta], 466 xbuf[delta] = '%'; /* undo 0-termination */
466 clen); 467 memmove (xbuf,
468 &xbuf[delta],
469 clen);
470 }
467 xoff = clen; 471 xoff = clen;
468 } 472 }
469} 473}