]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
BUG/MINOR: http: fix incorrect header value offset in replace-hdr/replace-value
authorWilly Tarreau <w@1wt.eu>
Thu, 29 Jan 2015 13:01:34 +0000 (14:01 +0100)
committerWilly Tarreau <w@1wt.eu>
Thu, 29 Jan 2015 13:01:34 +0000 (14:01 +0100)
The two http-req/http-resp actions "replace-hdr" and "replace-value" were
expecting exactly one space after the colon, which is wrong. It was causing
the first char not to be seen/modified when no space was present, and empty
headers not to be modified either. Instead of using name->len+2, we must use
ctx->val which points to the first character of the value even if there is
no value.

This fix must be backported into 1.5.

src/proto_http.c

index 3c8747841fcbda30ccc9eb47d0b5e8666f5c84f1..b8f552015440b7b4e79838b4da23ccf51ed1a7be 100644 (file)
@@ -3250,7 +3250,7 @@ static int http_transform_header(struct session* s, struct http_msg *msg, const
        while (http_find_full_header2(name, name_len, buf, idx, ctx)) {
                struct hdr_idx_elem *hdr = idx->v + ctx->idx;
                int delta;
-               char* val = (char*)ctx->line + name_len + 2;
+               char* val = (char*)ctx->line + ctx->val;
                char* val_end = (char*)ctx->line + hdr->len;
                char* reg_dst_buf;
                uint reg_dst_buf_size;