From 3a7a4cd581b8140fa4c5f2e41d4b6ae5fdc81b4a Mon Sep 17 00:00:00 2001 From: Philippe Antoine Date: Sat, 27 Jan 2024 22:13:37 +0100 Subject: [PATCH] http: code simplification removing function unused parameter tx_id in HTPFileOpen And using directly tx instead of its id in HTPFileOpenWithRange --- src/app-layer-htp-file.c | 13 ++++--------- src/app-layer-htp-file.h | 6 +++--- src/app-layer-htp.c | 12 ++++++------ 3 files changed, 13 insertions(+), 18 deletions(-) diff --git a/src/app-layer-htp-file.c b/src/app-layer-htp-file.c index 7b3ba62edc..b2c8776a71 100644 --- a/src/app-layer-htp-file.c +++ b/src/app-layer-htp-file.c @@ -48,7 +48,7 @@ extern StreamingBufferConfig htp_sbcfg; * \retval -2 not handling files on this flow */ int HTPFileOpen(HtpState *s, HtpTxUserData *tx, const uint8_t *filename, uint16_t filename_len, - const uint8_t *data, uint32_t data_len, uint64_t txid, uint8_t direction) + const uint8_t *data, uint32_t data_len, uint8_t direction) { int retval = 0; uint16_t flags = 0; @@ -147,8 +147,8 @@ static int HTPParseAndCheckContentRange( * \retval -1 error */ int HTPFileOpenWithRange(HtpState *s, HtpTxUserData *txud, const uint8_t *filename, - uint16_t filename_len, const uint8_t *data, uint32_t data_len, uint64_t txid, - bstr *rawvalue, HtpTxUserData *htud) + uint16_t filename_len, const uint8_t *data, uint32_t data_len, htp_tx_t *tx, bstr *rawvalue, + HtpTxUserData *htud) { SCEnter(); uint16_t flags; @@ -159,7 +159,7 @@ int HTPFileOpenWithRange(HtpState *s, HtpTxUserData *txud, const uint8_t *filena HTTPContentRange crparsed; if (HTPParseAndCheckContentRange(rawvalue, &crparsed, s, htud) != 0) { // range is invalid, fall back to classic open - return HTPFileOpen(s, txud, filename, filename_len, data, data_len, txid, STREAM_TOCLIENT); + return HTPFileOpen(s, txud, filename, filename_len, data, data_len, STREAM_TOCLIENT); } flags = FileFlowToFlags(s->f, STREAM_TOCLIENT); FileContainer *files = &txud->files_tc; @@ -179,11 +179,6 @@ int HTPFileOpenWithRange(HtpState *s, HtpTxUserData *txud, const uint8_t *filena } // Then, we will try to handle reassembly of different ranges of the same file - // TODO have the caller pass directly the tx - htp_tx_t *tx = htp_list_get(s->conn->transactions, txid - s->tx_freed); - if (!tx) { - SCReturnInt(-1); - } uint8_t *keyurl; uint32_t keylen; if (tx->request_hostname != NULL) { diff --git a/src/app-layer-htp-file.h b/src/app-layer-htp-file.h index 4b682bc037..b0436df22f 100644 --- a/src/app-layer-htp-file.h +++ b/src/app-layer-htp-file.h @@ -27,10 +27,10 @@ #include "app-layer-htp.h" -int HTPFileOpen(HtpState *, HtpTxUserData *, const uint8_t *, uint16_t, const uint8_t *, uint32_t, - uint64_t, uint8_t); +int HTPFileOpen( + HtpState *, HtpTxUserData *, const uint8_t *, uint16_t, const uint8_t *, uint32_t, uint8_t); int HTPFileOpenWithRange(HtpState *, HtpTxUserData *, const uint8_t *, uint16_t, const uint8_t *, - uint32_t, uint64_t, bstr *rawvalue, HtpTxUserData *htud); + uint32_t, htp_tx_t *, bstr *rawvalue, HtpTxUserData *htud); bool HTPFileCloseHandleRange(const StreamingBufferConfig *sbcfg, FileContainer *, const uint16_t, HttpRangeContainerBlock *, const uint8_t *, uint32_t); int HTPFileStoreChunk(HtpState *, HtpTxUserData *, const uint8_t *, uint32_t, uint8_t); diff --git a/src/app-layer-htp.c b/src/app-layer-htp.c index 1d654c2c7c..f8e6e9e8de 100644 --- a/src/app-layer-htp.c +++ b/src/app-layer-htp.c @@ -1571,7 +1571,7 @@ static int HtpRequestBodyHandleMultipart(HtpState *hstate, HtpTxUserData *htud, #endif result = HTPFileOpen(hstate, htud, filename, filename_len, filedata, filedata_len, - HtpGetActiveRequestTxID(hstate), STREAM_TOSERVER); + STREAM_TOSERVER); if (result == -1) { goto end; } else if (result == -2) { @@ -1633,7 +1633,7 @@ static int HtpRequestBodyHandleMultipart(HtpState *hstate, HtpTxUserData *htud, filedata_len = 0; } result = HTPFileOpen(hstate, htud, filename, filename_len, filedata, - filedata_len, HtpGetActiveRequestTxID(hstate), STREAM_TOSERVER); + filedata_len, STREAM_TOSERVER); if (result == -1) { goto end; } else if (result == -2) { @@ -1648,7 +1648,7 @@ static int HtpRequestBodyHandleMultipart(HtpState *hstate, HtpTxUserData *htud, SCLogDebug("filedata_len %u", filedata_len); result = HTPFileOpen(hstate, htud, filename, filename_len, filedata, - filedata_len, HtpGetActiveRequestTxID(hstate), STREAM_TOSERVER); + filedata_len, STREAM_TOSERVER); if (result == -1) { goto end; } else if (result == -2) { @@ -1725,7 +1725,7 @@ static int HtpRequestBodyHandlePOSTorPUT(HtpState *hstate, HtpTxUserData *htud, HTPSetEvent(hstate, htud, STREAM_TOSERVER, HTTP_DECODER_EVENT_FILE_NAME_TOO_LONG); } result = HTPFileOpen(hstate, htud, filename, (uint16_t)filename_len, data, data_len, - HtpGetActiveRequestTxID(hstate), STREAM_TOSERVER); + STREAM_TOSERVER); if (result == -1) { goto end; } else if (result == -2) { @@ -1802,10 +1802,10 @@ static int HtpResponseBodyHandle(HtpState *hstate, HtpTxUserData *htud, } if (h_content_range != NULL) { result = HTPFileOpenWithRange(hstate, htud, filename, (uint16_t)filename_len, data, - data_len, HtpGetActiveResponseTxID(hstate), h_content_range->value, htud); + data_len, tx, h_content_range->value, htud); } else { result = HTPFileOpen(hstate, htud, filename, (uint16_t)filename_len, data, data_len, - HtpGetActiveResponseTxID(hstate), STREAM_TOCLIENT); + STREAM_TOCLIENT); } SCLogDebug("result %d", result); if (result == -1) {