From 292c218a48a7e8eb57499f0f74f683ea4d111c4e Mon Sep 17 00:00:00 2001 From: Philippe Antoine Date: Tue, 29 Oct 2024 11:00:15 +0100 Subject: [PATCH] app-layer: remove ALPROTO_TEST and tests These tests purpose seems to have been lost. Registering a alproto with a parser function that always fails, and just testing that AppLayerParserParse returned -1... We would get the same result without registering a parser function, or using ALPROTO_FAILED as argument to AppLayerParserParse The comment says "Test the deallocation of app layer parser memory on occurrence of error in the parsing process." but I do not see how this is tested. --- src/app-layer-parser.c | 160 ----------------------------------------- src/app-layer-parser.h | 2 - src/app-layer-protos.c | 3 - src/app-layer-protos.h | 3 - 4 files changed, 168 deletions(-) diff --git a/src/app-layer-parser.c b/src/app-layer-parser.c index 48a6e47c2d..d1cacc572f 100644 --- a/src/app-layer-parser.c +++ b/src/app-layer-parser.c @@ -1768,60 +1768,6 @@ uint16_t AppLayerParserStateIssetFlag(AppLayerParserState *pstate, uint16_t flag #ifdef UNITTESTS #include "util-unittest-helper.h" -static AppLayerParserCtx alp_ctx_backup_unittest; - -typedef struct TestState_ { - uint8_t test; -} TestState; - -/** - * \brief Test parser function to test the memory deallocation of app layer - * parser of occurrence of an error. - */ -static AppLayerResult TestProtocolParser(Flow *f, void *test_state, AppLayerParserState *pstate, - StreamSlice stream_slice, void *local_data) -{ - SCEnter(); - SCReturnStruct(APP_LAYER_ERROR); -} - -/** \brief Function to allocates the Test protocol state memory - */ -static void *TestProtocolStateAlloc(void *orig_state, AppProto proto_orig) -{ - SCEnter(); - void *s = SCMalloc(sizeof(TestState)); - if (unlikely(s == NULL)) - goto end; - memset(s, 0, sizeof(TestState)); - end: - SCReturnPtr(s, "TestState"); -} - -/** \brief Function to free the Test Protocol state memory - */ -static void TestProtocolStateFree(void *s) -{ - SCFree(s); -} - -static uint64_t TestGetTxCnt(void *state) -{ - /* single tx */ - return 1; -} - -static void TestStateTransactionFree(void *state, uint64_t tx_id) -{ - /* do nothing */ -} - -static void *TestGetTx(void *state, uint64_t tx_id) -{ - TestState *test_state = (TestState *)state; - return test_state; -} - void AppLayerParserRegisterProtocolUnittests(uint8_t ipproto, AppProto alproto, void (*RegisterUnittests)(void)) { @@ -1831,109 +1777,6 @@ void AppLayerParserRegisterProtocolUnittests(uint8_t ipproto, AppProto alproto, SCReturn; } -void AppLayerParserBackupParserTable(void) -{ - SCEnter(); - alp_ctx_backup_unittest = alp_ctx; - memset(&alp_ctx, 0, sizeof(alp_ctx)); - SCReturn; -} - -void AppLayerParserRestoreParserTable(void) -{ - SCEnter(); - alp_ctx = alp_ctx_backup_unittest; - memset(&alp_ctx_backup_unittest, 0, sizeof(alp_ctx_backup_unittest)); - SCReturn; -} - -/** - * \test Test the deallocation of app layer parser memory on occurrence of - * error in the parsing process. - */ -static int AppLayerParserTest01(void) -{ - AppLayerParserBackupParserTable(); - - Flow *f = NULL; - uint8_t testbuf[] = { 0x11 }; - uint32_t testlen = sizeof(testbuf); - TcpSession ssn; - AppLayerParserThreadCtx *alp_tctx = AppLayerParserThreadCtxAlloc(); - - memset(&ssn, 0, sizeof(ssn)); - - /* Register the Test protocol state and parser functions */ - AppLayerParserRegisterParser(IPPROTO_TCP, ALPROTO_TEST, STREAM_TOSERVER, TestProtocolParser); - AppLayerParserRegisterStateFuncs(IPPROTO_TCP, ALPROTO_TEST, - TestProtocolStateAlloc, TestProtocolStateFree); - AppLayerParserRegisterTxFreeFunc(IPPROTO_TCP, ALPROTO_TEST, TestStateTransactionFree); - AppLayerParserRegisterGetTx(IPPROTO_TCP, ALPROTO_TEST, TestGetTx); - AppLayerParserRegisterGetTxCnt(IPPROTO_TCP, ALPROTO_TEST, TestGetTxCnt); - - f = UTHBuildFlow(AF_INET, "1.2.3.4", "4.3.2.1", 20, 40); - FAIL_IF_NULL(f); - f->protoctx = &ssn; - f->alproto = ALPROTO_TEST; - f->proto = IPPROTO_TCP; - - StreamTcpInitConfig(true); - - int r = AppLayerParserParse(NULL, alp_tctx, f, ALPROTO_TEST, - STREAM_TOSERVER | STREAM_EOF, testbuf, - testlen); - FAIL_IF(r != -1); - - FAIL_IF(!(ssn.flags & STREAMTCP_FLAG_APP_LAYER_DISABLED)); - - AppLayerParserRestoreParserTable(); - StreamTcpFreeConfig(true); - UTHFreeFlow(f); - PASS; -} - -/** - * \test Test the deallocation of app layer parser memory on occurrence of - * error in the parsing process for UDP. - */ -static int AppLayerParserTest02(void) -{ - AppLayerParserBackupParserTable(); - - Flow *f = NULL; - uint8_t testbuf[] = { 0x11 }; - uint32_t testlen = sizeof(testbuf); - AppLayerParserThreadCtx *alp_tctx = AppLayerParserThreadCtxAlloc(); - - /* Register the Test protocol state and parser functions */ - AppLayerParserRegisterParser(IPPROTO_UDP, ALPROTO_TEST, STREAM_TOSERVER, - TestProtocolParser); - AppLayerParserRegisterStateFuncs(IPPROTO_UDP, ALPROTO_TEST, - TestProtocolStateAlloc, TestProtocolStateFree); - AppLayerParserRegisterTxFreeFunc(IPPROTO_UDP, ALPROTO_TEST, TestStateTransactionFree); - AppLayerParserRegisterGetTx(IPPROTO_UDP, ALPROTO_TEST, TestGetTx); - AppLayerParserRegisterGetTxCnt(IPPROTO_UDP, ALPROTO_TEST, TestGetTxCnt); - - f = UTHBuildFlow(AF_INET, "1.2.3.4", "4.3.2.1", 20, 40); - FAIL_IF_NULL(f); - f->alproto = ALPROTO_TEST; - f->proto = IPPROTO_UDP; - f->protomap = FlowGetProtoMapping(f->proto); - - StreamTcpInitConfig(true); - - int r = AppLayerParserParse(NULL, alp_tctx, f, ALPROTO_TEST, - STREAM_TOSERVER | STREAM_EOF, testbuf, - testlen); - FAIL_IF(r != -1); - - AppLayerParserRestoreParserTable(); - StreamTcpFreeConfig(true); - UTHFreeFlow(f); - PASS; -} - - void AppLayerParserRegisterUnittests(void) { SCEnter(); @@ -1951,9 +1794,6 @@ void AppLayerParserRegisterUnittests(void) } } - UtRegisterTest("AppLayerParserTest01", AppLayerParserTest01); - UtRegisterTest("AppLayerParserTest02", AppLayerParserTest02); - SCReturn; } diff --git a/src/app-layer-parser.h b/src/app-layer-parser.h index 64fc70205e..58ad433356 100644 --- a/src/app-layer-parser.h +++ b/src/app-layer-parser.h @@ -315,8 +315,6 @@ void AppLayerParserTransactionsCleanup(Flow *f, const uint8_t pkt_dir); void AppLayerParserRegisterProtocolUnittests(uint8_t ipproto, AppProto alproto, void (*RegisterUnittests)(void)); void AppLayerParserRegisterUnittests(void); -void AppLayerParserBackupParserTable(void); -void AppLayerParserRestoreParserTable(void); void UTHAppLayerParserStateGetIds(void *ptr, uint64_t *i1, uint64_t *i2, uint64_t *log, uint64_t *min); #endif diff --git a/src/app-layer-protos.c b/src/app-layer-protos.c index e82d8688f5..03736554c7 100644 --- a/src/app-layer-protos.c +++ b/src/app-layer-protos.c @@ -70,9 +70,6 @@ const AppProtoStringTuple AppProtoStrings[ALPROTO_MAX] = { { ALPROTO_POP3, "pop3" }, { ALPROTO_HTTP, "http" }, { ALPROTO_FAILED, "failed" }, -#ifdef UNITTESTS - { ALPROTO_TEST, "test" }, -#endif }; const char *AppProtoToString(AppProto alproto) diff --git a/src/app-layer-protos.h b/src/app-layer-protos.h index 348203ac2f..10b8959772 100644 --- a/src/app-layer-protos.h +++ b/src/app-layer-protos.h @@ -72,9 +72,6 @@ enum AppProtoEnum { /* used by the probing parser when alproto detection fails * permanently for that particular stream */ ALPROTO_FAILED, -#ifdef UNITTESTS - ALPROTO_TEST, -#endif /* UNITESTS */ /* keep last */ ALPROTO_MAX, }; -- 2.47.2