buffers: fix vlib_buffer_copy
authorDamjan Marion <[email protected]>
Thu, 1 Dec 2016 10:59:33 +0000 (11:59 +0100)
committerOle Trøan <[email protected]>
Fri, 2 Dec 2016 14:15:02 +0000 (14:15 +0000)
memcpy should happen after current_data is set.

Change-Id: I838f61b54d15a8bb55d54f770f47fb4d58d071cb
Signed-off-by: Damjan Marion <[email protected]>
vlib/vlib/buffer_funcs.h

index 60e0e28..cfe568e 100644 (file)
@@ -426,14 +426,14 @@ vlib_buffer_copy (vlib_main_t * vm, vlib_buffer_t * b)
   /* 1st segment */
   s = b;
   fd = d = vlib_get_buffer (vm, new_buffers[0]);
-  clib_memcpy (vlib_buffer_get_current (d),
-              vlib_buffer_get_current (s), s->current_length);
   d->current_data = s->current_data;
   d->current_length = s->current_length;
   d->flags = s->flags & flag_mask;
   d->total_length_not_including_first_buffer =
     s->total_length_not_including_first_buffer;
   clib_memcpy (d->opaque, s->opaque, sizeof (s->opaque));
+  clib_memcpy (vlib_buffer_get_current (d),
+              vlib_buffer_get_current (s), s->current_length);
 
   /* next segments */
   for (i = 1; i < n_buffers; i++)