URL: https://github.com/SSSD/sssd/pull/601
Title: #601: sbus: integrate sssd with sbus2

pbrezina commented:
"""
> The old sbus implementation had quite a few tests that were generating some 
> interface and then calling it. I also liked the tests because they were 
> useful as a documentation. Do you plan on adding some unit tests for the new 
> sbus library as well?

I do plan to provide tests (and much broader set of tests) but it will not be 
done before the patches are merged as I need to focus elsewhere.

So far I fixed the coverity issues and squashed the changes in. Here is the 
diff:
```diff
diff --git a/src/providers/data_provider/dp_iface_backend.c 
b/src/providers/data_provider/dp_iface_backend.c
index 4066909..25a00f3 100644
--- a/src/providers/data_provider/dp_iface_backend.c
+++ b/src/providers/data_provider/dp_iface_backend.c
@@ -37,7 +37,6 @@ dp_backend_is_online(TALLOC_CTX *mem_ctx,
     struct sss_domain_info *domain;
 
     if (SBUS_REQ_STRING_IS_EMPTY(domname)) {
-        domain = be_ctx->domain;
         *_is_online = be_is_offline(be_ctx);
         return EOK;
     }
diff --git a/src/providers/data_provider/dp_target_sudo.c 
b/src/providers/data_provider/dp_target_sudo.c
index bc5f9c8..db14039 100644
--- a/src/providers/data_provider/dp_target_sudo.c
+++ b/src/providers/data_provider/dp_target_sudo.c
@@ -56,6 +56,7 @@ static errno_t dp_sudo_parse_message(TALLOC_CTX *mem_ctx,
     switch (sudo_type) {
     case BE_REQ_SUDO_FULL:
         /* no arguments required */
+        rules = NULL;
         break;
     case BE_REQ_SUDO_RULES:
         /* additional arguments:
diff --git a/src/responder/ifp/ifp_groups.c b/src/responder/ifp/ifp_groups.c
index b6fae92..353f3a7 100644
--- a/src/responder/ifp/ifp_groups.c
+++ b/src/responder/ifp/ifp_groups.c
@@ -994,8 +994,6 @@ ifp_groups_group_get_members(TALLOC_CTX *mem_ctx,
     if (num_members == 0) {
         users = NULL;
         groups = NULL;
-        num_users = 0;
-        num_groups = 0;
         ret = EOK;
         goto done;
     }
diff --git a/src/sbus/codegen/sbus_Generator.py 
b/src/sbus/codegen/sbus_Generator.py
index 4e5e8bb..e950843 100644
--- a/src/sbus/codegen/sbus_Generator.py
+++ b/src/sbus/codegen/sbus_Generator.py
@@ -764,10 +764,14 @@ class Generator:
                     type = DataType.Find(
                         invoker.input.arguments['value'].signature
                     )
-                if self.hasAny(invoker.output):
+                elif self.hasAny(invoker.output):
                     type = DataType.Find(
                         invoker.output.arguments['value'].signature
                     )
+                else:
+                    raise ValueError(
+                        'Invoker has no input nor output argument\n'
+                    )
 
                 tpl.show("if-use-talloc", type.RequireTalloc)
 
diff --git a/src/sbus/interface/sbus_introspection.c 
b/src/sbus/interface/sbus_introspection.c
index d4daedc..b2de9a9 100644
--- a/src/sbus/interface/sbus_introspection.c
+++ b/src/sbus/interface/sbus_introspection.c
@@ -248,8 +248,6 @@ sbus_introspect_property_mode(struct 
sbus_introspect_property *property)
     default:
         return "readwrite";
     }
-
-    return "invalid";
 }
 
 static errno_t
diff --git a/src/sbus/request/sbus_request_hash.c 
b/src/sbus/request/sbus_request_hash.c
index 68dc79c..441fce2 100644
--- a/src/sbus/request/sbus_request_hash.c
+++ b/src/sbus/request/sbus_request_hash.c
@@ -265,6 +265,11 @@ void
 sbus_requests_finish(struct sbus_request_list *item,
                      errno_t error)
 {
+    if (item == NULL) {
+        DEBUG(SSSDBG_MINOR_FAILURE, "Bug: item is NULL\n");
+        return;
+    }
+
     if (item->is_invalid) {
         return;
     }
diff --git a/src/sbus/router/sbus_router_hash.c 
b/src/sbus/router/sbus_router_hash.c
index 41111bc..186dc61 100644
--- a/src/sbus/router/sbus_router_hash.c
+++ b/src/sbus/router/sbus_router_hash.c
@@ -337,7 +337,8 @@ sbus_listener_list_lookup(struct sbus_listener_list *list,
     struct sbus_listener_list *item;
     struct sbus_listener *b;
 
-    /* We know that interface and signal name already match. */
+    /* We know that interface and signal name already match. We need to check
+     * handlers and object paths. */
     DLIST_FOR_EACH(item, list) {
         b = item->listener;
 
@@ -345,6 +346,10 @@ sbus_listener_list_lookup(struct sbus_listener_list *list,
             continue;
         }
 
+        if (a->object_path == NULL && b->object_path == NULL) {
+            return b;
+        }
+
         if (a->object_path == NULL && b->object_path != NULL) {
             continue;
         }
diff --git a/src/sbus/server/sbus_server_match.c 
b/src/sbus/server/sbus_server_match.c
index 6a65328..07bdf5b 100644
--- a/src/sbus/server/sbus_server_match.c
+++ b/src/sbus/server/sbus_server_match.c
@@ -312,7 +312,7 @@ sbus_match_rule_parse(TALLOC_CTX *mem_ctx,
 
     ret = split_on_separator(NULL, dbus_rule, ',', true, true, &tokens, 
&count);
     if (ret != EOK) {
-        return ret;
+        goto done;
     }
 
     ret = sbus_match_rule_parse_keys(mem_ctx, tokens, &sbus_rule);
@@ -323,6 +323,7 @@ sbus_match_rule_parse(TALLOC_CTX *mem_ctx,
 
     ret = sbus_match_rule_parse_check(sbus_rule);
     if (ret != EOK) {
+        talloc_free(sbus_rule);
         goto done;
     }
 
@@ -332,9 +333,8 @@ sbus_match_rule_parse(TALLOC_CTX *mem_ctx,
 
 done:
     if (ret != EOK) {
-        talloc_free(sbus_rule);
         DEBUG(SSSDBG_OP_FAILURE, "Unable to parse rule [%s] [%d]: %s\n",
-                      dbus_rule, ret, sss_strerror(ret));
+              dbus_rule, ret, sss_strerror(ret));
     }
 
 
diff --git a/src/sss_iface/sss_iface_types.c b/src/sss_iface/sss_iface_types.c
index bb4fd02..3c0bbc0 100644
--- a/src/sss_iface/sss_iface_types.c
+++ b/src/sss_iface/sss_iface_types.c
@@ -375,7 +375,6 @@ errno_t sbus_iterator_write_pam_response(DBusMessageIter 
*iterator,
         goto done;
     }
 
-    resp = pd->resp_list;
     for (resp = pd->resp_list; resp != NULL; resp = resp->next) {
         dbret = dbus_message_iter_open_container(&array_iter, DBUS_TYPE_STRUCT,
                                                  NULL, &struct_iter);

```
"""

See the full comment at 
https://github.com/SSSD/sssd/pull/601#issuecomment-409511174
_______________________________________________
sssd-devel mailing list -- sssd-devel@lists.fedorahosted.org
To unsubscribe send an email to sssd-devel-le...@lists.fedorahosted.org
Fedora Code of Conduct: https://getfedora.org/code-of-conduct.html
List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines
List Archives: 
https://lists.fedoraproject.org/archives/list/sssd-devel@lists.fedorahosted.org/message/3XBLCFCGWQG4JA4AAEFZFKN3OPH7ITXP/

Reply via email to