From 0b3d1360c2d56e32ec081304c6f2c65eb3ab1766 Mon Sep 17 00:00:00 2001
From: Yuchen Zeng <zyc@google.com>
Date: Tue, 4 Apr 2017 13:55:33 -0700
Subject: [PATCH] Fix float comparison

---
 src/core/ext/filters/max_age/max_age_filter.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/src/core/ext/filters/max_age/max_age_filter.c b/src/core/ext/filters/max_age/max_age_filter.c
index be5350bce5..f858220c01 100644
--- a/src/core/ext/filters/max_age/max_age_filter.c
+++ b/src/core/ext/filters/max_age/max_age_filter.c
@@ -265,7 +265,9 @@ static int add_random_max_connection_age_jitter(int value) {
   double multiplier = rand() * MAX_CONNECTION_AGE_JITTER * 2.0 / RAND_MAX +
                       1.0 - MAX_CONNECTION_AGE_JITTER;
   double result = multiplier * value;
-  return result > INT_MAX ? INT_MAX : (int)result;
+  /* INT_MAX - 0.5 converts the value to float, so that result will not be
+     cast to int implicitly before the comparison. */
+  return result > INT_MAX - 0.5 ? INT_MAX : (int)result;
 }
 
 /* Constructor for call_data. */
-- 
GitLab