/** * \retval 1 data is the same * \retval 0 data is different */ int StreamingBufferCompareRawData(const StreamingBuffer *sb, const uint8_t *rawdata, uint32_t rawdata_len) { const uint8_t *sbdata = NULL; uint32_t sbdata_len = 0; uint64_t offset = 0; StreamingBufferGetData(sb, &sbdata, &sbdata_len, &offset); if (offset == 0 && sbdata && sbdata_len && sbdata_len == rawdata_len && memcmp(sbdata, rawdata, sbdata_len) == 0) { return 1; } SCLogInfo("sbdata_len %u, offset %u", sbdata_len, (uint)offset); PrintRawDataFp(stdout, sbdata,sbdata_len); return 0; }
/** * \brief run the magic check * * \param file the file * * \retval -1 error * \retval 0 ok */ int FilemagicThreadLookup(magic_t *ctx, File *file) { if (ctx == NULL || file == NULL || FileSize(file) == 0) { SCReturnInt(-1); } const uint8_t *data = NULL; uint32_t data_len = 0; uint64_t offset = 0; StreamingBufferGetData(file->sb, &data, &data_len, &offset); if (offset == 0) { if (FileSize(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); } } SCReturnInt(0); }