diff --git a/platform/include/sce.h b/platform/include/sce.h index 1185cbf..5dbb1de 100644 --- a/platform/include/sce.h +++ b/platform/include/sce.h @@ -59,7 +59,6 @@ struct metadata struct metadata *metadata_new(); int metadata_is_empty(struct metadata *meta); void metadata_deep_copy(struct metadata *dst, struct metadata *src); -void metadata_shadow_copy(struct metadata *dst, struct metadata *src); void metadata_free(struct metadata *meta); /****************************************************************************** diff --git a/platform/src/sce.cpp b/platform/src/sce.cpp index be31fe7..0d25511 100644 --- a/platform/src/sce.cpp +++ b/platform/src/sce.cpp @@ -32,22 +32,8 @@ void metadata_deep_copy(struct metadata *dst, struct metadata *src) { dst->write_ref++; dst->session_id = src->session_id; - dst->raw_data = strndup(src->raw_data, src->raw_len); - dst->raw_len = src->raw_len; - dst->l7offset = src->l7offset; - dst->is_e2i_dir = src->is_e2i_dir; - dst->is_ctrl_pkt = src->is_ctrl_pkt; - dst->is_decrypted = src->is_decrypted; - - sids_copy(&dst->sids, &src->sids); - route_ctx_copy(&dst->route_ctx, &src->route_ctx); -} - -void metadata_shadow_copy(struct metadata *dst, struct metadata *src) -{ - dst->write_ref++; - dst->session_id = src->session_id; - dst->raw_data = src->raw_data; + dst->raw_data = (char *)calloc(src->raw_len + 1, sizeof(char)); + memcpy(dst->raw_data, src->raw_data, src->raw_len); dst->raw_len = src->raw_len; dst->l7offset = src->l7offset; dst->is_e2i_dir = src->is_e2i_dir;