]> git.ipfire.org Git - thirdparty/suricata.git/commitdiff
app-layer-ftp: fill direction of transfer
authorEric Leblond <eric@regit.org>
Thu, 19 Apr 2018 12:32:51 +0000 (14:32 +0200)
committerVictor Julien <victor@inliniac.net>
Mon, 23 Apr 2018 20:08:54 +0000 (22:08 +0200)
This is required to return the file when asked with one direction.

src/app-layer-ftp.c

index 700422db50d2ba17a014d42cfe2cc5508537d356..1da11b9f55f3a49202466a3a0d0b0ef3962de904 100644 (file)
@@ -733,6 +733,16 @@ static int FTPDataParse(Flow *f, FtpDataState *ftpdata_state,
         data->file_len = 0;
         f->parent_id = data->flow_id;
         ftpdata_state->command = data->cmd;
+        switch (data->cmd) {
+            case FTP_COMMAND_STOR:
+                ftpdata_state->direction = STREAM_TOSERVER;
+                break;
+            case FTP_COMMAND_RETR:
+                ftpdata_state->direction = STREAM_TOCLIENT;
+                break;
+            default:
+                break;
+        }
 
         if (FileOpenFile(ftpdata_state->files, &sbcfg,
                          (uint8_t *) ftpdata_state->file_name,
@@ -883,6 +893,9 @@ static FileContainer *FTPDataStateGetFiles(void *state, uint8_t direction)
 {
     FtpDataState *ftpdata_state = (FtpDataState *)state;
 
+    if (direction != ftpdata_state->direction)
+        SCReturnPtr(NULL, "FileContainer");
+
     SCReturnPtr(ftpdata_state->files, "FileContainer");
 }