From 4dc27b365fa0550af51cd849c3c89bea8f598283 Mon Sep 17 00:00:00 2001 From: Carter Li Date: Sat, 15 Aug 2026 08:51:45 +0800 Subject: [PATCH] DiskIO / NetIO: fixes I/O rate calculation precision, prevent div-by-zero --- src/detection/diskio/diskio.c | 3 +-- src/detection/netio/netio.c | 3 +-- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/src/detection/diskio/diskio.c b/src/detection/diskio/diskio.c index 73f0075a7..a2f53439c 100644 --- a/src/detection/diskio/diskio.c +++ b/src/detection/diskio/diskio.c @@ -72,8 +72,7 @@ const char* ffDetectDiskIO(FFlist* result, FFDiskIOOptions* options) { uint64_t* prevValue = (uint64_t*) ((uint8_t*) icPrev + off); uint64_t* currValue = (uint64_t*) ((uint8_t*) icCurr + off); uint64_t temp = *currValue; - *currValue -= *prevValue; - *currValue /= (time2 - time1) / 1000 /* seconds */; + *currValue = (*currValue - *prevValue) * 1000 / (time2 - time1); // Calculate per second // For next function call *prevValue = temp; diff --git a/src/detection/netio/netio.c b/src/detection/netio/netio.c index a6348265b..3c986a863 100644 --- a/src/detection/netio/netio.c +++ b/src/detection/netio/netio.c @@ -70,8 +70,7 @@ const char* ffDetectNetIO(FFlist* result, FFNetIOOptions* options) { uint64_t* prevValue = (uint64_t*) ((uint8_t*) icPrev + off); uint64_t* currValue = (uint64_t*) ((uint8_t*) icCurr + off); uint64_t temp = *currValue; - *currValue -= *prevValue; - *currValue /= (time2 - time1) / 1000 /* seconds */; + *currValue = (*currValue - *prevValue) * 1000 / (time2 - time1); // Calculate per second *prevValue = temp; } }