]> git.ipfire.org Git - thirdparty/suricata.git/commitdiff
ftp: fix int warnings
authorPhilippe Antoine <contact@catenacyber.fr>
Mon, 6 Dec 2021 08:11:09 +0000 (09:11 +0100)
committerVictor Julien <vjulien@oisf.net>
Thu, 13 Jan 2022 07:58:11 +0000 (08:58 +0100)
Explicitly truncate a file name if it is longer
than UINT16_MAX

src/app-layer-ftp.c
src/app-layer-ftp.h
src/util-mpm.c
src/util-mpm.h

index 2cb03025a50827dca3051acbc8421fa4d374f3d5..8b9859293107e9dbf88ff2001d284750d3d2ce35 100644 (file)
@@ -640,14 +640,17 @@ static AppLayerResult FTPParseRequest(Flow *f, void *ftp_state, AppLayerParserSt
                      * Min size has been checked in FTPParseRequestCommand
                      * PATH_MAX includes the null
                      */
-                    int file_name_len = MIN(PATH_MAX - 1, state->current_line_len - 5);
+                    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
+#endif
                     data->file_name = FTPCalloc(file_name_len + 1, sizeof(char));
                     if (data->file_name == NULL) {
                         FtpTransferCmdFree(data);
                         SCReturnStruct(APP_LAYER_ERROR);
                     }
                     data->file_name[file_name_len] = 0;
-                    data->file_len = file_name_len;
+                    data->file_len = (uint16_t)file_name_len;
                     memcpy(data->file_name, state->current_line + 5, file_name_len);
                     data->cmd = state->command;
                     data->flow_id = FlowGetId(f);
@@ -1027,7 +1030,7 @@ static StreamingBufferConfig sbcfg = STREAMING_BUFFER_CONFIG_INITIALIZER;
  * \retval 1 when the command is parsed, 0 otherwise
  */
 static AppLayerResult FTPDataParse(Flow *f, FtpDataState *ftpdata_state,
-        AppLayerParserState *pstate, StreamSlice stream_slice, void *local_data, int direction)
+        AppLayerParserState *pstate, StreamSlice stream_slice, void *local_data, uint8_t direction)
 {
     const uint8_t *input = StreamSliceGetData(&stream_slice);
     uint32_t input_len = StreamSliceGetDataLen(&stream_slice);
@@ -1354,7 +1357,7 @@ uint16_t JsonGetNextLineFromBuffer(const char *buffer, const uint16_t len)
     }
 
     char *c = strchr(buffer, '\n');
-    return c == NULL ? len : c - buffer + 1;
+    return c == NULL ? len : (uint16_t)(c - buffer + 1);
 }
 
 void EveFTPDataAddMetadata(const Flow *f, JsonBuilder *jb)
index aaf09f6a1126b2a4e2220cee8ddb77ccc3d810c0..7232268055b883d9a0fb0b6539963b7909e54b64 100644 (file)
@@ -127,7 +127,7 @@ typedef struct FtpLineState_ {
 
 typedef struct FTPString_ {
     uint8_t *str;
-    uint16_t len;
+    uint32_t len;
     TAILQ_ENTRY(FTPString_) next;
 } FTPString;
 
index f16a940f9e49eb033207dfa1a6042e553885ec09..851df27c497f0172ca3b5532abed6a65febd0255 100644 (file)
@@ -46,7 +46,7 @@
 #endif
 
 MpmTableElmt mpm_table[MPM_TABLE_SIZE];
-int mpm_default_matcher;
+uint16_t mpm_default_matcher;
 
 /**
  * \brief Register a new Mpm Context.
index ae5e228c945ae4fda5215319b4aab020058d8ffe..e6669f614e98ab408ac93a99ed46e4a59aa7b498 100644 (file)
@@ -170,7 +170,7 @@ typedef struct MpmTableElmt_ {
 } MpmTableElmt;
 
 extern MpmTableElmt mpm_table[MPM_TABLE_SIZE];
-extern int mpm_default_matcher;
+extern uint16_t mpm_default_matcher;
 
 struct DetectEngineCtx_;