[SSSD] [PATCH] NSS: Fix netgroup midpoint cache refresh

Jakub Hrozek jhrozek at redhat.com
Sun Dec 2 18:08:23 UTC 2012


https://fedorahosted.org/sssd/ticket/1683

The result of the percent calculation was always 0 as it used plain
ints. The patch switches to using explicit floats to avoid reintroducing
the bug again even with brackets.
-------------- next part --------------
>From 538d18c180c432839b3611a9949c0d3fca11a379 Mon Sep 17 00:00:00 2001
From: Jakub Hrozek <jhrozek at redhat.com>
Date: Sun, 2 Dec 2012 19:05:44 +0100
Subject: [PATCH] NSS: Fix netgroup midpoint cache refresh

https://fedorahosted.org/sssd/ticket/1683

The result of the percent calculation was always 0 as it used plain
ints. The patch switches to using explicit floats to avoid reintroducing
the bug again even with brackets.
---
 src/responder/common/responder_cmd.c | 2 +-
 src/responder/nss/nsssrv_netgroup.c  | 2 +-
 src/responder/nss/nsssrv_services.c  | 2 +-
 3 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/responder/common/responder_cmd.c b/src/responder/common/responder_cmd.c
index a9c4e36ee751b2f603116b77a5a92b16e3a795a1..cb57cba1a446cdf6ce1782b8d772b70c16ef1e07 100644
--- a/src/responder/common/responder_cmd.c
+++ b/src/responder/common/responder_cmd.c
@@ -257,7 +257,7 @@ sss_cmd_check_cache(struct ldb_message *msg,
 
     if(cache_refresh_percent) {
         midpoint_refresh = lastUpdate +
-            (cache_expire - lastUpdate)*cache_refresh_percent/100;
+            (cache_expire - lastUpdate)*cache_refresh_percent/100.0;
         if (midpoint_refresh - lastUpdate < 10) {
             /* If the percentage results in an expiration
              * less than ten seconds after the lastUpdate time,
diff --git a/src/responder/nss/nsssrv_netgroup.c b/src/responder/nss/nsssrv_netgroup.c
index ae993fac618ba408fcdf2bbebbf90e7c77959cb0..4b10b1819a636034896d85c132bca51f9d4342c9 100644
--- a/src/responder/nss/nsssrv_netgroup.c
+++ b/src/responder/nss/nsssrv_netgroup.c
@@ -535,7 +535,7 @@ static errno_t lookup_netgr_step(struct setent_step_ctx *step_ctx)
         netgr->found = true;
         if (step_ctx->nctx->cache_refresh_percent) {
             lifetime = dom->netgroup_timeout *
-                (step_ctx->nctx->cache_refresh_percent / 100);
+                (step_ctx->nctx->cache_refresh_percent / 100.0);
         } else {
             lifetime = dom->netgroup_timeout;
         }
diff --git a/src/responder/nss/nsssrv_services.c b/src/responder/nss/nsssrv_services.c
index ee847f6d3d93c40b6b72c2f7abf2991494a0c8bc..e56ad93a601dd18b762982e483b55dc10dda85de 100644
--- a/src/responder/nss/nsssrv_services.c
+++ b/src/responder/nss/nsssrv_services.c
@@ -325,7 +325,7 @@ getserv_send(TALLOC_CTX *mem_ctx,
          midpoint_refresh = 0;
          if(nctx->cache_refresh_percent) {
              midpoint_refresh = lastUpdate +
-               (cacheExpire - lastUpdate)*nctx->cache_refresh_percent/100;
+               (cacheExpire - lastUpdate)*nctx->cache_refresh_percent/100.0;
              if (midpoint_refresh - lastUpdate < 10) {
                  /* If the percentage results in an expiration
                   * less than ten seconds after the lastUpdate time,
-- 
1.8.0.1



More information about the sssd-devel mailing list