This patch introduces the FileDataSize and FileTrackedSize functions.
The first one is just a renaming of the initial FilSize function
whereas the other one is using the newly introduced size field as
value.
}
if (http_state->files_ts->head == NULL ||
- FileSize(http_state->files_ts->head) != 11)
+ FileDataSize(http_state->files_ts->head) != 11)
{
if (http_state->files_ts->head != NULL)
printf("filedata len not 11 but %"PRIu64": ",
- FileSize(http_state->files_ts->head));
+ FileDataSize(http_state->files_ts->head));
goto end;
}
if (file->sb->stream_offset == 0)
window = MAX(window, smtp_config.content_inspect_min_size);
- uint64_t file_size = FileSize(file);
+ uint64_t file_size = FileDataSize(file);
uint64_t data_size = file_size - file->sb->stream_offset;
SCLogDebug("window %"PRIu32", file_size %"PRIu64", data_size %"PRIu64,
printf("smtp-mime file name is incorrect");
goto end;
}
- if (FileSize(file) != filesize){
- printf("smtp-mime file size %"PRIu64" is incorrect", FileSize(file));
+ if (FileTrackedSize(file) != filesize){
+ printf("smtp-mime file size %"PRIu64" is incorrect", FileDataSize(file));
goto end;
}
static uint8_t org_binary[] = {
FAIL_IF(file == NULL);
ret = SMTPProcessDataChunk((uint8_t *)mimemsg, sizeof(mimemsg), state);
FAIL_IF(ret != 0);
- FAIL_IF((uint32_t)FileSize(file) != 106);
+ FAIL_IF((uint32_t)FileDataSize(file) != 106);
SMTPStateFree(smtp_state);
FLOW_DESTROY(&f);
PASS;
break;
}
- uint64_t file_size = FileSize(file);
+ uint64_t file_size = FileDataSize(file);
if ((s->file_flags & FILE_SIG_NEED_MAGIC) && file_size == 0) {
SCLogDebug("sig needs file content, but we don't have any");
r = DETECT_ENGINE_INSPECT_SIG_NO_MATCH;
const uint8_t *buffer = NULL;
*buffer_len = 0;
*stream_start_offset = 0;
- uint64_t file_size = FileSize(curr_file);
+ uint64_t file_size = FileDataSize(curr_file);
if (det_ctx->smtp_buffers_list_len == 0) {
if (SMTPCreateSpace(det_ctx, 1) < 0)
det_ctx->smtp[index].offset = curr_file->content_inspected;
/* updat inspected tracker */
- curr_file->content_inspected = FileSize(curr_file);
+ curr_file->content_inspected = FileDataSize(curr_file);
SCLogDebug("content_inspected %u, offset %u", (uint)curr_file->content_inspected, (uint)det_ctx->smtp[index].offset);
*/
int FilemagicGlobalLookup(File *file)
{
- if (file == NULL || FileSize(file) == 0) {
+ if (file == NULL || FileDataSize(file) == 0) {
SCReturnInt(-1);
}
StreamingBufferGetData(file->sb,
&data, &data_len, &offset);
if (offset == 0) {
- if (FileSize(file) >= FILEMAGIC_MIN_SIZE) {
+ if (FileDataSize(file) >= FILEMAGIC_MIN_SIZE) {
file->magic = MagicGlobalLookup(data, data_len);
} else if (file->state >= FILE_STATE_CLOSED) {
file->magic = MagicGlobalLookup(data, data_len);
*/
int FilemagicThreadLookup(magic_t *ctx, File *file)
{
- if (ctx == NULL || file == NULL || FileSize(file) == 0) {
+ if (ctx == NULL || file == NULL || FileDataSize(file) == 0) {
SCReturnInt(-1);
}
StreamingBufferGetData(file->sb,
&data, &data_len, &offset);
if (offset == 0) {
- if (FileSize(file) >= FILEMAGIC_MIN_SIZE) {
+ if (FileDataSize(file) >= FILEMAGIC_MIN_SIZE) {
file->magic = MagicThreadLookup(ctx, data, data_len);
} else if (file->state >= FILE_STATE_CLOSED) {
file->magic = MagicThreadLookup(ctx, data, data_len);
DetectFilesizeData *fsd = (DetectFilesizeData *)m->ctx;
int ret = 0;
- uint64_t file_size = FileSize(file);
+ uint64_t file_size = FileTrackedSize(file);
SCLogDebug("file size %"PRIu64", check %"PRIu64, file_size, fsd->size1);
break;
}
fprintf(fp, "\"stored\": %s, ", ff->flags & FILE_STORED ? "true" : "false");
- fprintf(fp, "\"size\": %"PRIu64" ", FileSize(ff));
+ fprintf(fp, "\"size\": %"PRIu64" ", FileTrackedSize(ff));
fprintf(fp, "}\n");
fflush(fp);
SCMutexUnlock(&aft->file_ctx->fp_mutex);
fprintf(fp, "STATE: UNKNOWN\n");
break;
}
- fprintf(fp, "SIZE: %"PRIu64"\n", FileSize(ff));
+ fprintf(fp, "SIZE: %"PRIu64"\n", FileTrackedSize(ff));
fclose(fp);
} else {
/* if we have no data chunks left to log, we should still
* close the logger(s) */
- if (FileSize(ff) == ff->content_stored &&
+ if (FileDataSize(ff) == ff->content_stored &&
(file_trunc || file_close)) {
CallLoggers(tv, store, p, ff, NULL, 0, OUTPUT_FILEDATA_FLAG_CLOSE);
ff->flags |= FILE_STORED;
if (ff->flags & FILE_STORED) {
json_object_set_new(fjs, "file_id", json_integer(ff->file_id));
}
- json_object_set_new(fjs, "size", json_integer(ff->size));
+ json_object_set_new(fjs, "size", json_integer(FileTrackedSize(ff)));
json_object_set_new(fjs, "tx_id", json_integer(ff->txid));
/* originally just 'file', but due to bug 1127 naming it fileinfo */
}
/**
- * \brief get the size of the file
+ * \brief get the size of the file data
*
* This doesn't reflect how much of the file we have in memory, just the
- * total size tracked so far.
+ * total size of filedata so far.
*/
-uint64_t FileSize(const File *file)
+uint64_t FileDataSize(const File *file)
{
if (file != NULL && file->sb != NULL) {
SCLogDebug("returning %"PRIu64,
return 0;
}
+/**
+ * \brief get the size of the file
+ *
+ * This doesn't reflect how much of the file we have in memory, just the
+ * total size of file so far.
+ */
+uint64_t FileTrackedSize(const File *file)
+{
+ if (file != NULL) {
+ return file->size;
+ }
+ return 0;
+}
+
static int FilePruneFile(File *file)
{
SCEnter();
#endif
uint64_t left_edge = file->content_stored;
if (file->flags & FILE_NOSTORE) {
- left_edge = FileSize(file);
+ left_edge = FileDataSize(file);
}
if (file->flags & FILE_USE_DETECT) {
left_edge = MIN(left_edge, file->content_inspected);
StreamingBufferSlideToOffset(file->sb, left_edge);
}
- if (left_edge != FileSize(file)) {
+ if (left_edge != FileDataSize(file)) {
SCReturnInt(0);
}
if (ff->flags & FILE_NOSTORE) {
if (ff->state == FILE_STATE_OPENED &&
- FileSize(ff) >= (uint64_t)FileMagicSize())
+ FileDataSize(ff) >= (uint64_t)FileMagicSize())
{
SCReturnInt(1);
}
ff->state = FILE_STATE_ERROR;
SCReturnPtr(NULL, "File");
}
- SCLogDebug("file size is now %"PRIu64, FileSize(ff));
+ SCLogDebug("file size is now %"PRIu64, FileTrackedSize(ff));
}
SCReturnPtr(ff, "File");
SCLogDebug("not storing this file");
ff->flags |= FILE_NOSTORE;
- if (ff->state == FILE_STATE_OPENED && FileSize(ff) >= (uint64_t)FileMagicSize()) {
+ if (ff->state == FILE_STATE_OPENED && FileDataSize(ff) >= (uint64_t)FileMagicSize()) {
if (g_file_force_md5 == 0 && g_file_force_sha1 == 0 && g_file_force_sha256 == 0
&& g_file_force_tracking == 0) {
(void)FileCloseFilePtr(ff, NULL, 0,
void FileTruncateAllOpenFiles(FileContainer *);
-uint64_t FileSize(const File *file);
+uint64_t FileDataSize(const File *file);
+uint64_t FileTrackedSize(const File *file);
uint16_t FileFlowToFlags(const Flow *flow, uint8_t direction);
lua_pushnumber(luastate, file->file_id);
lua_pushnumber(luastate, file->txid);
lua_pushlstring(luastate, (char *)file->name, file->name_len);
- lua_pushnumber(luastate, FileSize(file));
+ lua_pushnumber(luastate, FileTrackedSize(file));
lua_pushstring (luastate,
#ifdef HAVE_MAGIC
file->magic