]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
[BUG] buffers: wrong size calculation for displaced data
authorWilly Tarreau <w@1wt.eu>
Mon, 28 Dec 2009 17:37:54 +0000 (18:37 +0100)
committerWilly Tarreau <w@1wt.eu>
Mon, 28 Dec 2009 17:37:54 +0000 (18:37 +0100)
This error was triggered by requests not starting at the beginning
of the buffer. It cannot happen with earlier versions though it might
be a good idea to fix it anyway.

src/buffers.c

index 939b03d047ad161ae0fc442c8ed0047b3cf46f2a..f9b5aa46bb5c3ab38658357a0a28755483006b4f 100644 (file)
@@ -197,7 +197,7 @@ int buffer_replace(struct buffer *b, char *pos, char *end, const char *str)
                return 0;  /* no space left */
 
        /* first, protect the end of the buffer */
-       memmove(end + delta, end, b->data + b->l - end);
+       memmove(end + delta, end, b->r - end);
 
        /* now, copy str over pos */
        memcpy(pos, str,len);
@@ -237,7 +237,7 @@ int buffer_replace2(struct buffer *b, char *pos, char *end, const char *str, int
        }
 
        /* first, protect the end of the buffer */
-       memmove(end + delta, end, b->data + b->l - end);
+       memmove(end + delta, end, b->r - end);
 
        /* now, copy str over pos */
        if (len)
@@ -278,7 +278,7 @@ int buffer_insert_line2(struct buffer *b, char *pos, const char *str, int len)
                return 0;  /* no space left */
 
        /* first, protect the end of the buffer */
-       memmove(pos + delta, pos, b->data + b->l - pos);
+       memmove(pos + delta, pos, b->r - pos);
 
        /* now, copy str over pos */
        if (len && str) {