decode/mpls/tests: improve pkt handling; cleanups

pull/8085/head
Victor Julien 4 years ago
parent 0f7fe2a4c3
commit edf93ae5b6

@ -139,84 +139,74 @@ end:
static int DecodeMPLSTestHeaderTooSmall(void)
{
int ret = 1;
/* A packet that is too small to have a complete MPLS header. */
uint8_t pkt[] = {
0x00, 0x00, 0x11
};
Packet *p = PacketGetFromAlloc();
if (unlikely(p == NULL)) {
return 0;
}
FAIL_IF_NULL(p);
ThreadVars tv;
DecodeThreadVars dtv;
memset(&dtv, 0, sizeof(DecodeThreadVars));
memset(&tv, 0, sizeof(ThreadVars));
DecodeMPLS(&tv, &dtv, p, pkt, sizeof(pkt));
FAIL_IF(!ENGINE_ISSET_EVENT(p, MPLS_HEADER_TOO_SMALL));
if (!ENGINE_ISSET_EVENT(p, MPLS_HEADER_TOO_SMALL)) {
ret = 0;
}
SCFree(p);
return ret;
PacketFree(p);
PASS;
}
static int DecodeMPLSTestPacketTooSmall(void)
{
ThreadVars tv;
DecodeThreadVars dtv;
memset(&dtv, 0, sizeof(DecodeThreadVars));
memset(&tv, 0, sizeof(ThreadVars));
Packet *p0 = SCCalloc(1, SIZE_OF_PACKET);
memset(p0, 0, SIZE_OF_PACKET);
Packet *p = PacketGetFromAlloc();
FAIL_IF_NULL(p);
uint8_t pkt0[] = { 0x00, 0x01, 0x51, 0xff };
DecodeMPLS(&tv, &dtv, p0, pkt0, sizeof(pkt0));
FAIL_IF_NOT(ENGINE_ISSET_EVENT(p0, MPLS_PKT_TOO_SMALL));
SCFree(p0);
DecodeMPLS(&tv, &dtv, p, pkt0, sizeof(pkt0));
FAIL_IF_NOT(ENGINE_ISSET_EVENT(p, MPLS_PKT_TOO_SMALL));
PacketFree(p);
Packet *p1 = SCCalloc(1, SIZE_OF_PACKET);
FAIL_IF_NULL(p1);
p = PacketGetFromAlloc();
FAIL_IF_NULL(p);
uint8_t pkt1[] = { 0x00, 0x01, 0x51, 0xff, 0x45 };
DecodeMPLS(&tv, &dtv, p1, pkt1, sizeof(pkt1));
FAIL_IF_NOT(ENGINE_ISSET_EVENT(p1, MPLS_PKT_TOO_SMALL));
SCFree(p1);
DecodeMPLS(&tv, &dtv, p, pkt1, sizeof(pkt1));
FAIL_IF_NOT(ENGINE_ISSET_EVENT(p, MPLS_PKT_TOO_SMALL));
PacketFree(p);
Packet *p2 = SCCalloc(1, SIZE_OF_PACKET);
FAIL_IF_NULL(p2);
p = PacketGetFromAlloc();
FAIL_IF_NULL(p);
uint8_t pkt2[] = { 0x00, 0x01, 0x51, 0xff, 0x45, 0x01 };
DecodeMPLS(&tv, &dtv, p2, pkt2, sizeof(pkt2));
FAIL_IF_NOT(ENGINE_ISSET_EVENT(p2, MPLS_PKT_TOO_SMALL));
SCFree(p2);
DecodeMPLS(&tv, &dtv, p, pkt2, sizeof(pkt2));
FAIL_IF_NOT(ENGINE_ISSET_EVENT(p, MPLS_PKT_TOO_SMALL));
PacketFree(p);
Packet *p3 = SCCalloc(1, SIZE_OF_PACKET);
FAIL_IF_NULL(p3);
p = PacketGetFromAlloc();
FAIL_IF_NULL(p);
uint8_t pkt3[] = { 0x00, 0x01, 0x51, 0xff, 0x45, 0x01, 0x02 };
DecodeMPLS(&tv, &dtv, p3, pkt3, sizeof(pkt3));
FAIL_IF_NOT(ENGINE_ISSET_EVENT(p3, MPLS_PKT_TOO_SMALL));
SCFree(p3);
DecodeMPLS(&tv, &dtv, p, pkt3, sizeof(pkt3));
FAIL_IF_NOT(ENGINE_ISSET_EVENT(p, MPLS_PKT_TOO_SMALL));
PacketFree(p);
// This should not create a too small event is it has one more byte
// than required.
Packet *p4 = SCCalloc(1, SIZE_OF_PACKET);
FAIL_IF_NULL(p4);
p = PacketGetFromAlloc();
FAIL_IF_NULL(p);
uint8_t pkt4[] = { 0x00, 0x01, 0x51, 0xff, 0x45, 0x01, 0x02, 0x03 };
DecodeMPLS(&tv, &dtv, p4, pkt4, sizeof(pkt4));
FAIL_IF(ENGINE_ISSET_EVENT(p4, MPLS_PKT_TOO_SMALL));
SCFree(p4);
DecodeMPLS(&tv, &dtv, p, pkt4, sizeof(pkt4));
FAIL_IF(ENGINE_ISSET_EVENT(p, MPLS_PKT_TOO_SMALL));
PacketFree(p);
PASS;
}
static int DecodeMPLSTestBadLabelRouterAlert(void)
{
int ret = 1;
uint8_t pkt[] = {
0x00, 0x00, 0x11, 0xff, 0x45, 0x00, 0x00, 0x64,
0x00, 0x0a, 0x00, 0x00, 0xff, 0x01, 0xa5, 0x6a,
@ -234,9 +224,7 @@ static int DecodeMPLSTestBadLabelRouterAlert(void)
};
Packet *p = PacketGetFromAlloc();
if (unlikely(p == NULL)) {
return 0;
}
FAIL_IF_NULL(p);
ThreadVars tv;
DecodeThreadVars dtv;
@ -244,18 +232,14 @@ static int DecodeMPLSTestBadLabelRouterAlert(void)
memset(&tv, 0, sizeof(ThreadVars));
DecodeMPLS(&tv, &dtv, p, pkt, sizeof(pkt));
FAIL_IF(!ENGINE_ISSET_EVENT(p, MPLS_BAD_LABEL_ROUTER_ALERT));
if (!ENGINE_ISSET_EVENT(p, MPLS_BAD_LABEL_ROUTER_ALERT)) {
ret = 0;
}
SCFree(p);
return ret;
PacketFree(p);
PASS;
}
static int DecodeMPLSTestBadLabelImplicitNull(void)
{
int ret = 1;
uint8_t pkt[] = {
0x00, 0x00, 0x31, 0xff, 0x45, 0x00, 0x00, 0x64,
0x00, 0x0a, 0x00, 0x00, 0xff, 0x01, 0xa5, 0x6a,
@ -273,28 +257,21 @@ static int DecodeMPLSTestBadLabelImplicitNull(void)
};
Packet *p = PacketGetFromAlloc();
if (unlikely(p == NULL)) {
return 0;
}
FAIL_IF_NULL(p);
ThreadVars tv;
DecodeThreadVars dtv;
memset(&dtv, 0, sizeof(DecodeThreadVars));
memset(&tv, 0, sizeof(ThreadVars));
DecodeMPLS(&tv, &dtv, p, pkt, sizeof(pkt));
FAIL_IF(!ENGINE_ISSET_EVENT(p, MPLS_BAD_LABEL_IMPLICIT_NULL));
if (!ENGINE_ISSET_EVENT(p, MPLS_BAD_LABEL_IMPLICIT_NULL)) {
ret = 0;
}
SCFree(p);
return ret;
PacketFree(p);
PASS;
}
static int DecodeMPLSTestBadLabelReserved(void)
{
int ret = 1;
uint8_t pkt[] = {
0x00, 0x00, 0x51, 0xff, 0x45, 0x00, 0x00, 0x64,
0x00, 0x0a, 0x00, 0x00, 0xff, 0x01, 0xa5, 0x6a,
@ -312,29 +289,21 @@ static int DecodeMPLSTestBadLabelReserved(void)
};
Packet *p = PacketGetFromAlloc();
if (unlikely(p == NULL)) {
return 0;
}
FAIL_IF_NULL(p);
ThreadVars tv;
DecodeThreadVars dtv;
memset(&dtv, 0, sizeof(DecodeThreadVars));
memset(&tv, 0, sizeof(ThreadVars));
DecodeMPLS(&tv, &dtv, p, pkt, sizeof(pkt));
FAIL_IF(!ENGINE_ISSET_EVENT(p, MPLS_BAD_LABEL_RESERVED));
if (!ENGINE_ISSET_EVENT(p, MPLS_BAD_LABEL_RESERVED)) {
ret = 0;
}
SCFree(p);
return ret;
PacketFree(p);
PASS;
}
static int DecodeMPLSTestUnknownPayloadType(void)
{
int ret = 1;
/* Valid label: 21.
* Unknown payload type: 1.
*/
@ -355,23 +324,17 @@ static int DecodeMPLSTestUnknownPayloadType(void)
};
Packet *p = PacketGetFromAlloc();
if (unlikely(p == NULL)) {
return 0;
}
FAIL_IF_NULL(p);
ThreadVars tv;
DecodeThreadVars dtv;
memset(&dtv, 0, sizeof(DecodeThreadVars));
memset(&tv, 0, sizeof(ThreadVars));
DecodeMPLS(&tv, &dtv, p, pkt, sizeof(pkt));
FAIL_IF(!ENGINE_ISSET_EVENT(p, MPLS_UNKNOWN_PAYLOAD_TYPE));
if (!ENGINE_ISSET_EVENT(p, MPLS_UNKNOWN_PAYLOAD_TYPE)) {
ret = 0;
}
SCFree(p);
return ret;
PacketFree(p);
PASS;
}
#endif /* UNITTESTS */

Loading…
Cancel
Save