]> git.ipfire.org Git - thirdparty/suricata.git/commitdiff
file: define own variable instead of PATH_MAX
authorPhilippe Antoine <contact@catenacyber.fr>
Wed, 8 Dec 2021 20:14:54 +0000 (21:14 +0100)
committerVictor Julien <vjulien@oisf.net>
Thu, 13 Jan 2022 07:58:11 +0000 (08:58 +0100)
to be used for maximum size of file names,
and not depend on the OS

src/app-layer-ftp.c
src/app-layer-htp.c
src/app-layer-smtp.c
src/util-file.h

index 8b9859293107e9dbf88ff2001d284750d3d2ce35..654d4654a656e58cf4c3f189232bf045c7f1cf0a 100644 (file)
@@ -638,11 +638,11 @@ static AppLayerResult FTPParseRequest(Flow *f, void *ftp_state, AppLayerParserSt
                     data->DFree = FtpTransferCmdFree;
                     /*
                      * Min size has been checked in FTPParseRequestCommand
-                     * PATH_MAX includes the null
+                     * SC_FILENAME_MAX includes the null
                      */
-                    uint32_t file_name_len = MIN(PATH_MAX - 1, state->current_line_len - 5);
-#if PATH_MAX > UINT16_MAX
-#error PATH_MAX is greater than UINT16_MAX
+                    uint32_t file_name_len = MIN(SC_FILENAME_MAX - 1, state->current_line_len - 5);
+#if SC_FILENAME_MAX > UINT16_MAX
+#error SC_FILENAME_MAX is greater than UINT16_MAX
 #endif
                     data->file_name = FTPCalloc(file_name_len + 1, sizeof(char));
                     if (data->file_name == NULL) {
index 0d19166260a1d7df8c0f55fe3beca1c9c689dacd..af954b04f75b20ca28bc6703b12931952bbc7562 100644 (file)
@@ -1630,9 +1630,9 @@ static int HtpRequestBodyHandlePOSTorPUT(HtpState *hstate, HtpTxUserData *htud,
         }
 
         if (filename != NULL) {
-            if (filename_len > PATH_MAX) {
+            if (filename_len > SC_FILENAME_MAX) {
                 // explicitly truncate the file name if too long
-                filename_len = PATH_MAX;
+                filename_len = SC_FILENAME_MAX;
                 HTPSetEvent(hstate, htud, STREAM_TOSERVER, HTTP_DECODER_EVENT_FILE_NAME_TOO_LONG);
             }
             result = HTPFileOpen(hstate, htud, filename, (uint16_t)filename_len, data, data_len,
@@ -1708,9 +1708,9 @@ static int HtpResponseBodyHandle(HtpState *hstate, HtpTxUserData *htud,
         if (filename != NULL) {
             // set range if present
             htp_header_t *h_content_range = htp_table_get_c(tx->response_headers, "content-range");
-            if (filename_len > PATH_MAX) {
+            if (filename_len > SC_FILENAME_MAX) {
                 // explicitly truncate the file name if too long
-                filename_len = PATH_MAX;
+                filename_len = SC_FILENAME_MAX;
                 HTPSetEvent(hstate, htud, STREAM_TOSERVER, HTTP_DECODER_EVENT_FILE_NAME_TOO_LONG);
             }
             if (h_content_range != NULL) {
index 3c652e1d17cfad2f31af6110b517c4d9101a6411..175ad6ac6b6f3120517bd2c5dad5c002af6a65cd 100644 (file)
@@ -458,8 +458,8 @@ int SMTPProcessDataChunk(const uint8_t *chunk, uint32_t len,
             StreamTcpReassemblySetMinInspectDepth(flow->protoctx, STREAM_TOSERVER, depth);
 
             uint16_t flen = (uint16_t)entity->filename_len;
-            if (entity->filename_len > PATH_MAX) {
-                flen = PATH_MAX;
+            if (entity->filename_len > SC_FILENAME_MAX) {
+                flen = SC_FILENAME_MAX;
                 SMTPSetEvent(smtp_state, SMTP_DECODER_EVENT_MIME_LONG_FILENAME);
             }
             if (FileOpenFileWithId(files, &smtp_config.sbcfg, smtp_state->file_track_id++,
index 940a53046ec7a8dfc680f21729d068b230d8a6c5..7d81f6d87356fbedcb7dc0d064ec2a76659c88d3 100644 (file)
@@ -58,6 +58,9 @@ typedef struct SCMd5 SCMd5;
 #define FILE_USE_DETECT BIT_U16(13) /**< use content_inspected tracker */
 #define FILE_HAS_GAPS   BIT_U16(15)
 
+// to be used instead of PATH_MAX which depends on the OS
+#define SC_FILENAME_MAX 4096
+
 typedef enum FileState_ {
     FILE_STATE_NONE = 0,    /**< no state */
     FILE_STATE_OPENED,      /**< flow file is opened */