From: Victor Julien Date: Thu, 25 Jan 2018 08:56:37 +0000 (+0100) Subject: rust/file: change return type for FileOpenFileWithId X-Git-Tag: suricata-4.0.4~24 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=95acbf4a58fbce65129519b4be148ef31b3fe1b7;p=thirdparty%2Fsuricata.git rust/file: change return type for FileOpenFileWithId Make it int so we can easily check it in Rust. No consumer used the File pointer that was returned before anyway. --- diff --git a/rust/src/core.rs b/rust/src/core.rs index ac24850cdf..d200b2f4ca 100644 --- a/rust/src/core.rs +++ b/rust/src/core.rs @@ -70,7 +70,7 @@ pub type SCFileOpenFileWithId = extern "C" fn ( track_id: u32, name: *const u8, name_len: u16, data: *const u8, data_len: u32, - flags: u16) -> File; + flags: u16) -> i32; pub type SCFileCloseFileById = extern "C" fn ( file_container: &FileContainer, track_id: u32, diff --git a/rust/src/filecontainer.rs b/rust/src/filecontainer.rs index a57e0184f0..60340a5ba4 100644 --- a/rust/src/filecontainer.rs +++ b/rust/src/filecontainer.rs @@ -49,12 +49,11 @@ impl FileContainer { None => panic!("BUG no suricata_config"), Some(c) => { SCLogDebug!("FILE {:p} OPEN flags {:04X}", &self, flags); - //let ref res = - (c.FileOpenFile)(&self, cfg.files_sbcfg, *track_id, + let res = (c.FileOpenFile)(&self, cfg.files_sbcfg, *track_id, name.as_ptr(), name.len() as u16, ptr::null(), 0u32, flags); - 0 + res } } } diff --git a/src/rust.h b/src/rust.h index 848490e916..c016fd493b 100644 --- a/src/rust.h +++ b/src/rust.h @@ -26,7 +26,7 @@ typedef struct SuricataContext_ { uint8_t); void (*AppLayerDecoderEventsFreeEvents)(AppLayerDecoderEvents **); - File *(*FileOpenFileWithId)(FileContainer *, const StreamingBufferConfig *, + int (*FileOpenFileWithId)(FileContainer *, const StreamingBufferConfig *, uint32_t track_id, const uint8_t *name, uint16_t name_len, const uint8_t *data, uint32_t data_len, uint16_t flags); int (*FileCloseFileById)(FileContainer *, uint32_t track_id, diff --git a/src/util-file.c b/src/util-file.c index 56d9bd7a32..af5ffae3ec 100644 --- a/src/util-file.c +++ b/src/util-file.c @@ -826,17 +826,21 @@ File *FileOpenFile(FileContainer *ffc, const StreamingBufferConfig *sbcfg, SCReturnPtr(ff, "File"); } -File *FileOpenFileWithId(FileContainer *ffc, const StreamingBufferConfig *sbcfg, + +/** + * \retval 0 ok + * \retval -1 failed */ +int FileOpenFileWithId(FileContainer *ffc, const StreamingBufferConfig *sbcfg, uint32_t track_id, const uint8_t *name, uint16_t name_len, const uint8_t *data, uint32_t data_len, uint16_t flags) { File *ff = FileOpenFile(ffc, sbcfg, name, name_len, data, data_len, flags); if (ff == NULL) - return NULL; + return -1; ff->file_track_id = track_id; ff->flags |= FILE_USE_TRACKID; - return ff; + return 0; } static int FileCloseFilePtr(File *ff, const uint8_t *data, diff --git a/src/util-file.h b/src/util-file.h index 0795177f3d..9b578bc1f5 100644 --- a/src/util-file.h +++ b/src/util-file.h @@ -126,7 +126,7 @@ void FileContainerAdd(FileContainer *, File *); File *FileOpenFile(FileContainer *, const StreamingBufferConfig *, const uint8_t *name, uint16_t name_len, const uint8_t *data, uint32_t data_len, uint16_t flags); -File *FileOpenFileWithId(FileContainer *, const StreamingBufferConfig *, +int FileOpenFileWithId(FileContainer *, const StreamingBufferConfig *, uint32_t track_id, const uint8_t *name, uint16_t name_len, const uint8_t *data, uint32_t data_len, uint16_t flags);