Fix Defrag unit test.

This patch fixes the unittest for IPV4 defrag. The direct usage
of the pkt pointer in the Packet structure is not allowed. This
is fixed by using PacketCopyData function.
This modification was requiring some other fixes, like using
memcmp to compare data instead of an iteration on pkt pointer.
remotes/origin/master-1.1.x
Eric Leblond 14 years ago committed by Victor Julien
parent 324986694a
commit 2be09b0c86

@ -1550,10 +1550,9 @@ int DecodeIPV4DefragTest01(void)
PACKET_INITIALIZE(p);
FlowInitConfig(FLOW_QUIET);
p->pkt = pkt1;
p->pktlen = sizeof(pkt1);
DecodeIPV4(&tv, &dtv, p, pkt1 + ETHERNET_HEADER_LEN,
sizeof(pkt1) - ETHERNET_HEADER_LEN, &pq);
PacketCopyData(p, pkt1, sizeof(pkt1));
DecodeIPV4(&tv, &dtv, p, GET_PKT_DATA(p) + ETHERNET_HEADER_LEN,
GET_PKT_LEN(p) - ETHERNET_HEADER_LEN, &pq);
if (p->tcph != NULL) {
printf("tcp header should be NULL for ip fragment, but it isn't\n");
result = 0;
@ -1561,10 +1560,9 @@ int DecodeIPV4DefragTest01(void)
}
PACKET_DO_RECYCLE(p);
p->pkt = pkt2;
p->pktlen = sizeof(pkt2);
DecodeIPV4(&tv, &dtv, p, pkt2 + ETHERNET_HEADER_LEN,
sizeof(pkt2) - ETHERNET_HEADER_LEN, &pq);
PacketCopyData(p, pkt2, sizeof(pkt2));
DecodeIPV4(&tv, &dtv, p, GET_PKT_DATA(p) + ETHERNET_HEADER_LEN,
GET_PKT_LEN(p) - ETHERNET_HEADER_LEN, &pq);
if (p->tcph != NULL) {
printf("tcp header should be NULL for ip fragment, but it isn't\n");
result = 0;
@ -1572,10 +1570,9 @@ int DecodeIPV4DefragTest01(void)
}
PACKET_DO_RECYCLE(p);
p->pkt = pkt3;
p->pktlen = sizeof(pkt3);
DecodeIPV4(&tv, &dtv, p, pkt3 + ETHERNET_HEADER_LEN,
sizeof(pkt3) - ETHERNET_HEADER_LEN, &pq);
PacketCopyData(p, pkt3, sizeof(pkt3));
DecodeIPV4(&tv, &dtv, p, GET_PKT_DATA(p) + ETHERNET_HEADER_LEN,
GET_PKT_LEN(p) - ETHERNET_HEADER_LEN, &pq);
if (p->tcph != NULL) {
printf("tcp header should be NULL for ip fragment, but it isn't\n");
result = 0;
@ -1607,12 +1604,9 @@ int DecodeIPV4DefragTest01(void)
result = 0;
goto end;
}
size_t i;
for (i = 0; i < sizeof(tunnel_pkt); i++) {
if (tunnel_pkt[i] != tp->pkt[i]) {
if (memcmp(GET_PKT_DATA(tp), tunnel_pkt, sizeof(tunnel_pkt)) != 0) {
result = 0;
goto end;
}
}
PACKET_CLEANUP(p);
@ -1693,10 +1687,9 @@ int DecodeIPV4DefragTest02(void)
PACKET_INITIALIZE(p);
FlowInitConfig(FLOW_QUIET);
p->pkt = pkt1;
p->pktlen = sizeof(pkt1);
DecodeIPV4(&tv, &dtv, p, pkt1 + ETHERNET_HEADER_LEN,
sizeof(pkt1) - ETHERNET_HEADER_LEN, &pq);
PacketCopyData(p, pkt1, sizeof(pkt1));
DecodeIPV4(&tv, &dtv, p, GET_PKT_DATA(p) + ETHERNET_HEADER_LEN,
GET_PKT_LEN(p) - ETHERNET_HEADER_LEN, &pq);
if (p->tcph != NULL) {
printf("tcp header should be NULL for ip fragment, but it isn't\n");
result = 0;
@ -1704,10 +1697,9 @@ int DecodeIPV4DefragTest02(void)
}
PACKET_DO_RECYCLE(p);
p->pkt = pkt2;
p->pktlen = sizeof(pkt2);
DecodeIPV4(&tv, &dtv, p, pkt2 + ETHERNET_HEADER_LEN,
sizeof(pkt2) - ETHERNET_HEADER_LEN, &pq);
PacketCopyData(p, pkt2, sizeof(pkt2));
DecodeIPV4(&tv, &dtv, p, GET_PKT_DATA(p) + ETHERNET_HEADER_LEN,
GET_PKT_LEN(p) - ETHERNET_HEADER_LEN, &pq);
if (p->tcph != NULL) {
printf("tcp header should be NULL for ip fragment, but it isn't\n");
result = 0;
@ -1716,10 +1708,9 @@ int DecodeIPV4DefragTest02(void)
PACKET_DO_RECYCLE(p);
p->recursion_level = 3;
p->pkt = pkt3;
p->pktlen = sizeof(pkt3);
DecodeIPV4(&tv, &dtv, p, pkt3 + ETHERNET_HEADER_LEN,
sizeof(pkt3) - ETHERNET_HEADER_LEN, &pq);
PacketCopyData(p, pkt3, sizeof(pkt3));
DecodeIPV4(&tv, &dtv, p, GET_PKT_DATA(p) + ETHERNET_HEADER_LEN,
GET_PKT_LEN(p) - ETHERNET_HEADER_LEN, &pq);
if (p->tcph != NULL) {
printf("tcp header should be NULL for ip fragment, but it isn't\n");
result = 0;
@ -1751,12 +1742,10 @@ int DecodeIPV4DefragTest02(void)
result = 0;
goto end;
}
size_t i;
for (i = 0; i < sizeof(tunnel_pkt); i++) {
if (tunnel_pkt[i] != tp->pkt[i]) {
if (memcmp(GET_PKT_DATA(tp), tunnel_pkt, sizeof(tunnel_pkt)) != 0) {
result = 0;
goto end;
}
}
PACKET_CLEANUP(p);
@ -1833,10 +1822,9 @@ int DecodeIPV4DefragTest03(void)
PACKET_INITIALIZE(p);
FlowInitConfig(FLOW_QUIET);
p->pkt = pkt;
p->pktlen = sizeof(pkt);
DecodeIPV4(&tv, &dtv, p, pkt + ETHERNET_HEADER_LEN,
sizeof(pkt) - ETHERNET_HEADER_LEN, &pq);
PacketCopyData(p, pkt, sizeof(pkt));
DecodeIPV4(&tv, &dtv, p, GET_PKT_DATA(p) + ETHERNET_HEADER_LEN,
GET_PKT_LEN(p) - ETHERNET_HEADER_LEN, &pq);
if (p->tcph == NULL) {
printf("tcp header shouldn't be NULL, but it is\n");
result = 0;
@ -1850,10 +1838,9 @@ int DecodeIPV4DefragTest03(void)
f = p->flow;
PACKET_DO_RECYCLE(p);
p->pkt = pkt1;
p->pktlen = sizeof(pkt1);
DecodeIPV4(&tv, &dtv, p, pkt1 + ETHERNET_HEADER_LEN,
sizeof(pkt1) - ETHERNET_HEADER_LEN, &pq);
PacketCopyData(p, pkt1, sizeof(pkt1));
DecodeIPV4(&tv, &dtv, p, GET_PKT_DATA(p) + ETHERNET_HEADER_LEN,
GET_PKT_LEN(p) - ETHERNET_HEADER_LEN, &pq);
if (p->tcph != NULL) {
printf("tcp header should be NULL for ip fragment, but it isn't\n");
result = 0;
@ -1861,10 +1848,9 @@ int DecodeIPV4DefragTest03(void)
}
PACKET_DO_RECYCLE(p);
p->pkt = pkt2;
p->pktlen = sizeof(pkt2);
DecodeIPV4(&tv, &dtv, p, pkt2 + ETHERNET_HEADER_LEN,
sizeof(pkt2) - ETHERNET_HEADER_LEN, &pq);
PacketCopyData(p, pkt2, sizeof(pkt2));
DecodeIPV4(&tv, &dtv, p, GET_PKT_DATA(p) + ETHERNET_HEADER_LEN,
GET_PKT_LEN(p) - ETHERNET_HEADER_LEN, &pq);
if (p->tcph != NULL) {
printf("tcp header should be NULL for ip fragment, but it isn't\n");
result = 0;
@ -1872,10 +1858,9 @@ int DecodeIPV4DefragTest03(void)
}
PACKET_DO_RECYCLE(p);
p->pkt = pkt3;
p->pktlen = sizeof(pkt3);
DecodeIPV4(&tv, &dtv, p, pkt3 + ETHERNET_HEADER_LEN,
sizeof(pkt3) - ETHERNET_HEADER_LEN, &pq);
PacketCopyData(p, pkt3, sizeof(pkt3));
DecodeIPV4(&tv, &dtv, p, GET_PKT_DATA(p) + ETHERNET_HEADER_LEN,
GET_PKT_LEN(p) - ETHERNET_HEADER_LEN, &pq);
if (p->tcph != NULL) {
printf("tcp header should be NULL for ip fragment, but it isn't\n");
result = 0;
@ -1916,12 +1901,10 @@ int DecodeIPV4DefragTest03(void)
result = 0;
goto end;
}
size_t i;
for (i = 0; i < sizeof(tunnel_pkt); i++) {
if (tunnel_pkt[i] != tp->pkt[i]) {
if (memcmp(GET_PKT_DATA(tp), tunnel_pkt, sizeof(tunnel_pkt)) != 0) {
result = 0;
goto end;
}
}
PACKET_CLEANUP(p);

Loading…
Cancel
Save