From 098f353bf1184e3baf72ecddac46efecc2849bb8 Mon Sep 17 00:00:00 2001 From: Antonio SJ Musumeci Date: Fri, 25 Jun 2021 09:15:44 -0400 Subject: [PATCH] pfrd: fix mod by zero error when all branches are filtered --- src/policy_eppfrd.cpp | 3 +++ src/policy_msppfrd.cpp | 3 +++ src/policy_pfrd.cpp | 3 +++ 3 files changed, 9 insertions(+) diff --git a/src/policy_eppfrd.cpp b/src/policy_eppfrd.cpp index d2ba449c..9c56fa68 100644 --- a/src/policy_eppfrd.cpp +++ b/src/policy_eppfrd.cpp @@ -155,6 +155,9 @@ namespace eppfrd uint64_t idx; uint64_t threshold; + if(sum_ == 0) + return NULL; + idx = 0; threshold = RND::rand64(sum_); for(size_t i = 0; i < branchinfo_.size(); i++) diff --git a/src/policy_msppfrd.cpp b/src/policy_msppfrd.cpp index baa1bd95..ea6d770f 100644 --- a/src/policy_msppfrd.cpp +++ b/src/policy_msppfrd.cpp @@ -114,6 +114,9 @@ namespace msppfrd uint64_t idx; uint64_t threshold; + if(sum_ == 0) + return NULL; + idx = 0; threshold = RND::rand64(sum_); for(size_t i = 0; i < branchinfo_.size(); i++) diff --git a/src/policy_pfrd.cpp b/src/policy_pfrd.cpp index 2862d3ca..45d03051 100644 --- a/src/policy_pfrd.cpp +++ b/src/policy_pfrd.cpp @@ -84,6 +84,9 @@ namespace pfrd uint64_t idx; uint64_t threshold; + if(sum_ == 0) + return NULL; + idx = 0; threshold = RND::rand64(sum_); for(size_t i = 0; i < branchinfo_.size(); i++)