On 04/19/2016 01:55 PM, Petr Cech wrote:
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.


Hello,

I added one another little patch to this, so there is patch set.

Regards

--
Petr^4 Čech
>From 9b8a7a4ca917134db82fb0f8992ab933a72ebd1e Mon Sep 17 00:00:00 2001
From: Petr Cech <[email protected]>
Date: Tue, 19 Apr 2016 13:20:25 -0400
Subject: [PATCH 1/2] NEGCACHE: Fixing typo in test_sss_ncache_gid()

There were sss_ncache_*_uid() functions instead of
sss_ncache_*_gid() functions.

Resolves:
https://fedorahosted.org/sssd/ticket/2928
---
 src/tests/cmocka/test_negcache.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/tests/cmocka/test_negcache.c b/src/tests/cmocka/test_negcache.c
index 274e1543cc842bbb6b125423a76cf665354cc059..b3118abdc76c38539d725e7924b3905638438005 100644
--- a/src/tests/cmocka/test_negcache.c
+++ b/src/tests/cmocka/test_negcache.c
@@ -265,10 +265,10 @@ static void test_sss_ncache_gid(void **state)
     assert_int_equal(ret, EEXIST);
 
     permanent = false;
-    ret = sss_ncache_set_uid(ts->ctx, permanent, NULL, gid);
+    ret = sss_ncache_set_gid(ts->ctx, permanent, NULL, gid);
     assert_int_equal(ret, EOK);
 
-    ret = sss_ncache_check_uid(ts->ctx, ttl, NULL, gid);
+    ret = sss_ncache_check_gid(ts->ctx, ttl, NULL, gid);
     assert_int_equal(ret, EEXIST);
 
     /* test when ttl is -1 with gid present in database*/
-- 
2.5.5

>From cd5b2217d22f1da7d64cf81e67ac31f823d40e06 Mon Sep 17 00:00:00 2001
From: Petr Cech <[email protected]>
Date: Tue, 19 Apr 2016 07:35:26 -0400
Subject: [PATCH 2/2] 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 b3118abdc76c38539d725e7924b3905638438005..45dcd43c89f036aa758b0669f319ad13431efa9c 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_gid(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]

Reply via email to