fix segfault when fetching a packet by buffer_id

In save_packet(), we store the buffer in packet_in_buffers, duplicate_buffer() does memory copy for us. Unfortunately,
the content of user_data is a set of pointers which points to buffer address. So copying the address will point to old buffer, which will be freed. Fetching by buffer_id and access to user_data causes segmentation fault.