URL: https://github.com/SSSD/sssd/pull/50
Author: fidencio
 Title: #50: [RFC] Use GNULIB's compiler warning code
Action: synchronized

To pull the PR as Git branch:
git remote add ghsssd https://github.com/SSSD/sssd
git fetch ghsssd pull/50/head:pr50
git checkout pr50
From 185ff593a0e1010ad67914e5573de4e37cde45a5 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Fabiano=20Fid=C3=AAncio?= <fiden...@redhat.com>
Date: Wed, 12 Oct 2016 15:00:04 +0200
Subject: [PATCH 01/19] RESOLV: Fix "-Werror=null-dereference" caught by GCC
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Signed-off-by: Fabiano Fidêncio <fiden...@redhat.com>
---
 src/resolv/async_resolv.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/src/resolv/async_resolv.c b/src/resolv/async_resolv.c
index e859556..e7a4217 100644
--- a/src/resolv/async_resolv.c
+++ b/src/resolv/async_resolv.c
@@ -2247,7 +2247,9 @@ static int reply_weight_rearrange(int len,
             new_end = r;
         }
     }
-    new_end->next = NULL;
+    if (new_end) {
+        new_end->next = NULL;
+    }
 
     /* return the rearranged list */
     *start = new_start;

From 689f54fd41eb4ec256284d29074fa01d245b4bf5 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Fabiano=20Fid=C3=AAncio?= <fiden...@redhat.com>
Date: Wed, 12 Oct 2016 16:02:55 +0200
Subject: [PATCH 02/19] SIFP: Fix "-Wjump-misses-init" caught by GCC
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Signed-off-by: Fabiano Fidêncio <fiden...@redhat.com>
---
 src/lib/sifp/sss_sifp_parser.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/src/lib/sifp/sss_sifp_parser.c b/src/lib/sifp/sss_sifp_parser.c
index 65babb5..43eab4d 100644
--- a/src/lib/sifp/sss_sifp_parser.c
+++ b/src/lib/sifp/sss_sifp_parser.c
@@ -283,7 +283,8 @@ sss_sifp_parse_basic(sss_sifp_ctx *ctx,
                     uint64_t, uint64_t, uint64, done);
         break;
     case DBUS_TYPE_STRING:
