On (25/09/15 13:30), Pavel Reichl wrote:
>Hello,
>
>please see simple patch attached.
>
>Thanks!

>From 5717c6effcb0ac0cd16b4863adba088c9b1f0b90 Mon Sep 17 00:00:00 2001
>From: Pavel Reichl <prei...@redhat.com>
>Date: Fri, 25 Sep 2015 07:05:30 -0400
>Subject: [PATCH] SDAP: rem warning - sizelimit exceeded in POSIX check
>
>Add new parameter 'flags' to sdap_get_generic_ext_send() which can be
>set to suppress warning about 'sizelimit exceeded'.
>
>Resolves:
>https://fedorahosted.org/sssd/ticket/2804
>---
> src/providers/ldap/sdap_async.c | 34 +++++++++++++++++++++++++---------
> 1 file changed, 25 insertions(+), 9 deletions(-)
>
>diff --git a/src/providers/ldap/sdap_async.c b/src/providers/ldap/sdap_async.c
>index 
>97c9ea5df61a6516ca74bb73edc9a116b1266c71..1626d0dada1800aaf69681de13632b007866e779
> 100644
>--- a/src/providers/ldap/sdap_async.c
>+++ b/src/providers/ldap/sdap_async.c
>@@ -1164,6 +1164,8 @@ struct sdap_get_generic_ext_state {
>     void *cb_data;
> 
>     bool allow_paging;
>+
>+    unsigned int flags;
               ^^^
            The int is redundant here
            "unsigned int" and "unsigned" is the same.

> };
> 
> static errno_t sdap_get_generic_ext_step(struct tevent_req *req);
>@@ -1172,6 +1174,14 @@ static void sdap_get_generic_op_finished(struct sdap_op 
>*op,
>                                          struct sdap_msg *reply,
>                                          int error, void *pvt);
> 
>+#define NO_FLAGS 0
>+#define DONT_WARN_SIZELIMIT_EXCEEDED 1
>+
>+static bool is_flag_set(unsigned int flags, unsigned int flag)
>+{
>+    return (flags & flag) != 0;
>+}
>+
> static struct tevent_req *
> sdap_get_generic_ext_send(TALLOC_CTX *memctx,
>                           struct tevent_context *ev,
>@@ -1188,7 +1198,8 @@ sdap_get_generic_ext_send(TALLOC_CTX *memctx,
>                           int timeout,
>                           bool allow_paging,
>                           sdap_parse_cb parse_cb,
>-                          void *cb_data)
>+                          void *cb_data,
>+                          unsigned int flags)
> {
>     errno_t ret;
>     struct sdap_get_generic_ext_state *state;
>@@ -1215,6 +1226,7 @@ sdap_get_generic_ext_send(TALLOC_CTX *memctx,
>     state->parse_cb = parse_cb;
>     state->cb_data = cb_data;
>     state->clientctrls = clientctrls;
>+    state->flags = flags;
> 
>     if (state->sh == NULL || state->sh->ldap == NULL) {
>         DEBUG(SSSDBG_CRIT_FAILURE,
>@@ -1500,8 +1512,11 @@ static void sdap_get_generic_op_finished(struct sdap_op 
>*op,
> 
>         if (result == LDAP_SIZELIMIT_EXCEEDED) {
>             /* Try to return what we've got */
>-            DEBUG(SSSDBG_MINOR_FAILURE,
>-                  "LDAP sizelimit was exceeded, returning incomplete data\n");
>+            if (!is_flag_set(state->flags, DONT_WARN_SIZELIMIT_EXCEEDED)) {
                   The function is used just once and it does not significantly
                   improve readability of code; But it might be caused by too
                   long name of flag and many brackets + negation.
              if (state->flags & WARN_SIZELIMIT) might be easier to read.

The simillar patter is used also on other places.
src/sss_client/pam_sss.c:109:    if (err & PAM_DATA_REPLACE) {
src/sss_client/pam_sss.c:1537:    if (flags & FLAGS_USE_FIRST_PASS) {
src/sss_client/pam_sss.c:1546:        if (flags & FLAGS_USE_2FA
src/sss_client/pam_sss.c:1561:        if (flags & FLAGS_FORWARD_PASS) {
src/sss_client/pam_sss.c:1592:    if (pam_flags & PAM_PRELIM_CHECK) {
...
and many other places

sh$ git grep -n if | grep " & " | wc -l
177

LS
_______________________________________________
sssd-devel mailing list
sssd-devel@lists.fedorahosted.org
https://lists.fedorahosted.org/mailman/listinfo/sssd-devel

Reply via email to