libmicrohttpd

HTTP/1.x server C library (MHD 1.x, stable)
Log | Files | Refs | Submodules | README | LICENSE

commit e724878002ace7dfbd53e4ecdc8093e16ef353fe
parent 6c2f3cf24f4a03b1eb3689d7913c11c7671c948f
Author: Evgeny Grin (Karlson2k) <k2k@narod.ru>
Date:   Sun, 12 Sep 2021 18:11:28 +0300

postprocessor: do not call memcpy() / memmove() with zero size

Diffstat:
Msrc/microhttpd/postprocessor.c | 18+++++++++++-------
1 file changed, 11 insertions(+), 7 deletions(-)

diff --git a/src/microhttpd/postprocessor.c b/src/microhttpd/postprocessor.c @@ -360,9 +360,10 @@ process_value (struct MHD_PostProcessor *pp, mhd_assert ( (NULL != value_start) || (NULL == value_end) ); mhd_assert ( (NULL == last_escape) || (NULL != value_start) ); /* move remaining input from previous round into processing buffer */ - memcpy (xbuf, - pp->xbuf, - pp->xbuf_pos); + if (0 != pp->xbuf_pos) + memcpy (xbuf, + pp->xbuf, + pp->xbuf_pos); xoff = pp->xbuf_pos; pp->xbuf_pos = 0; if ( (NULL != last_escape) && @@ -460,10 +461,13 @@ process_value (struct MHD_PostProcessor *pp, pp->value_offset += xoff; if (cut) break; - xbuf[delta] = '%'; /* undo 0-termination */ - memmove (xbuf, - &xbuf[delta], - clen); + if (0 != clen) + { + xbuf[delta] = '%'; /* undo 0-termination */ + memmove (xbuf, + &xbuf[delta], + clen); + } xoff = clen; } }