-    case DBUS_TYPE_OBJECT_PATH: ;
+    case DBUS_TYPE_OBJECT_PATH:
+    {
         const char *val = NULL;
 
         dbus_message_iter_get_basic(iter, &val);
@@ -306,6 +307,7 @@ sss_sifp_parse_basic(sss_sifp_ctx *ctx,
 
         ret = SSS_SIFP_OK;
         break;
+    }
     default:
         ret = SSS_SIFP_INVALID_ARGUMENT;
         break;

From 9c3f6ecf4702e7c3f9a999417fe8553215cacd65 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Fabiano=20Fid=C3=AAncio?= <fiden...@redhat.com>
Date: Wed, 12 Oct 2016 17:08:16 +0200
Subject: [PATCH 03/19] NSS: Fix "-Wold-style-definition" caught by GCC
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Signed-off-by: Fabiano Fidêncio <fiden...@redhat.com>
---
 src/responder/nss/nss_iface.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/responder/nss/nss_iface.c b/src/responder/nss/nss_iface.c
index b01732e..6c55f91 100644
--- a/src/responder/nss/nss_iface.c
+++ b/src/responder/nss/nss_iface.c
@@ -32,7 +32,7 @@ static struct sbus_iface_map iface_map[] = {
     { NULL, NULL }
 };
 
-struct sbus_iface_map *nss_get_sbus_interface()
+struct sbus_iface_map *nss_get_sbus_interface(void)
 {
     return iface_map;
 }

From 02a0954853a0c6b0061134b622c964d25ad0de3c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Fabiano=20Fid=C3=AAncio?= <fiden...@redhat.com>
Date: Wed, 19 Oct 2016 09:05:30 +0200
Subject: [PATCH 04/19] TESTS: Fix "-Werror=null-dereference" caught by GCC
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Signed-off-by: Fabiano Fidêncio <fiden...@redhat.com>
---
 src/tests/krb5_child-test.c | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/src/tests/krb5_child-test.c b/src/tests/krb5_child-test.c
index d570d52..ec81826 100644
--- a/src/tests/krb5_child-test.c
+++ b/src/tests/krb5_child-test.c
@@ -210,8 +210,18 @@ create_dummy_req(TALLOC_CTX *mem_ctx, const char *user,
 
     /* The Kerberos context */
     kr->krb5_ctx = create_dummy_krb5_ctx(kr, realm);
+    if (!kr->krb5_ctx) {
+        DEBUG(SSSDBG_FATAL_FAILURE,
+              "Failed to create dummy krb5_ctx\n");
+        goto fail;
+    }
     /* PAM Data structure */
     kr->pd = create_dummy_pam_data(kr, user, password);
+    if (!kr->pd) {
+        DEBUG(SSSDBG_FATAL_FAILURE,
+              "Failed to create dummy pam_data");
+        goto fail;
+    }
 
     ret = krb5_get_simple_upn(kr, kr->krb5_ctx, NULL, kr->pd->user, NULL,
                               &kr->upn);

From 6483eb57123e3331ad952e8a1d7b060016beb1c4 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Fabiano=20Fid=C3=AAncio?= <fiden...@redhat.com>
Date: Tue, 8 Nov 2016 20:51:42 +0100
Subject: [PATCH 05/19] TOOLS: Fix "-Wstack-protector" caught by GCC
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

This warning only happens when building SSSD on RHEL6.

Signed-off-by: Fabiano Fidêncio <fiden...@redhat.com>
---
 src/tools/tools_util.c | 7 +++----
 1 file changed, 3 insertions(+), 4 deletions(-)

diff --git a/src/tools/tools_util.c b/src/tools/tools_util.c
index 5e51a40..f32d85b 100644
--- a/src/tools/tools_util.c
+++ b/src/tools/tools_util.c
@@ -73,18 +73,17 @@ static int setup_db(struct tools_ctx *ctx)
 void usage(poptContext pc, const char *error)
 {
     size_t lentmp;
-    char nl[2] = "";
 
     poptPrintUsage(pc, stderr, 0);
 
     if (error) {
         lentmp = strlen(error);
         if ((lentmp > 0) && (error[lentmp - 1] != '\n')) {
-            nl[0]='\n';
-            nl[1]='\0';
+            fprintf(stderr, "%s\n", error);
+            return;
         }
 
-        fprintf(stderr, "%s%s", error, nl);
+        fprintf(stderr, "%s", error);
     }
 }
 

From 831ec806fc756ab36e42aefe03a882514499e89b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Fabiano=20Fid=C3=AAncio?= <fiden...@redhat.com>
Date: Tue, 8 Nov 2016 21:05:09 +0100
Subject: [PATCH 06/19] SSSCTL: Fix "-Wshadow" warning caught by GCC
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

This warning only happens when building SSSD on RHEL6.

Signed-off-by: Fabiano Fidêncio <fiden...@redhat.com>
---
 src/tools/sssctl/sssctl_cache.c | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/src/tools/sssctl/sssctl_cache.c b/src/tools/sssctl/sssctl_cache.c
index b1a7cc9..41f3e3f 100644
--- a/src/tools/sssctl/sssctl_cache.c
+++ b/src/tools/sssctl/sssctl_cache.c
@@ -30,7 +30,7 @@
 
 #define NOT_FOUND_MSG(obj) _(obj " %s is not present in cache.\n")
 
-#define SSSCTL_CACHE_NAME   {_("Name"), SYSDB_NAME, attr_name}
+#define SSSCTL_CACHE_NAME   {_("Name"), SYSDB_NAME, attr_name_fn}
 #define SSSCTL_CACHE_CREATE {_("Cache entry creation date"), SYSDB_CREATE_TIME, attr_time}
 #define SSSCTL_CACHE_UPDATE {_("Cache entry last update time"), SYSDB_LAST_UPDATE, attr_time}
 #define SSSCTL_CACHE_EXPIRE {_("Cache entry expiration time"), SYSDB_CACHE_EXPIRE, attr_expire}
@@ -87,11 +87,11 @@ static errno_t time_to_string(TALLOC_CTX *mem_ctx,
     return EOK;
 }
 
-static errno_t attr_name(TALLOC_CTX *mem_ctx,
-                           struct sysdb_attrs *entry,
-                           struct sss_domain_info *dom,
-                           const char *attr,
-                           const char **_value)
+static errno_t attr_name_fn(TALLOC_CTX *mem_ctx,
+                            struct sysdb_attrs *entry,
+                            struct sss_domain_info *dom,
+                            const char *attr,
+                            const char **_value)
 {
     errno_t ret;
     const char *orig_name;

From dd62462c6c076887cb2c5ab01f8365b08640eea3 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Fabiano=20Fid=C3=AAncio?= <fiden...@redhat.com>
Date: Tue, 8 Nov 2016 22:05:33 +0100
Subject: [PATCH 07/19] SSSCTL: Use _fn suffix for the sssctl_attr_fn functions
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

As done for the attr_name_fn to avoid "-Wshadow", let's be consistent
and do the same for all the other sssctl_attr_fn functions.

Signed-off-by: Fabiano Fidêncio <fiden...@redhat.com>
---
 src/tools/sssctl/sssctl_cache.c | 38 +++++++++++++++++++-------------------
 1 file changed, 19 insertions(+), 19 deletions(-)

diff --git a/src/tools/sssctl/sssctl_cache.c b/src/tools/sssctl/sssctl_cache.c
index 41f3e3f..6caf79a 100644
--- a/src/tools/sssctl/sssctl_cache.c
+++ b/src/tools/sssctl/sssctl_cache.c
@@ -31,10 +31,10 @@
 #define NOT_FOUND_MSG(obj) _(obj " %s is not present in cache.\n")
 
 #define SSSCTL_CACHE_NAME   {_("Name"), SYSDB_NAME, attr_name_fn}
-#define SSSCTL_CACHE_CREATE {_("Cache entry creation date"), SYSDB_CREATE_TIME, attr_time}
-#define SSSCTL_CACHE_UPDATE {_("Cache entry last update time"), SYSDB_LAST_UPDATE, attr_time}
-#define SSSCTL_CACHE_EXPIRE {_("Cache entry expiration time"), SYSDB_CACHE_EXPIRE, attr_expire}
-#define SSSCTL_CACHE_IFP    {_("Cached in InfoPipe"), SYSDB_IFP_CACHED, attr_yesno}
+#define SSSCTL_CACHE_CREATE {_("Cache entry creation date"), SYSDB_CREATE_TIME, attr_time_fn}
+#define SSSCTL_CACHE_UPDATE {_("Cache entry last update time"), SYSDB_LAST_UPDATE, attr_time_fn}
+#define SSSCTL_CACHE_EXPIRE {_("Cache entry expiration time"), SYSDB_CACHE_EXPIRE, attr_expire_fn}
+#define SSSCTL_CACHE_IFP    {_("Cached in InfoPipe"), SYSDB_IFP_CACHED, attr_yesno_fn}
 #define SSSCTL_CACHE_NULL   {NULL, NULL, NULL}
 
 enum cache_object {
@@ -123,11 +123,11 @@ static errno_t attr_name_fn(TALLOC_CTX *mem_ctx,
     return EOK;
 }
 
-static errno_t attr_time(TALLOC_CTX *mem_ctx,
-                         struct sysdb_attrs *entry,
-                         struct sss_domain_info *dom,
-                         const char *attr,
-                         const char **_value)
+static errno_t attr_time_fn(TALLOC_CTX *mem_ctx,
+                            struct sysdb_attrs *entry,
+                            struct sss_domain_info *dom,
+                            const char *attr,
+                            const char **_value)
 {
     uint32_t value;
     errno_t ret;
@@ -140,11 +140,11 @@ static errno_t attr_time(TALLOC_CTX *mem_ctx,
     return time_to_string(mem_ctx, value, _value);
 }
 
-static errno_t attr_expire(TALLOC_CTX *mem_ctx,
-                           struct sysdb_attrs *entry,
-                           struct sss_domain_info *dom,
-                           const char *attr,
-                           const char **_value)
+static errno_t attr_expire_fn(TALLOC_CTX *mem_ctx,
+                              struct sysdb_attrs *entry,
+                              struct sss_domain_info *dom,
+                              const char *attr,
+                              const char **_value)
 {
     uint32_t value;
     errno_t ret;
@@ -187,11 +187,11 @@ static errno_t attr_initgr(TALLOC_CTX *mem_ctx,
     return time_to_string(mem_ctx, value, _value);
 }
 
-static errno_t attr_yesno(TALLOC_CTX *mem_ctx,
-                          struct sysdb_attrs *entry,
-                          struct sss_domain_info *dom,
-                          const char *attr,
-                          const char **_value)
+static errno_t attr_yesno_fn(TALLOC_CTX *mem_ctx,
+                             struct sysdb_attrs *entry,
+                             struct sss_domain_info *dom,
+                             const char *attr,
+                             const char **_value)
 {
     errno_t ret;
     bool val;

From 4674c64c343c77fcaaa5213f6cf905669260dc53 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Fabiano=20Fid=C3=AAncio?= <fiden...@redhat.com>
Date: Tue, 8 Nov 2016 21:07:06 +0100
Subject: [PATCH 08/19] SSSCTL: Fix "-Wunitialized" caught by GCC
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

This warning only happens when building SSSD on RHEL6.

Signed-off-by: Fabiano Fidêncio <fiden...@redhat.com>
---
 src/tools/sssctl/sssctl_cache.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/tools/sssctl/sssctl_cache.c b/src/tools/sssctl/sssctl_cache.c
index 6caf79a..043b6b8 100644
--- a/src/tools/sssctl/sssctl_cache.c
+++ b/src/tools/sssctl/sssctl_cache.c
@@ -347,7 +347,7 @@ static errno_t sssctl_find_object(TALLOC_CTX *mem_ctx,
 {
     TALLOC_CTX *tmp_ctx;
     struct sss_domain_info *dom;
-    struct sysdb_attrs *entry;
+    struct sysdb_attrs *entry = NULL;
     struct ldb_dn *base_dn;
     bool fqn_provided;
     const char *filter;
@@ -424,8 +424,8 @@ static errno_t sssctl_fetch_object(TALLOC_CTX *mem_ctx,
                                    struct sss_domain_info **_dom)
 {
     TALLOC_CTX *tmp_ctx;
-    struct sysdb_attrs *entry;
-    struct sss_domain_info *dom;
+    struct sysdb_attrs *entry = NULL;
+    struct sss_domain_info *dom = NULL;
     const char **attrs;
     char *sanitized;
     errno_t ret;

From 1c05bee33ffef4e2e3560442604d9a9bcdd12203 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Fabiano=20Fid=C3=AAncio?= <fiden...@redhat.com>
Date: Tue, 8 Nov 2016 21:41:45 +0100
Subject: [PATCH 09/19] KRB5: Fix "-Wdiscarded-qualifiers" caught by GCC
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

This warning only happens when building SSSD on RHEL6.

Signed-off-by: Fabiano Fidêncio <fiden...@redhat.com>
---
 src/providers/krb5/krb5_child.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/providers/krb5/krb5_child.c b/src/providers/krb5/krb5_child.c
index df94bc4..09673a8 100644
--- a/src/providers/krb5/krb5_child.c
+++ b/src/providers/krb5/krb5_child.c
@@ -1464,7 +1464,7 @@ static errno_t changepw_child(struct krb5_req *kr, bool prelim)
     kerr = krb5_get_init_creds_password(kr->ctx, kr->creds, kr->princ,
                                         password_or_responder(password),
                                         prompter, kr, 0,
-                                        SSSD_KRB5_CHANGEPW_PRINCIPAL,
+                                        discard_const(SSSD_KRB5_CHANGEPW_PRINCIPAL),
                                         kr->options);
     DEBUG(SSSDBG_TRACE_INTERNAL,
           "chpass is%s using OTP\n", kr->otp ? "" : " not");
@@ -1672,7 +1672,7 @@ static errno_t tgt_req_child(struct krb5_req *kr)
     kerr = krb5_get_init_creds_password(kr->ctx, kr->creds, kr->princ,
                                         password_or_responder(password),
                                         sss_krb5_prompter, kr, 0,
-                                        SSSD_KRB5_CHANGEPW_PRINCIPAL,
+                                        discard_const(SSSD_KRB5_CHANGEPW_PRINCIPAL),
                                         kr->options);
 
     krb5_free_cred_contents(kr->ctx, kr->creds);

From 8b3e2934589c3d6ae57bf25f317173a49a6df60e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Fabiano=20Fid=C3=AAncio?= <fiden...@redhat.com>
Date: Tue, 8 Nov 2016 22:00:32 +0100
Subject: [PATCH 10/19] TESTS: Fix "-Wshadow" caught by GCC
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

This warning only happens when building SSSD on RHEL6.

Signed-off-by: Fabiano Fidêncio <fiden...@redhat.com>
---
 src/tests/sbus_codegen_tests.c | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/src/tests/sbus_codegen_tests.c b/src/tests/sbus_codegen_tests.c
index 05eb78d..4473110 100644
--- a/src/tests/sbus_codegen_tests.c
+++ b/src/tests/sbus_codegen_tests.c
@@ -115,15 +115,15 @@ END_TEST
 
 START_TEST(test_signals)
 {
-    const struct sbus_signal_meta *signal;
+    const struct sbus_signal_meta *sm_signal;
     const struct sbus_arg_meta *arg;
 
-    signal = sbus_meta_find_signal(&com_planetexpress_Ship_meta, "BecameSentient");
-    ck_assert(signal != NULL);
-    ck_assert_str_eq(signal->name, "BecameSentient");
-    ck_assert(signal->args != NULL);
+    sm_signal = sbus_meta_find_signal(&com_planetexpress_Ship_meta, "BecameSentient");
+    ck_assert(sm_signal != NULL);
+    ck_assert_str_eq(sm_signal->name, "BecameSentient");
+    ck_assert(sm_signal->args != NULL);
 
-    arg = find_arg(signal->args, "gender");
+    arg = find_arg(sm_signal->args, "gender");
     ck_assert(arg != NULL);
     ck_assert_str_eq(arg->name, "gender");
     ck_assert_str_eq(arg->type, "s");

From a1c2663be72fa7bb3bfe0a9923f2ec43fe2d1b5d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Fabiano=20Fid=C3=AAncio?= <fiden...@redhat.com>
Date: Tue, 8 Nov 2016 23:20:06 +0100
Subject: [PATCH 11/19] IPA: Fix "-Wunitialized" caught by GCC
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

This warning only happens when building SSSD on RHEL6.

Signed-off-by: Fabiano Fidêncio <fiden...@redhat.com>
---
 src/providers/ipa/ipa_subdomains.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/providers/ipa/ipa_subdomains.c b/src/providers/ipa/ipa_subdomains.c
index 8653e3f..edb8169 100644
--- a/src/providers/ipa/ipa_subdomains.c
+++ b/src/providers/ipa/ipa_subdomains.c
@@ -739,7 +739,7 @@ static void ipa_subdomains_ranges_done(struct tevent_req *subreq)
 {
     struct ipa_subdomains_ranges_state *state;
     struct tevent_req *req;
-    struct range_info **range_list;
+    struct range_info **range_list = NULL;
     struct sysdb_attrs **reply;
     size_t reply_count;
     errno_t ret;

From 5f87667120a3748eb0e0f79a52781c1b4bf544d9 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Fabiano=20Fid=C3=AAncio?= <fiden...@redhat.com>
Date: Wed, 9 Nov 2016 00:09:27 +0100
Subject: [PATCH 12/19] AD: Fix "-Wunitialized" caught by GCC
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

This warning only happens when building SSSD on RHEL6.

Signed-off-by: Fabiano Fidêncio <fiden...@redhat.com>
---
 src/providers/ad/ad_pac.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/providers/ad/ad_pac.c b/src/providers/ad/ad_pac.c
index 1fd7fd2..36c5878 100644
--- a/src/providers/ad/ad_pac.c
+++ b/src/providers/ad/ad_pac.c
@@ -112,7 +112,7 @@ errno_t check_if_pac_is_available(TALLOC_CTX *mem_ctx,
                                   struct dp_id_data *ar,
                                   struct ldb_message **_msg)
 {
-    struct ldb_message *msg;
+    struct ldb_message *msg = NULL;
     struct ldb_message_element *el;
     uint64_t pac_expires;
     time_t now;
@@ -169,7 +169,7 @@ errno_t ad_get_sids_from_pac(TALLOC_CTX *mem_ctx,
     char *user_sid_str = NULL;
     char *primary_group_sid_str = NULL;
     size_t c;
-    size_t num_sids;
+    size_t num_sids = 0;
     char **sid_list = NULL;
     struct hash_iter_context_t *iter = NULL;
     hash_entry_t *entry;

From ca4ae3168431c6dc01557ce3f8f642a108131654 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Fabiano=20Fid=C3=AAncio?= <fiden...@redhat.com>
Date: Wed, 9 Nov 2016 10:07:13 +0100
Subject: [PATCH 13/19] DP_TARGET_SUDO: Fix "-Wuninitialized" caught by GCC
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

This warning only happens when building SSSD on RHEL6.

Signed-off-by: Fabiano Fidêncio <fiden...@redhat.com>
---
 src/providers/data_provider/dp_target_sudo.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/providers/data_provider/dp_target_sudo.c b/src/providers/data_provider/dp_target_sudo.c
index 37add97..cac1493 100644
--- a/src/providers/data_provider/dp_target_sudo.c
+++ b/src/providers/data_provider/dp_target_sudo.c
@@ -172,7 +172,7 @@ static const char *dp_sudo_get_name(uint32_t type)
 errno_t dp_sudo_handler(struct sbus_request *sbus_req, void *dp_cli)
 {
     struct dp_sudo_data *data;
-    uint32_t dp_flags;
+    uint32_t dp_flags = 0;
     const char *key;
     const char *name;
     errno_t ret;

From 26492f20fb024a9803545f375ebb5ca66c8a6717 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Fabiano=20Fid=C3=AAncio?= <fiden...@redhat.com>
Date: Wed, 9 Nov 2016 10:41:12 +0100
Subject: [PATCH 14/19] IDMAP: Fix "-Wuninitialized" caught by GCC
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

This warning only happens when building SSSD on RHEL6.

Signed-off-by: Fabiano Fidêncio <fiden...@redhat.com>
---
 src/sss_client/idmap/sss_nss_idmap.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/sss_client/idmap/sss_nss_idmap.c b/src/sss_client/idmap/sss_nss_idmap.c
index fa5a499..6fd67c4 100644
--- a/src/sss_client/idmap/sss_nss_idmap.c
+++ b/src/sss_client/idmap/sss_nss_idmap.c
@@ -152,7 +152,7 @@ static int sss_nss_getyyybyxxx(union input inp, enum sss_cli_command cmd ,
     char *str = NULL;
     size_t data_len;
     uint32_t c;
-    struct sss_nss_kv *kv_list;
+    struct sss_nss_kv *kv_list = NULL;
 
     switch (cmd) {
     case SSS_NSS_GETSIDBYNAME:

From be9fa3946caee9033bde9b4c7e0edc329a51eaa7 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Fabiano=20Fid=C3=AAncio?= <fiden...@redhat.com>
Date: Wed, 9 Nov 2016 11:15:49 +0100
Subject: [PATCH 15/19] SBUS: Fix "-Wuninitialized" caught by GCC
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

This warning only happens when building SSSD on RHEL6.

Signed-off-by: Fabiano Fidêncio <fiden...@redhat.com>
---
 src/sbus/sssd_dbus_interface.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/sbus/sssd_dbus_interface.c b/src/sbus/sssd_dbus_interface.c
index e96e29b..4588639 100644
--- a/src/sbus/sssd_dbus_interface.c
+++ b/src/sbus/sssd_dbus_interface.c
@@ -922,7 +922,7 @@ sbus_conn_register_iface(struct sbus_connection *conn,
                          void *handler_data)
 {
     struct sbus_interface *iface = NULL;
-    bool path_known;
+    bool path_known = false;
     errno_t ret;
 
     if (conn == NULL || iface_vtable == NULL || object_path == NULL) {

From 3d7f4c430ce6985c2d80d672a7bdadf488dc5ec2 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Fabiano=20Fid=C3=AAncio?= <fiden...@redhat.com>
Date: Wed, 9 Nov 2016 11:51:31 +0100
Subject: [PATCH 16/19] PROXY: Fix "-Wuninitialized" caught by GCC
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

This warning only happens when building SSSD on RHEL6.

Signed-off-by: Fabiano Fidêncio <fiden...@redhat.com>
---
 src/providers/proxy/proxy_init.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/providers/proxy/proxy_init.c b/src/providers/proxy/proxy_init.c
index 2241daf..3168c90 100644
--- a/src/providers/proxy/proxy_init.c
+++ b/src/providers/proxy/proxy_init.c
@@ -288,7 +288,7 @@ errno_t sssm_proxy_init(TALLOC_CTX *mem_ctx,
                        const char *module_name,
                        void **_module_data)
 {
-    struct proxy_auth_ctx *auth_ctx;
+    struct proxy_auth_ctx *auth_ctx = NULL;
     errno_t ret;
 
     if (!dp_target_enabled(provider, module_name,

From 600c89ab8a0747d4134f44c3ef659584d4e8b953 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Fabiano=20Fid=C3=AAncio?= <fiden...@redhat.com>
Date: Wed, 9 Nov 2016 12:52:10 +0100
Subject: [PATCH 17/19] SECRETS: Fix "-Wuninitialized" caught by GCC
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

This warning only happens when building SSSD on RHEL6.

Signed-off-by: Fabiano Fidêncio <fiden...@redhat.com>
---
 src/responder/secrets/proxy.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/responder/secrets/proxy.c b/src/responder/secrets/proxy.c
index 3ed03e6..ac2b65c 100644
--- a/src/responder/secrets/proxy.c
+++ b/src/responder/secrets/proxy.c
@@ -912,7 +912,7 @@ struct tevent_req *proxy_secret_req(TALLOC_CTX *mem_ctx,
     struct tevent_req *req, *subreq;
     struct proxy_secret_state *state;
     struct proxy_context *pctx;
-    struct sec_data *http_req;
+    struct sec_data *http_req = NULL;
     char *http_uri;
     int ret;
 

From b4d02c70aa27388fd54bf3248b660a98daf41e3f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Fabiano=20Fid=C3=AAncio?= <fiden...@redhat.com>
Date: Tue, 8 Nov 2016 21:00:36 +0100
Subject: [PATCH 18/19] AD: Don't warn in case INI_PARSE_IGNORE_NON_KVP is not
 defined
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

It breaks compilation on RHEL6 when treating warnings as errors.

Signed-off-by: Fabiano Fidêncio <fiden...@redhat.com>
---
 src/providers/ad/ad_gpo.c | 1 -
 1 file changed, 1 deletion(-)

diff --git a/src/providers/ad/ad_gpo.c b/src/providers/ad/ad_gpo.c
index 2b06a0e..ccf6705 100644
--- a/src/providers/ad/ad_gpo.c
+++ b/src/providers/ad/ad_gpo.c
@@ -100,7 +100,6 @@
 /* If INI_PARSE_IGNORE_NON_KVP is not defined, use 0 (no effect) */
 #ifndef INI_PARSE_IGNORE_NON_KVP
 #define INI_PARSE_IGNORE_NON_KVP 0
-#warning INI_PARSE_IGNORE_NON_KVP not defined.
 #endif
 
 /* fd used by the gpo_child process for logging */

From 508cddbac06b85689ecb78a6aa8990cd6f53dd53 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Fabiano=20Fid=C3=AAncio?= <fiden...@redhat.com>
Date: Thu, 11 Aug 2016 07:58:44 +0200
Subject: [PATCH 19/19] BUILD: Make use of GNULIB's compiler warning code
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

As GNULIB has the 'manywarnings' module, which basically turns on every
GCC warning, let's make use of it. We can easily blacklist the warnings
we cannot cope with, but the main goal should be to have enabled every
possible GCC warning.

When new GCC warnings are created the 'manywarnings' file can be
refreshed from upstream GNULIB.

Signed-off-by: Fabiano Fidêncio <fiden...@redhat.com>
---
 Makefile.am                  |   7 +-
 configure.ac                 |   5 +
 src/manywarnings.m4          | 274 +++++++++++++++++++++++++++++++++++++++++++
 src/sssd-compile-warnings.m4 |  83 +++++++++++++
 src/warnings.m4              |  79 +++++++++++++
 5 files changed, 442 insertions(+), 6 deletions(-)
 create mode 100644 src/manywarnings.m4
 create mode 100644 src/sssd-compile-warnings.m4
 create mode 100644 src/warnings.m4

diff --git a/Makefile.am b/Makefile.am
index e037930..2d4c515 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -103,12 +103,7 @@ if WANT_AUX_INFO
     AM_CFLAGS += -aux-info $@.X
 endif
 if HAVE_GCC
-    AM_CFLAGS += -Wall -Wshadow -Wstrict-prototypes -Wpointer-arith \
-                 -Wcast-qual -Wcast-align -Wwrite-strings -Wundef \
-                 -Werror-implicit-function-declaration -Winit-self \
-                 -Wmissing-include-dirs \
-                 -fno-strict-aliasing \
-                 -std=gnu99
+    AM_CFLAGS += $(WARN_CFLAGS)
 endif
 
 pkgconfig_DATA =
diff --git a/configure.ac b/configure.ac
index d3ef1e1..7d0ca19 100644
--- a/configure.ac
+++ b/configure.ac
@@ -11,6 +11,11 @@ m4_ifdef([AC_USE_SYSTEM_EXTENSIONS],
     [AC_USE_SYSTEM_EXTENSIONS],
     [AC_GNU_SOURCE])
 
+m4_include([src/warnings.m4])
+m4_include([src/manywarnings.m4])
+m4_include([src/sssd-compile-warnings.m4])
+SSSD_COMPILE_WARNINGS
+
 CFLAGS="$CFLAGS -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE"
 
 
diff --git a/src/manywarnings.m4 b/src/manywarnings.m4
new file mode 100644
index 0000000..90823b0
--- /dev/null
+++ b/src/manywarnings.m4
@@ -0,0 +1,274 @@
+# manywarnings.m4 serial 8
+dnl Copyright (C) 2008-2016 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl From Simon Josefsson
+
+# gl_MANYWARN_COMPLEMENT(OUTVAR, LISTVAR, REMOVEVAR)
+# --------------------------------------------------
+# Copy LISTVAR to OUTVAR except for the entries in REMOVEVAR.
+# Elements separated by whitespace.  In set logic terms, the function
+# does OUTVAR = LISTVAR \ REMOVEVAR.
+AC_DEFUN([gl_MANYWARN_COMPLEMENT],
+[
+  gl_warn_set=
+  set x $2; shift
+  for gl_warn_item
+  do
+    case " $3 " in
+      *" $gl_warn_item "*)
+        ;;
+      *)
+        gl_warn_set="$gl_warn_set $gl_warn_item"
+        ;;
+    esac
+  done
+  $1=$gl_warn_set
+])
+
+# gl_MANYWARN_ALL_GCC(VARIABLE)
+# -----------------------------
+# Add all documented GCC warning parameters to variable VARIABLE.
+# Note that you need to test them using gl_WARN_ADD if you want to
+# make sure your gcc understands it.
+AC_DEFUN([gl_MANYWARN_ALL_GCC],
+[
+  dnl First, check for some issues that only occur when combining multiple
+  dnl gcc warning categories.
+  AC_REQUIRE([AC_PROG_CC])
+  if test -n "$GCC"; then
+
+    dnl Check if -W -Werror -Wno-missing-field-initializers is supported
+    dnl with the current $CC $CFLAGS $CPPFLAGS.
+    AC_MSG_CHECKING([whether -Wno-missing-field-initializers is supported])
+    AC_CACHE_VAL([gl_cv_cc_nomfi_supported], [
+      gl_save_CFLAGS="$CFLAGS"
+      CFLAGS="$CFLAGS -W -Werror -Wno-missing-field-initializers"
+      AC_COMPILE_IFELSE(
+        [AC_LANG_PROGRAM([[]], [[]])],
+        [gl_cv_cc_nomfi_supported=yes],
+        [gl_cv_cc_nomfi_supported=no])
+      CFLAGS="$gl_save_CFLAGS"])
+    AC_MSG_RESULT([$gl_cv_cc_nomfi_supported])
+
+    if test "$gl_cv_cc_nomfi_supported" = yes; then
+      dnl Now check whether -Wno-missing-field-initializers is needed
+      dnl for the { 0, } construct.
+      AC_MSG_CHECKING([whether -Wno-missing-field-initializers is needed])
+      AC_CACHE_VAL([gl_cv_cc_nomfi_needed], [
+        gl_save_CFLAGS="$CFLAGS"
+        CFLAGS="$CFLAGS -W -Werror"
+        AC_COMPILE_IFELSE(
+          [AC_LANG_PROGRAM(
+             [[void f (void)
+               {
+                 typedef struct { int a; int b; } s_t;
+                 s_t s1 = { 0, };
+               }
+             ]],
+             [[]])],
+          [gl_cv_cc_nomfi_needed=no],
+          [gl_cv_cc_nomfi_needed=yes])
+        CFLAGS="$gl_save_CFLAGS"
+      ])
+      AC_MSG_RESULT([$gl_cv_cc_nomfi_needed])
+    fi
+
+    dnl Next, check if -Werror -Wuninitialized is useful with the
+    dnl user's choice of $CFLAGS; some versions of gcc warn that it
+    dnl has no effect if -O is not also used
+    AC_MSG_CHECKING([whether -Wuninitialized is supported])
+    AC_CACHE_VAL([gl_cv_cc_uninitialized_supported], [
+      gl_save_CFLAGS="$CFLAGS"
+      CFLAGS="$CFLAGS -Werror -Wuninitialized"
+      AC_COMPILE_IFELSE(
+        [AC_LANG_PROGRAM([[]], [[]])],
+        [gl_cv_cc_uninitialized_supported=yes],
+        [gl_cv_cc_uninitialized_supported=no])
+      CFLAGS="$gl_save_CFLAGS"])
+    AC_MSG_RESULT([$gl_cv_cc_uninitialized_supported])
+
+  fi
+
+  # List all gcc warning categories.
+  # To compare this list to your installed GCC's, run this Bash command:
+  #
+  # comm -3 \
+  #  <(sed -n 's/^  *\(-[^ ]*\) .*/\1/p' manywarnings.m4 | sort) \
+  #  <(gcc --help=warnings | sed -n 's/^  \(-[^ ]*\) .*/\1/p' | sort |
+  #      grep -v -x -f <(
+  #         awk '/^[^#]/ {print $1}' ../build-aux/gcc-warning.spec))
+
+  gl_manywarn_set=
+  for gl_manywarn_item in \
+    -W \
+    -Wabi \
+    -Waddress \
+    -Waggressive-loop-optimizations \
+    -Wall \
+    -Wattributes \
+    -Wbad-function-cast \
+    -Wbool-compare \
+    -Wbuiltin-macro-redefined \
+    -Wcast-align \
+    -Wchar-subscripts \
+    -Wchkp \
+    -Wclobbered \
+    -Wcomment \
+    -Wcomments \
+    -Wcoverage-mismatch \
+    -Wcpp \
+    -Wdate-time \
+    -Wdeprecated \
+    -Wdeprecated-declarations \
+    -Wdesignated-init \
+    -Wdisabled-optimization \
+    -Wdiscarded-array-qualifiers \
+    -Wdiscarded-qualifiers \
+    -Wdiv-by-zero \
+    -Wdouble-promotion \
+    -Wduplicated-cond \
+    -Wempty-body \
+    -Wendif-labels \
+    -Wenum-compare \
+    -Wextra \
+    -Wformat-contains-nul \
+    -Wformat-extra-args \
+    -Wformat-nonliteral \
+    -Wformat-security \
+    -Wformat-signedness \
+    -Wformat-y2k \
+    -Wformat-zero-length \
+    -Wframe-address \
+    -Wfree-nonheap-object \
+    -Whsa \
+    -Wignored-attributes \
+    -Wignored-qualifiers \
+    -Wimplicit \
+    -Wimplicit-function-declaration \
+    -Wimplicit-int \
+    -Wincompatible-pointer-types \
+    -Winit-self \
+    -Winline \
+    -Wint-conversion \
+    -Wint-to-pointer-cast \
+    -Winvalid-memory-model \
+    -Winvalid-pch \
+    -Wjump-misses-init \
+    -Wlogical-not-parentheses \
+    -Wlogical-op \
+    -Wmain \
+    -Wmaybe-uninitialized \
+    -Wmemset-transposed-args \
+    -Wmisleading-indentation \
+    -Wmissing-braces \
+    -Wmissing-declarations \
+    -Wmissing-field-initializers \
+    -Wmissing-include-dirs \
+    -Wmissing-parameter-type \
+    -Wmissing-prototypes \
+    -Wmultichar \
+    -Wnarrowing \
+    -Wnested-externs \
+    -Wnonnull \
+    -Wnonnull-compare \
+    -Wnull-dereference \
+    -Wodr \
+    -Wold-style-declaration \
+    -Wold-style-definition \
+    -Wopenmp-simd \
+    -Woverflow \
+    -Woverlength-strings \
+    -Woverride-init \
+    -Wpacked \
+    -Wpacked-bitfield-compat \
+    -Wparentheses \
+    -Wpointer-arith \
+    -Wpointer-sign \
+    -Wpointer-to-int-cast \
+    -Wpragmas \
+    -Wreturn-local-addr \
+    -Wreturn-type \
+    -Wscalar-storage-order \
+    -Wsequence-point \
+    -Wshadow \
+    -Wshift-count-negative \
+    -Wshift-count-overflow \
+    -Wshift-negative-value \
+    -Wsizeof-array-argument \
+    -Wsizeof-pointer-memaccess \
+    -Wstack-protector \
+    -Wstrict-aliasing \
+    -Wstrict-overflow \
+    -Wstrict-prototypes \
+    -Wsuggest-attribute=const \
+    -Wsuggest-attribute=format \
+    -Wsuggest-attribute=noreturn \
+    -Wsuggest-attribute=pure \
+    -Wsuggest-final-methods \
+    -Wsuggest-final-types \
+    -Wswitch \
+    -Wswitch-bool \
+    -Wswitch-default \
+    -Wsync-nand \
+    -Wsystem-headers \
+    -Wtautological-compare \
+    -Wtrampolines \
+    -Wtrigraphs \
+    -Wtype-limits \
+    -Wuninitialized \
+    -Wunknown-pragmas \
+    -Wunsafe-loop-optimizations \
+    -Wunused \
+    -Wunused-but-set-parameter \
+    -Wunused-but-set-variable \
+    -Wunused-function \
+    -Wunused-label \
+    -Wunused-local-typedefs \
+    -Wunused-macros \
+    -Wunused-parameter \
+    -Wunused-result \
+    -Wunused-value \
+    -Wunused-variable \
+    -Wvarargs \
+    -Wvariadic-macros \
+    -Wvector-operation-performance \
+    -Wvla \
+    -Wvolatile-register-var \
+    -Wwrite-strings \
+    \
+    ; do
+    gl_manywarn_set="$gl_manywarn_set $gl_manywarn_item"
+  done
+
+  # gcc --help=warnings outputs an unusual form for these options; list
+  # them here so that the above 'comm' command doesn't report a false match.
+  gl_manywarn_set="$gl_manywarn_set -Warray-bounds=2"
+  gl_manywarn_set="$gl_manywarn_set -Wnormalized=nfc"
+  gl_manywarn_set="$gl_manywarn_set -Wshift-overflow=2"
+  gl_manywarn_set="$gl_manywarn_set -Wunused-const-variable=2"
+
+  # These are needed for older GCC versions.
+  if test -n "$GCC"; then
+    case `($CC --version) 2>/dev/null` in
+      'gcc (GCC) '[[0-3]].* | \
+      'gcc (GCC) '4.[[0-7]].*)
+        gl_manywarn_set="$gl_manywarn_set -fdiagnostics-show-option"
+        gl_manywarn_set="$gl_manywarn_set -funit-at-a-time"
+          ;;
+    esac
+  fi
+
+  # Disable specific options as needed.
+  if test "$gl_cv_cc_nomfi_needed" = yes; then
+    gl_manywarn_set="$gl_manywarn_set -Wno-missing-field-initializers"
+  fi
+
+  if test "$gl_cv_cc_uninitialized_supported" = no; then
+    gl_manywarn_set="$gl_manywarn_set -Wno-uninitialized"
+  fi
+
+  $1=$gl_manywarn_set
+])
diff --git a/src/sssd-compile-warnings.m4 b/src/sssd-compile-warnings.m4
new file mode 100644
index 0000000..a323405
--- /dev/null
+++ b/src/sssd-compile-warnings.m4
@@ -0,0 +1,83 @@
+dnl
+dnl Enable all known GCC compiler warnings, except for those
+dnl we can't yet cope with
+dnl
+AC_DEFUN([SSSD_COMPILE_WARNINGS],[
+    dnl ******************************
+    dnl More compiler warnings
+    dnl ******************************
+
+    AC_ARG_ENABLE([werror],
+                  AS_HELP_STRING([--enable-werror], [Use -Werror (if supported)]),
+                  [set_werror="$enableval"],
+                  [if test -d $srcdir/.git; then
+                     is_git_version=true
+                     set_werror=yes
+                   else
+                     set_werror=no
+                   fi])
+
+    # Get all possible GCC warnings
+    gl_MANYWARN_ALL_GCC([wantwarn])
+
+    # Check for $CC support of each warning
+    for w in $wantwarn; do
+      gl_WARN_ADD([$w])
+    done
+
+    # Use improved glibc headers
+    AH_VERBATIM([FORTIFY_SOURCE],
+    [/* Enable compile-time and run-time bounds-checking, and some warnings,
+        without upsetting newer glibc. */
+     #if !defined _FORTIFY_SOURCE && defined __OPTIMIZE__ && __OPTIMIZE__
+     # define _FORTIFY_SOURCE 2
+     #endif
+    ])
+
+    # Extra special flags
+    gl_WARN_ADD([-fno-strict-aliasing])
+    gl_WARN_ADD([-std=gnu99])
+    gl_WARN_ADD([-Werror-implicit-declaration])
+
+    # If we enable this warning, compilation will break on every single
+    # system used by our CI.
+    gl_WARN_ADD([-Wno-system-headers])
+    gl_WARN_ADD([-Wno-cpp])
+    gl_WARN_ADD([-Wno-inline])
+
+    # If we enable this warning, complitaion will break on RHEL6
+    gl_WARN_ADD([-Wno-overlength-strings])
+
+    # Enable this again as soon as GCC is updated on RHEL6
+    # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=34114
+    gl_WARN_ADD([-Wno-unsafe-loop-optimizations])
+
+
+    # These are the warnings that, currently, we cannot cope with
+    gl_WARN_ADD([-Wno-array-bounds])
+    gl_WARN_ADD([-Wno-bad-function-cast])
+    gl_WARN_ADD([-Wno-format-nonliteral])
+    gl_WARN_ADD([-Wno-format-signedness])
+    gl_WARN_ADD([-Wno-format-y2k])
+    gl_WARN_ADD([-Wno-logical-op])
+    gl_WARN_ADD([-Wno-missing-prototypes])
+    gl_WARN_ADD([-Wno-missing-declarations])
+    gl_WARN_ADD([-Wno-packed])
+    gl_WARN_ADD([-Wno-sign-compare])
+    gl_WARN_ADD([-Wno-strict-overflow])
+    gl_WARN_ADD([-Wno-suggest-attribute=pure])
+    gl_WARN_ADD([-Wno-suggest-attribute=const])
+    gl_WARN_ADD([-Wno-suggest-attribute=format])
+    gl_WARN_ADD([-Wno-suggest-attribute=noreturn])
+    gl_WARN_ADD([-Wno-switch-default])
+    gl_WARN_ADD([-Wno-unused-parameter])
+    gl_WARN_ADD([-Wno-unused-macros])
+    gl_WARN_ADD([-Wno-vla])
+
+    if test "$set_werror" = "yes"
+    then
+      gl_WARN_ADD([-Werror])
+    fi
+
+    AC_SUBST([WARN_CFLAGS])
+])
diff --git a/src/warnings.m4 b/src/warnings.m4
new file mode 100644
index 0000000..924e21d
--- /dev/null
+++ b/src/warnings.m4
@@ -0,0 +1,79 @@
+# warnings.m4 serial 11
+dnl Copyright (C) 2008-2016 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl From Simon Josefsson
+
+# gl_AS_VAR_APPEND(VAR, VALUE)
+# ----------------------------
+# Provide the functionality of AS_VAR_APPEND if Autoconf does not have it.
+m4_ifdef([AS_VAR_APPEND],
+[m4_copy([AS_VAR_APPEND], [gl_AS_VAR_APPEND])],
+[m4_define([gl_AS_VAR_APPEND],
+[AS_VAR_SET([$1], [AS_VAR_GET([$1])$2])])])
+
+
+# gl_COMPILER_OPTION_IF(OPTION, [IF-SUPPORTED], [IF-NOT-SUPPORTED],
+#                       [PROGRAM = AC_LANG_PROGRAM()])
+# -----------------------------------------------------------------
+# Check if the compiler supports OPTION when compiling PROGRAM.
+#
+# FIXME: gl_Warn must be used unquoted until we can assume Autoconf
+# 2.64 or newer.
+AC_DEFUN([gl_COMPILER_OPTION_IF],
+[AS_VAR_PUSHDEF([gl_Warn], [gl_cv_warn_[]_AC_LANG_ABBREV[]_$1])dnl
+AS_VAR_PUSHDEF([gl_Flags], [_AC_LANG_PREFIX[]FLAGS])dnl
+AS_LITERAL_IF([$1],
+  [m4_pushdef([gl_Positive], m4_bpatsubst([$1], [^-Wno-], [-W]))],
+  [gl_positive="$1"
+case $gl_positive in
+  -Wno-*) gl_positive=-W`expr "X$gl_positive" : 'X-Wno-\(.*\)'` ;;
+esac
+m4_pushdef([gl_Positive], [$gl_positive])])dnl
+AC_CACHE_CHECK([whether _AC_LANG compiler handles $1], m4_defn([gl_Warn]), [
+  gl_save_compiler_FLAGS="$gl_Flags"
+  gl_AS_VAR_APPEND(m4_defn([gl_Flags]),
+    [" $gl_unknown_warnings_are_errors ]m4_defn([gl_Positive])["])
+  AC_LINK_IFELSE([m4_default([$4], [AC_LANG_PROGRAM([])])],
+                 [AS_VAR_SET(gl_Warn, [yes])],
+                 [AS_VAR_SET(gl_Warn, [no])])
+  gl_Flags="$gl_save_compiler_FLAGS"
+])
+AS_VAR_IF(gl_Warn, [yes], [$2], [$3])
+m4_popdef([gl_Positive])dnl
+AS_VAR_POPDEF([gl_Flags])dnl
+AS_VAR_POPDEF([gl_Warn])dnl
+])
+
+# gl_UNKNOWN_WARNINGS_ARE_ERRORS
+# ------------------------------
+# Clang doesn't complain about unknown warning options unless one also
+# specifies -Wunknown-warning-option -Werror.  Detect this.
+AC_DEFUN([gl_UNKNOWN_WARNINGS_ARE_ERRORS],
+[gl_COMPILER_OPTION_IF([-Werror -Wunknown-warning-option],
+   [gl_unknown_warnings_are_errors='-Wunknown-warning-option -Werror'],
+   [gl_unknown_warnings_are_errors=])])
+
+# gl_WARN_ADD(OPTION, [VARIABLE = WARN_CFLAGS],
+#             [PROGRAM = AC_LANG_PROGRAM()])
+# ---------------------------------------------
+# Adds parameter to WARN_CFLAGS if the compiler supports it when
+# compiling PROGRAM.  For example, gl_WARN_ADD([-Wparentheses]).
+#
+# If VARIABLE is a variable name, AC_SUBST it.
+AC_DEFUN([gl_WARN_ADD],
+[AC_REQUIRE([gl_UNKNOWN_WARNINGS_ARE_ERRORS])
+gl_COMPILER_OPTION_IF([$1],
+  [gl_AS_VAR_APPEND(m4_if([$2], [], [[WARN_CFLAGS]], [[$2]]), [" $1"])],
+  [],
+  [$3])
+m4_ifval([$2],
+         [AS_LITERAL_IF([$2], [AC_SUBST([$2])])],
+         [AC_SUBST([WARN_CFLAGS])])dnl
+])
+
+# Local Variables:
+# mode: autoconf
+# End:
_______________________________________________
sssd-devel mailing list -- sssd-devel@lists.fedorahosted.org
To unsubscribe send an email to sssd-devel-le...@lists.fedorahosted.org

Reply via email to