From ab152a7eda8b0b3d18afcd23f202c60211dff638 Mon Sep 17 00:00:00 2001 From: Willy Tarreau Date: Thu, 31 May 2012 11:33:42 +0200 Subject: [PATCH] BUG/MAJOR: b_rew() must pass a signed offset to b_ptr() Commit 13e66da introduced b_rew() but passes -adv which is an unsigned quantity on 64-bit platforms, causing the buffer to advance in the wrong direction. No backport is needed. --- include/proto/buffers.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/proto/buffers.h b/include/proto/buffers.h index 66c6e6178..80f43ae4a 100644 --- a/include/proto/buffers.h +++ b/include/proto/buffers.h @@ -313,7 +313,7 @@ static inline void b_rew(struct buffer *b, unsigned int adv) b->o -= adv; if (!b->o && !b->pipe) b->flags |= BF_OUT_EMPTY; - b->p = b_ptr(b, -adv); + b->p = b_ptr(b, (int)-adv); } /* Return the amount of bytes that can be written into the buffer at once,