fix gtpu_test memcpy param overlap bug

This commit is contained in:
Francisco 2021-01-29 15:29:57 +00:00 committed by Francisco Paisana
parent b9271f26da
commit ee3d8a5c77
1 changed files with 12 additions and 5 deletions

View File

@ -66,7 +66,7 @@ public:
int GTPU_PORT = 2152;
srslte::unique_byte_buffer_t encode_gtpu_packet(srslte::span<uint8_t> data,
srslte::unique_byte_buffer_t encode_ipv4_packet(srslte::span<uint8_t> data,
uint32_t teid,
const struct sockaddr_in& src_sockaddr_in,
const struct sockaddr_in& dest_sockaddr_in)
@ -83,6 +83,16 @@ srslte::unique_byte_buffer_t encode_gtpu_packet(srslte::span<uint8_t> data,
memcpy(pdu->msg + pdu->N_bytes, data.data(), data.size());
pdu->N_bytes += data.size();
return pdu;
}
srslte::unique_byte_buffer_t encode_gtpu_packet(srslte::span<uint8_t> data,
uint32_t teid,
const struct sockaddr_in& src_sockaddr_in,
const struct sockaddr_in& dest_sockaddr_in)
{
srslte::unique_byte_buffer_t pdu = encode_ipv4_packet(data, teid, src_sockaddr_in, dest_sockaddr_in);
// header
srslte::gtpu_header_t header;
header.flags = GTPU_FLAGS_VERSION_V1 | GTPU_FLAGS_GTP_PROTOCOL;
@ -146,10 +156,7 @@ int test_gtpu_direct_tunneling()
pdu->N_bytes = 10;
for (size_t sn = 6; sn < 10; ++sn) {
std::vector<uint8_t> data(10, sn);
pdu = encode_gtpu_packet(data, senb_teid_in, sgw_sockaddr, senb_sockaddr);
// remove gtpu header
pdu->N_bytes -= 8u;
memcpy(pdu->msg, pdu->msg + 8u, pdu->N_bytes);
pdu = encode_ipv4_packet(data, senb_teid_in, sgw_sockaddr, senb_sockaddr);
senb_pdcp.push_buffered_pdu(sn, std::move(pdu));
}