Hi, I found a strange condition in the function sss_ncache_check_str().
This condition causes the cache is NOT checked and the result of checking is automatically EEXIST.
I dind't find call of sss_ncache_check_str() with ttl = -1, except in tests. Note: We use value 0 for permanent cache, no -1. Regards -- Petr^4 Čech
>From 1fd913a19bbe260fa548c60f224d5072440e956d Mon Sep 17 00:00:00 2001 From: Petr Cech <[email protected]> Date: Tue, 19 Apr 2016 07:35:26 -0400 Subject: [PATCH] NEGCACHE: Removing of condition for ttl = -1 If ttl = -1 then function sss_ncache_check_str() returns EEXIST without checking negcache. This behaviour is out of logic. We use ttl = 0 for permanent caching. Resolves: https://fedorahosted.org/sssd/ticket/2928 --- src/responder/common/negcache.c | 6 ------ src/tests/cmocka/test_negcache.c | 46 ---------------------------------------- 2 files changed, 52 deletions(-) diff --git a/src/responder/common/negcache.c b/src/responder/common/negcache.c index 5b0517ceba85d6e35515a935423412314c218143..1617bf8c5cf7d36e7091a000f6473d1bcfe44f3f 100644 --- a/src/responder/common/negcache.c +++ b/src/responder/common/negcache.c @@ -97,12 +97,6 @@ static int sss_ncache_check_str(struct sss_nc_ctx *ctx, char *str, int ttl) goto done; } - if (ttl == -1) { - /* a negative ttl means: never expires */ - ret = EEXIST; - goto done; - } - errno = 0; timestamp = strtoull((const char *)data.dptr, &ep, 10); if (errno != 0 || *ep != '\0') { diff --git a/src/tests/cmocka/test_negcache.c b/src/tests/cmocka/test_negcache.c index 274e1543cc842bbb6b125423a76cf665354cc059..e9adc1715124eeee85e6898f40ec65a5cc19629b 100644 --- a/src/tests/cmocka/test_negcache.c +++ b/src/tests/cmocka/test_negcache.c @@ -230,11 +230,6 @@ static void test_sss_ncache_uid(void **state) ret = sss_ncache_set_uid(ts->ctx, permanent, NULL, uid); assert_int_equal(ret, EOK); - - /* test when ttl is -1 with uid present in database*/ - ttl = -1; - ret = sss_ncache_check_uid(ts->ctx, ttl, NULL, uid); - assert_int_equal(ret, EEXIST); } /* @test_sss_ncache_gid : test following functions @@ -270,11 +265,6 @@ static void test_sss_ncache_gid(void **state) ret = sss_ncache_check_uid(ts->ctx, ttl, NULL, gid); assert_int_equal(ret, EEXIST); - - /* test when ttl is -1 with gid present in database*/ - ttl = -1; - ret = sss_ncache_check_gid(ts->ctx, ttl, NULL, gid); - assert_int_equal(ret, EEXIST); } @@ -311,11 +301,6 @@ static void test_sss_ncache_sid(void **state) ret = sss_ncache_check_sid(ts->ctx, ttl, sid); assert_int_equal(ret, EEXIST); - - /* test when ttl is -1 with sid present in database*/ - ttl = -1; - ret = sss_ncache_check_sid(ts->ctx, ttl, sid); - assert_int_equal(ret, EEXIST); } /* @test_sss_ncache_cert : test following functions @@ -351,11 +336,6 @@ static void test_sss_ncache_cert(void **state) ret = sss_ncache_check_cert(ts->ctx, ttl, cert); assert_int_equal(ret, EEXIST); - - /* test when ttl is -1 with cert present in database*/ - ttl = -1; - ret = sss_ncache_check_cert(ts->ctx, ttl, cert); - assert_int_equal(ret, EEXIST); } /* @test_sss_ncache_user : test following functions @@ -398,11 +378,6 @@ static void test_sss_ncache_user(void **state) ret = sss_ncache_check_user(ts->ctx, ttl, dom, name); assert_int_equal(ret, EEXIST); - - /* test when ttl is -1 with domain name present in database */ - ttl = -1; - ret = sss_ncache_check_user(ts->ctx, ttl, dom, name); - assert_int_equal(ret, EEXIST); } /* @test_sss_ncache_group : test following functions @@ -445,11 +420,6 @@ static void test_sss_ncache_group(void **state) ret = sss_ncache_check_group(ts->ctx, ttl, dom, name); assert_int_equal(ret, EEXIST); - - /* test when ttl is -1 with domain name present in database */ - ttl = -1; - ret = sss_ncache_check_group(ts->ctx, ttl, dom, name); - assert_int_equal(ret, EEXIST); } /* @test_sss_ncache_netgr : test following functions @@ -492,11 +462,6 @@ static void test_sss_ncache_netgr(void **state) ret = sss_ncache_check_netgr(ts->ctx, ttl, dom, name); assert_int_equal(ret, EEXIST); - - /* test when ttl is -1 with domain name present in database */ - ttl = -1; - ret = sss_ncache_check_netgr(ts->ctx, ttl, dom, name); - assert_int_equal(ret, EEXIST); } /* @test_sss_ncache_service_name : test following functions @@ -539,11 +504,6 @@ static void test_sss_ncache_service_name(void **state) ret = sss_ncache_check_service(ts->ctx, ttl, dom, name, PROTO); assert_int_equal(ret, EEXIST); - - /* test when ttl is -1 with domain name present in database */ - ttl = -1; - ret = sss_ncache_check_service(ts->ctx, ttl, dom, name, PROTO); - assert_int_equal(ret, EEXIST); } /* @test_sss_ncache_service_port : test following functions @@ -591,12 +551,6 @@ static void test_sss_ncache_service_port(void **state) ret = sss_ncache_check_service_port(ts->ctx, ttl, dom, (uint16_t)PORT, PROTO); assert_int_equal(ret, EEXIST); - - /* test when ttl is -1 with domain name present in database */ - ttl = -1; - ret = sss_ncache_check_service_port(ts->ctx, ttl, dom, (uint16_t)PORT, - PROTO); - assert_int_equal(ret, EEXIST); } -- 2.5.5
_______________________________________________ sssd-devel mailing list [email protected] https://lists.fedorahosted.org/admin/lists/[email protected]
