From aacaeb373079bf774770c0f7f183873a6ce9bbb4 Mon Sep 17 00:00:00 2001 From: Jarno Rajahalme Date: Mon, 7 Mar 2016 11:00:44 -0800 Subject: [PATCH] ofpbuf: Fix setting of 'msg' in ofpbuf_clone_with_headroom() Commit 38876d31 fixed setting 'msg' when resizing an ofpbuf, but failed to fix the same issue in ofpbuf_clone_with_headroom(). Without this fix the newly cloned ofpbuf's 'msg', if non-NULL, will point to the buffer of the original ofpbuf. Signed-off-by: Jarno Rajahalme Acked-by: Joe Stringer --- lib/ofpbuf.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/lib/ofpbuf.c b/lib/ofpbuf.c index eab523e31..1a090ee9c 100644 --- a/lib/ofpbuf.c +++ b/lib/ofpbuf.c @@ -185,7 +185,11 @@ ofpbuf_clone_with_headroom(const struct ofpbuf *b, size_t headroom) new_buffer->header = (char *) new_buffer->data + header_offset; } - new_buffer->msg = b->msg; + if (b->msg) { + ptrdiff_t msg_offset = (char *) b->msg - (char *) b->data; + + new_buffer->msg = (char *) new_buffer->data + msg_offset; + } return new_buffer; } -- 2.20.1