From fde843f63e95f0f052763aba27fba95ff4a2ae0a Mon Sep 17 00:00:00 2001 From: Glenn Strauss Date: Tue, 17 May 2016 15:33:27 -0400 Subject: [PATCH] [mod_ssi] fix parse of tag across buf boundary (fixes #2732) thx fbrosson x-ref: "char copied to wrong place in SSI output" https://redmine.lighttpd.net/issues/2732 --- src/mod_ssi.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/mod_ssi.c b/src/mod_ssi.c index ffba44ab..4dcfdd1a 100644 --- a/src/mod_ssi.c +++ b/src/mod_ssi.c @@ -1227,16 +1227,16 @@ static void mod_ssi_read_fd(server *srv, connection *con, plugin_data *p, int fd offset = pretag = 0; break; } else { /* incomplete directive "" */ - memmove(buf, buf+prelen, offset-prelen); - offset = pretag = 0; + memmove(buf, buf+prelen, (offset -= prelen)); + pretag = 0; break; } } else if (prelen + 1 == offset || 0 == memcmp(s+1, "!--", offset - prelen - 1)) { if (prelen - pretag && !p->if_is_false) { chunkqueue_append_mem(con->write_queue, buf+pretag, prelen-pretag); } - memcpy(buf, buf+prelen, offset-prelen); - offset = pretag = 0; + memcpy(buf, buf+prelen, (offset -= prelen)); + pretag = 0; break; } /* loop to look for next '<' */