]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
BUG/MEDIUM: log: use function "escape_string" instead of "escape_chunk"
authorDragan Dosen <ddosen@haproxy.com>
Mon, 25 Jul 2016 09:35:02 +0000 (11:35 +0200)
committerWilly Tarreau <w@1wt.eu>
Tue, 26 Jul 2016 13:25:32 +0000 (15:25 +0200)
In function lf_text_len(), we used escape_chunk() to escape special
characters. There could be a problem if len is greater than the real src
string length (zero-terminated), eg. when calling lf_text_len() from
lf_text().

src/log.c

index 99c89f34d4ec8b7f359603e7f706a4ff6edaf704..302e14a9da083d5dda4b083406fb64f418065294 100644 (file)
--- a/src/log.c
+++ b/src/log.c
@@ -830,19 +830,17 @@ char *lf_text_len(char *dst, const char *src, size_t len, size_t size, struct lo
        }
 
        if (src && len) {
+               if (++len > size)
+                       len = size;
                if (node->options & LOG_OPT_ESC) {
-                       struct chunk chunk;
                        char *ret;
 
-                       chunk_initlen(&chunk, (char *)src, 0, len);
-                       ret = escape_chunk(dst, dst + size, '\\', rfc5424_escape_map, &chunk);
+                       ret = escape_string(dst, dst + len, '\\', rfc5424_escape_map, src);
                        if (ret == NULL || *ret != '\0')
                                return NULL;
                        len = ret - dst;
                }
                else {
-                       if (++len > size)
-                               len = size;
                        len = strlcpy2(dst, src, len);
                }