From c06db9c3a04effca67f2ed88fdaabc65a4da1d05 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 2c38efc2..e16780d6 100644 --- a/src/policy_eppfrd.cpp +++ b/src/policy_eppfrd.cpp @@ -204,6 +204,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 dd4f8931..cc95bca4 100644 --- a/src/policy_msppfrd.cpp +++ b/src/policy_msppfrd.cpp @@ -130,6 +130,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 ab22e278..0ecf880b 100644 --- a/src/policy_pfrd.cpp +++ b/src/policy_pfrd.cpp @@ -98,6 +98,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++)