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 <ja...@ovn.org>
---
 lib/ofpbuf.c | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/lib/ofpbuf.c b/lib/ofpbuf.c
index eab523e..1a090ee 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.1.4

_______________________________________________
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev

Reply via email to