All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/6] libsepol: silence -Wextra-semi-stmt warning
@ 2021-07-03 14:31 Nicolas Iooss
  2021-07-03 14:31 ` [PATCH 2/6] libselinux: " Nicolas Iooss
                   ` (5 more replies)
  0 siblings, 6 replies; 8+ messages in thread
From: Nicolas Iooss @ 2021-07-03 14:31 UTC (permalink / raw)
  To: selinux

On Ubuntu 20.04, when building with clang -Werror -Wextra-semi-stmt
(which is not the default build configuration), the compiler reports:

  ../cil/src/cil_binary.c:4293:22: error: empty expression statement
  has no effect; remove unnecessary ';' to silence this warning
  [-Werror,-Wextra-semi-stmt]
          mix(k->target_class);
                              ^
  ../cil/src/cil_binary.c:4294:21: error: empty expression statement
  has no effect; remove unnecessary ';' to silence this warning
  [-Werror,-Wextra-semi-stmt]
          mix(k->target_type);
                             ^
  ../cil/src/cil_binary.c:4295:21: error: empty expression statement
  has no effect; remove unnecessary ';' to silence this warning
  [-Werror,-Wextra-semi-stmt]
          mix(k->source_type);
                             ^
  ../cil/src/cil_binary.c:4296:19: error: empty expression statement
  has no effect; remove unnecessary ';' to silence this warning
  [-Werror,-Wextra-semi-stmt]
          mix(k->specified);
                           ^

Use a do { ... } while (0) construction to silence this warning.

Moreover the same warning appears when using two semicolons to end a
statement. Remove such occurrences, like what was already done in commit
811185648af2 ("libsepol: drop repeated semicolons").

Signed-off-by: Nicolas Iooss <nicolas.iooss@m4x.org>
---
 libsepol/cil/src/cil_binary.c      |  4 ++--
 libsepol/cil/src/cil_resolve_ast.c |  2 +-
 libsepol/src/avtab.c               |  4 ++--
 libsepol/tests/libsepol-tests.c    | 18 +++++++++++-------
 4 files changed, 16 insertions(+), 12 deletions(-)

diff --git a/libsepol/cil/src/cil_binary.c b/libsepol/cil/src/cil_binary.c
index 54d13f2f3945..41105c122bc3 100644
--- a/libsepol/cil/src/cil_binary.c
+++ b/libsepol/cil/src/cil_binary.c
@@ -4277,7 +4277,7 @@ static unsigned int avrulex_hash(__attribute__((unused)) hashtab_t h, const_hash
 
 	uint32_t hash = 0;
 
-#define mix(input) { \
+#define mix(input) do { \
 	uint32_t v = input; \
 	v *= c1; \
 	v = (v << r1) | (v >> (32 - r1)); \
@@ -4285,7 +4285,7 @@ static unsigned int avrulex_hash(__attribute__((unused)) hashtab_t h, const_hash
 	hash ^= v; \
 	hash = (hash << r2) | (hash >> (32 - r2)); \
 	hash = hash * m + n; \
-}
+} while (0)
 
 	mix(k->target_class);
 	mix(k->target_type);
diff --git a/libsepol/cil/src/cil_resolve_ast.c b/libsepol/cil/src/cil_resolve_ast.c
index 32ea64e39b21..9a02e3867659 100644
--- a/libsepol/cil/src/cil_resolve_ast.c
+++ b/libsepol/cil/src/cil_resolve_ast.c
@@ -2825,7 +2825,7 @@ static int cil_build_call_args(struct cil_tree_node *call_node, struct cil_call
 			return SEPOL_OK;
 		} else {
 			cil_tree_log(call_node, CIL_ERR, "Unexpected arguments");
-			return SEPOL_ERR;;
+			return SEPOL_ERR;
 		}
 	}
 	if (call->args_tree == NULL) {
diff --git a/libsepol/src/avtab.c b/libsepol/src/avtab.c
index 88e9d510f981..5e16a0e9899e 100644
--- a/libsepol/src/avtab.c
+++ b/libsepol/src/avtab.c
@@ -63,7 +63,7 @@ static inline int avtab_hash(struct avtab_key *keyp, uint32_t mask)
 
 	uint32_t hash = 0;
 
-#define mix(input) { \
+#define mix(input) do { \
 	uint32_t v = input; \
 	v *= c1; \
 	v = (v << r1) | (v >> (32 - r1)); \
@@ -71,7 +71,7 @@ static inline int avtab_hash(struct avtab_key *keyp, uint32_t mask)
 	hash ^= v; \
 	hash = (hash << r2) | (hash >> (32 - r2)); \
 	hash = hash * m + n; \
-}
+} while (0)
 
 	mix(keyp->target_class);
 	mix(keyp->target_type);
diff --git a/libsepol/tests/libsepol-tests.c b/libsepol/tests/libsepol-tests.c
index 544c792d2ab5..dc8fd5ce5f6c 100644
--- a/libsepol/tests/libsepol-tests.c
+++ b/libsepol/tests/libsepol-tests.c
@@ -36,13 +36,17 @@
 int mls;
 
 #define DECLARE_SUITE(name) \
-	suite = CU_add_suite(#name, name##_test_init, name##_test_cleanup); \
-	if (NULL == suite) { \
-		CU_cleanup_registry(); \
-		return CU_get_error(); } \
-	if (name##_add_tests(suite)) { \
-		CU_cleanup_registry(); \
-		return CU_get_error(); }
+	do { \
+		suite = CU_add_suite(#name, name##_test_init, name##_test_cleanup); \
+		if (NULL == suite) { \
+			CU_cleanup_registry(); \
+			return CU_get_error(); \
+		} \
+		if (name##_add_tests(suite)) { \
+			CU_cleanup_registry(); \
+			return CU_get_error(); \
+		} \
+	} while (0)
 
 static void usage(char *progname)
 {
-- 
2.32.0


^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [PATCH 2/6] libselinux: silence -Wextra-semi-stmt warning
  2021-07-03 14:31 [PATCH 1/6] libsepol: silence -Wextra-semi-stmt warning Nicolas Iooss
@ 2021-07-03 14:31 ` Nicolas Iooss
  2021-07-03 14:31 ` [PATCH 3/6] libsemanage: " Nicolas Iooss
                   ` (4 subsequent siblings)
  5 siblings, 0 replies; 8+ messages in thread
From: Nicolas Iooss @ 2021-07-03 14:31 UTC (permalink / raw)
  To: selinux

On Ubuntu 20.04, when building with clang -Werror -Wextra-semi-stmt
(which is not the default build configuration), the compiler reports:

      sha1.c:90:21: error: empty expression statement has no effect;
      remove unnecessary ';' to silence this warning
      [-Werror,-Wextra-semi-stmt]
          R0(a,b,c,d,e, 0); R0(e,a,b,c,d, 1); R0(d,e,a,b,c, 2); R0(c,d,e,a,b, 3);
                          ^
      In file included from selinux_restorecon.c:39:
      ./label_file.h:458:15: error: empty expression statement has no
      effect; remove unnecessary ';' to silence this warning
      [-Werror,-Wextra-semi-stmt]
                                  lineno);
                                        ^

Introduce "do { } while (0)" blocks to silence such warnings.

Signed-off-by: Nicolas Iooss <nicolas.iooss@m4x.org>
---
 libselinux/src/avc_internal.h                | 22 +++++++++++++-------
 libselinux/src/label_internal.h              | 10 +++++----
 libselinux/src/load_policy.c                 |  2 +-
 libselinux/src/procattr.c                    |  4 ++--
 libselinux/src/sha1.c                        | 11 +++++-----
 libselinux/utils/matchpathcon.c              |  2 +-
 libselinux/utils/selabel_lookup_best_match.c |  2 +-
 7 files changed, 31 insertions(+), 22 deletions(-)

diff --git a/libselinux/src/avc_internal.h b/libselinux/src/avc_internal.h
index da67affc9307..a9a4aa0b3c42 100644
--- a/libselinux/src/avc_internal.h
+++ b/libselinux/src/avc_internal.h
@@ -85,10 +85,12 @@ static inline void avc_free(void *ptr)
 
 /* this is a macro in order to use the variadic capability. */
 #define avc_log(type, format...) \
-  if (avc_func_log) \
-    avc_func_log(format); \
-  else \
-    selinux_log(type, format);
+  do { \
+    if (avc_func_log) \
+      avc_func_log(format); \
+    else \
+      selinux_log(type, format); \
+  } while (0)
 
 static inline void avc_suppl_audit(void *ptr, security_class_t class,
 				   char *buf, size_t len)
@@ -137,14 +139,18 @@ static inline void avc_free_lock(void *lock)
 #ifdef AVC_CACHE_STATS
 
 #define avc_cache_stats_incr(field) \
-  cache_stats.field ++;
+  do { \
+    cache_stats.field ++; \
+  } while (0)
 #define avc_cache_stats_add(field, num) \
-  cache_stats.field += num;
+  do { \
+    cache_stats.field += num; \
+  } while (0)
 
 #else
 
-#define avc_cache_stats_incr(field)
-#define avc_cache_stats_add(field, num)
+#define avc_cache_stats_incr(field) do {} while (0)
+#define avc_cache_stats_add(field, num) do {} while (0)
 
 #endif
 
diff --git a/libselinux/src/label_internal.h b/libselinux/src/label_internal.h
index 361b443cb9c4..782c6aa8cc0c 100644
--- a/libselinux/src/label_internal.h
+++ b/libselinux/src/label_internal.h
@@ -128,10 +128,12 @@ extern int myprintf_compat;
 extern void __attribute__ ((format(printf, 1, 2)))
 (*myprintf) (const char *fmt, ...) ;
 
-#define COMPAT_LOG(type, fmt...) if (myprintf_compat)	  \
-		myprintf(fmt);				  \
-	else						  \
-		selinux_log(type, fmt);
+#define COMPAT_LOG(type, fmt...) do {			\
+	if (myprintf_compat)				\
+		myprintf(fmt);				\
+	else						\
+		selinux_log(type, fmt);			\
+	} while (0)
 
 extern int
 compat_validate(struct selabel_handle *rec,
diff --git a/libselinux/src/load_policy.c b/libselinux/src/load_policy.c
index 0034fa53d6e6..5857b821e80e 100644
--- a/libselinux/src/load_policy.c
+++ b/libselinux/src/load_policy.c
@@ -80,7 +80,7 @@ int selinux_mkload_policy(int preservebools __attribute__((unused)))
 	if (libsepolh) {
 		usesepol = 1;
 		dlerror();
-#define DLERR() if ((errormsg = dlerror())) goto dlclose;
+#define DLERR() do { if ((errormsg = dlerror())) goto dlclose; } while (0)
 		vers_max = dlsym(libsepolh, "sepol_policy_kern_vers_max");
 		DLERR();
 		vers_min = dlsym(libsepolh, "sepol_policy_kern_vers_min");
diff --git a/libselinux/src/procattr.c b/libselinux/src/procattr.c
index 840570525f5f..6552ee01bca8 100644
--- a/libselinux/src/procattr.c
+++ b/libselinux/src/procattr.c
@@ -146,7 +146,7 @@ static int getprocattrcon_raw(char ** context,
 		default:
 			errno = ENOENT;
 			return -1;
-	};
+	}
 
 	if (prev_context && prev_context != UNSET) {
 		*context = strdup(prev_context);
@@ -240,7 +240,7 @@ static int setprocattrcon_raw(const char * context,
 		default:
 			errno = ENOENT;
 			return -1;
-	};
+	}
 
 	if (!context && !*prev_context)
 		return 0;
diff --git a/libselinux/src/sha1.c b/libselinux/src/sha1.c
index 664bbcf26eef..a848467785f3 100644
--- a/libselinux/src/sha1.c
+++ b/libselinux/src/sha1.c
@@ -16,6 +16,7 @@
 //        sha1.c:73:33: error: cast from 'uint8_t *' (aka 'unsigned char *') to 'CHAR64LONG16 *' increases required alignment from 1 to 4 [-Werror,-Wcast-align]
 //             CHAR64LONG16*       block = (CHAR64LONG16*) workspace;
 //                                                                     William Roberts <william.c.roberts@intel.com>
+//    - Silence clang's -Wextra-semi-stmt warning - July 2021, Nicolas Iooss <nicolas.iooss@m4x.org>
 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
@@ -49,11 +50,11 @@ typedef union
     ^block->l[(i+2)&15]^block->l[i&15],1))
 
 // (R0+R1), R2, R3, R4 are the different operations used in SHA1
-#define R0(v,w,x,y,z,i)  z += ((w&(x^y))^y)     + blk0(i)+ 0x5A827999 + rol(v,5); w=rol(w,30);
-#define R1(v,w,x,y,z,i)  z += ((w&(x^y))^y)     + blk(i) + 0x5A827999 + rol(v,5); w=rol(w,30);
-#define R2(v,w,x,y,z,i)  z += (w^x^y)           + blk(i) + 0x6ED9EBA1 + rol(v,5); w=rol(w,30);
-#define R3(v,w,x,y,z,i)  z += (((w|x)&y)|(w&x)) + blk(i) + 0x8F1BBCDC + rol(v,5); w=rol(w,30);
-#define R4(v,w,x,y,z,i)  z += (w^x^y)           + blk(i) + 0xCA62C1D6 + rol(v,5); w=rol(w,30);
+#define R0(v,w,x,y,z,i)  do { z += ((w&(x^y))^y)     + blk0(i)+ 0x5A827999 + rol(v,5); w=rol(w,30); } while (0)
+#define R1(v,w,x,y,z,i)  do { z += ((w&(x^y))^y)     + blk(i) + 0x5A827999 + rol(v,5); w=rol(w,30); } while (0)
+#define R2(v,w,x,y,z,i)  do { z += (w^x^y)           + blk(i) + 0x6ED9EBA1 + rol(v,5); w=rol(w,30); } while (0)
+#define R3(v,w,x,y,z,i)  do { z += (((w|x)&y)|(w&x)) + blk(i) + 0x8F1BBCDC + rol(v,5); w=rol(w,30); } while (0)
+#define R4(v,w,x,y,z,i)  do { z += (w^x^y)           + blk(i) + 0xCA62C1D6 + rol(v,5); w=rol(w,30); } while (0)
 
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/libselinux/utils/matchpathcon.c b/libselinux/utils/matchpathcon.c
index a07e160dee71..1d713c01f81c 100644
--- a/libselinux/utils/matchpathcon.c
+++ b/libselinux/utils/matchpathcon.c
@@ -65,7 +65,7 @@ static mode_t string_to_mode(char *s)
 		return S_IFREG;
 	default:
 		return -1;
-	};
+	}
 	return -1;
 }
 
diff --git a/libselinux/utils/selabel_lookup_best_match.c b/libselinux/utils/selabel_lookup_best_match.c
index 6a7174233667..2cddc6cde051 100644
--- a/libselinux/utils/selabel_lookup_best_match.c
+++ b/libselinux/utils/selabel_lookup_best_match.c
@@ -47,7 +47,7 @@ static mode_t string_to_mode(char *s)
 		return S_IFSOCK;
 	case 'f':
 		return S_IFREG;
-	};
+	}
 	return 0;
 }
 
-- 
2.32.0


^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [PATCH 3/6] libsemanage: silence -Wextra-semi-stmt warning
  2021-07-03 14:31 [PATCH 1/6] libsepol: silence -Wextra-semi-stmt warning Nicolas Iooss
  2021-07-03 14:31 ` [PATCH 2/6] libselinux: " Nicolas Iooss
@ 2021-07-03 14:31 ` Nicolas Iooss
  2021-07-03 14:31 ` [PATCH 4/6] checkpolicy: " Nicolas Iooss
                   ` (3 subsequent siblings)
  5 siblings, 0 replies; 8+ messages in thread
From: Nicolas Iooss @ 2021-07-03 14:31 UTC (permalink / raw)
  To: selinux

On Ubuntu 20.04, when building with clang -Werror -Wextra-semi-stmt
(which is not the default build configuration), the compiler reports:

      genhomedircon.c:742:67: error: empty expression statement has no
      effect; remove unnecessary ';' to silence this warning
      [-Werror,-Wextra-semi-stmt]
              const semanage_seuser_t **u2 = (const semanage_seuser_t **) arg2;;
                                                                               ^

Signed-off-by: Nicolas Iooss <nicolas.iooss@m4x.org>
---
 libsemanage/src/genhomedircon.c       |  2 +-
 libsemanage/tests/libsemanage-tests.c | 18 +++++++++++-------
 2 files changed, 12 insertions(+), 8 deletions(-)

diff --git a/libsemanage/src/genhomedircon.c b/libsemanage/src/genhomedircon.c
index d08c88de99a7..7ca9afc3c1c7 100644
--- a/libsemanage/src/genhomedircon.c
+++ b/libsemanage/src/genhomedircon.c
@@ -740,7 +740,7 @@ static int write_user_context(genhomedircon_settings_t * s, FILE * out,
 static int seuser_sort_func(const void *arg1, const void *arg2)
 {
 	const semanage_seuser_t **u1 = (const semanage_seuser_t **) arg1;
-	const semanage_seuser_t **u2 = (const semanage_seuser_t **) arg2;;
+	const semanage_seuser_t **u2 = (const semanage_seuser_t **) arg2;
 	const char *name1 = semanage_seuser_get_name(*u1);
 	const char *name2 = semanage_seuser_get_name(*u2);
 
diff --git a/libsemanage/tests/libsemanage-tests.c b/libsemanage/tests/libsemanage-tests.c
index 2ae4a21be52a..ee1767034c28 100644
--- a/libsemanage/tests/libsemanage-tests.c
+++ b/libsemanage/tests/libsemanage-tests.c
@@ -41,13 +41,17 @@
 #include <stdlib.h>
 
 #define DECLARE_SUITE(name) \
-	suite = CU_add_suite(#name, name##_test_init, name##_test_cleanup); \
-	if (NULL == suite) { \
-		CU_cleanup_registry(); \
-		return CU_get_error(); } \
-	if (name##_add_tests(suite)) { \
-		CU_cleanup_registry(); \
-		return CU_get_error(); }
+	do { \
+		suite = CU_add_suite(#name, name##_test_init, name##_test_cleanup); \
+		if (NULL == suite) { \
+			CU_cleanup_registry(); \
+			return CU_get_error(); \
+		} \
+		if (name##_add_tests(suite)) { \
+			CU_cleanup_registry(); \
+			return CU_get_error(); \
+		} \
+	} while (0)
 
 static void usage(char *progname)
 {
-- 
2.32.0


^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [PATCH 4/6] checkpolicy: silence -Wextra-semi-stmt warning
  2021-07-03 14:31 [PATCH 1/6] libsepol: silence -Wextra-semi-stmt warning Nicolas Iooss
  2021-07-03 14:31 ` [PATCH 2/6] libselinux: " Nicolas Iooss
  2021-07-03 14:31 ` [PATCH 3/6] libsemanage: " Nicolas Iooss
@ 2021-07-03 14:31 ` Nicolas Iooss
  2021-07-03 14:31 ` [PATCH 5/6] policycoreutils: " Nicolas Iooss
                   ` (2 subsequent siblings)
  5 siblings, 0 replies; 8+ messages in thread
From: Nicolas Iooss @ 2021-07-03 14:31 UTC (permalink / raw)
  To: selinux

On Ubuntu 20.04, when building with clang -Werror -Wextra-semi-stmt
(which is not the default build configuration), the compiler reports:

      checkpolicy.c:740:33: error: empty expression statement has no
      effect; remove unnecessary ';' to silence this warning
      [-Werror,-Wextra-semi-stmt]
                      FGETS(ans, sizeof(ans), stdin);
                                                    ^

Introduce "do { } while (0)" blocks to silence such warnings.

Signed-off-by: Nicolas Iooss <nicolas.iooss@m4x.org>
---
 checkpolicy/checkpolicy.c | 13 ++++++++-----
 1 file changed, 8 insertions(+), 5 deletions(-)

diff --git a/checkpolicy/checkpolicy.c b/checkpolicy/checkpolicy.c
index acf1eac41559..8af31db5c6b7 100644
--- a/checkpolicy/checkpolicy.c
+++ b/checkpolicy/checkpolicy.c
@@ -119,11 +119,14 @@ static __attribute__((__noreturn__)) void usage(const char *progname)
 }
 
 #define FGETS(out, size, in) \
-if (fgets(out,size,in)==NULL) {	\
-		fprintf(stderr, "fgets failed at line %d: %s\n", __LINE__,\
-				strerror(errno)); \
-			exit(1);\
-}
+do { \
+	if (fgets(out,size,in)==NULL) {	\
+		fprintf(stderr, "fgets failed at line %d: %s\n", __LINE__, \
+			strerror(errno)); \
+		exit(1);\
+	} \
+} while (0)
+
 static int print_sid(sepol_security_id_t sid,
 		     context_struct_t * context
 		     __attribute__ ((unused)), void *data
-- 
2.32.0


^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [PATCH 5/6] policycoreutils: silence -Wextra-semi-stmt warning
  2021-07-03 14:31 [PATCH 1/6] libsepol: silence -Wextra-semi-stmt warning Nicolas Iooss
                   ` (2 preceding siblings ...)
  2021-07-03 14:31 ` [PATCH 4/6] checkpolicy: " Nicolas Iooss
@ 2021-07-03 14:31 ` Nicolas Iooss
  2021-07-03 14:31 ` [PATCH 6/6] mcstrans: " Nicolas Iooss
  2021-07-06 15:40 ` [PATCH 1/6] libsepol: " James Carter
  5 siblings, 0 replies; 8+ messages in thread
From: Nicolas Iooss @ 2021-07-03 14:31 UTC (permalink / raw)
  To: selinux

On Ubuntu 20.04, when building with clang -Werror -Wextra-semi-stmt
(which is not the default build configuration), the compiler reports:

      secon.c:686:3: error: empty expression statement has no effect;
      remove unnecessary ';' to silence this warning
      [-Werror,-Wextra-semi-stmt]
              };
               ^

Signed-off-by: Nicolas Iooss <nicolas.iooss@m4x.org>
---
 policycoreutils/newrole/newrole.c | 2 +-
 policycoreutils/secon/secon.c     | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/policycoreutils/newrole/newrole.c b/policycoreutils/newrole/newrole.c
index 36e2ba9c25d9..0264531acef4 100644
--- a/policycoreutils/newrole/newrole.c
+++ b/policycoreutils/newrole/newrole.c
@@ -96,7 +96,7 @@
 #define USAGE_STRING "USAGE: newrole [ -r role ] [ -t type ] [ -l level ] [ -p ] [ -V ] [ -- args ]"
 
 #ifdef USE_PAM
-#define PAM_SERVICE_CONFIG "/etc/selinux/newrole_pam.conf";
+#define PAM_SERVICE_CONFIG "/etc/selinux/newrole_pam.conf"
 #endif
 
 #define DEFAULT_PATH "/usr/bin:/bin"
diff --git a/policycoreutils/secon/secon.c b/policycoreutils/secon/secon.c
index d257a9a1ca6c..a0957d0914e1 100644
--- a/policycoreutils/secon/secon.c
+++ b/policycoreutils/secon/secon.c
@@ -683,7 +683,7 @@ static void disp_con(const char *scon_raw)
 		color.range_bg = strtok(NULL, " ");
 
 		color.valid = 1;
-	};
+	}
 
 	if (!(con = context_new(scon)))
 		errx(EXIT_FAILURE, "Couldn't create context from: %s", scon);
-- 
2.32.0


^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [PATCH 6/6] mcstrans: silence -Wextra-semi-stmt warning
  2021-07-03 14:31 [PATCH 1/6] libsepol: silence -Wextra-semi-stmt warning Nicolas Iooss
                   ` (3 preceding siblings ...)
  2021-07-03 14:31 ` [PATCH 5/6] policycoreutils: " Nicolas Iooss
@ 2021-07-03 14:31 ` Nicolas Iooss
  2021-07-06 15:40 ` [PATCH 1/6] libsepol: " James Carter
  5 siblings, 0 replies; 8+ messages in thread
From: Nicolas Iooss @ 2021-07-03 14:31 UTC (permalink / raw)
  To: selinux

On Ubuntu 20.04, when building with clang -Werror -Wextra-semi-stmt
(which is not the default build configuration), the compiler reports:

      mcstransd.c:72:35: error: empty expression statement has no effect;
      remove unnecessary ';' to silence this warning
      [-Werror,-Wextra-semi-stmt]
              log_debug("%s\n", "cleanup_exit");
                                               ^

Replace the empty log_debug substitution with a do { ... } while (0)
construction to silence this warning.

Signed-off-by: Nicolas Iooss <nicolas.iooss@m4x.org>
---
 mcstrans/src/mcstrans.c  | 2 +-
 mcstrans/src/mcstransd.c | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/mcstrans/src/mcstrans.c b/mcstrans/src/mcstrans.c
index c0fc14e40d2f..e92dfddb0d20 100644
--- a/mcstrans/src/mcstrans.c
+++ b/mcstrans/src/mcstrans.c
@@ -43,7 +43,7 @@
 #ifdef DEBUG
 #define log_debug(fmt, ...) fprintf(stderr, fmt, __VA_ARGS__)
 #else
-#define log_debug(fmt, ...) ;
+#define log_debug(fmt, ...) do {} while (0)
 #endif
 
 static unsigned int maxbit=0;
diff --git a/mcstrans/src/mcstransd.c b/mcstrans/src/mcstransd.c
index 07c052fd4998..59c152e73be1 100644
--- a/mcstrans/src/mcstransd.c
+++ b/mcstrans/src/mcstransd.c
@@ -40,7 +40,7 @@
 //#define log_debug(fmt, ...) syslog(LOG_DEBUG, fmt, __VA_ARGS__)
 #define log_debug(fmt, ...) fprintf(stderr, fmt, __VA_ARGS__)
 #else
-#define log_debug(fmt, ...) ;
+#define log_debug(fmt, ...) do {} while (0)
 #endif
 
 extern int init_translations(void);
-- 
2.32.0


^ permalink raw reply related	[flat|nested] 8+ messages in thread

* Re: [PATCH 1/6] libsepol: silence -Wextra-semi-stmt warning
  2021-07-03 14:31 [PATCH 1/6] libsepol: silence -Wextra-semi-stmt warning Nicolas Iooss
                   ` (4 preceding siblings ...)
  2021-07-03 14:31 ` [PATCH 6/6] mcstrans: " Nicolas Iooss
@ 2021-07-06 15:40 ` James Carter
  2021-07-07 16:35   ` James Carter
  5 siblings, 1 reply; 8+ messages in thread
From: James Carter @ 2021-07-06 15:40 UTC (permalink / raw)
  To: Nicolas Iooss; +Cc: SElinux list

On Sat, Jul 3, 2021 at 10:32 AM Nicolas Iooss <nicolas.iooss@m4x.org> wrote:
>
> On Ubuntu 20.04, when building with clang -Werror -Wextra-semi-stmt
> (which is not the default build configuration), the compiler reports:
>
>   ../cil/src/cil_binary.c:4293:22: error: empty expression statement
>   has no effect; remove unnecessary ';' to silence this warning
>   [-Werror,-Wextra-semi-stmt]
>           mix(k->target_class);
>                               ^
>   ../cil/src/cil_binary.c:4294:21: error: empty expression statement
>   has no effect; remove unnecessary ';' to silence this warning
>   [-Werror,-Wextra-semi-stmt]
>           mix(k->target_type);
>                              ^
>   ../cil/src/cil_binary.c:4295:21: error: empty expression statement
>   has no effect; remove unnecessary ';' to silence this warning
>   [-Werror,-Wextra-semi-stmt]
>           mix(k->source_type);
>                              ^
>   ../cil/src/cil_binary.c:4296:19: error: empty expression statement
>   has no effect; remove unnecessary ';' to silence this warning
>   [-Werror,-Wextra-semi-stmt]
>           mix(k->specified);
>                            ^
>
> Use a do { ... } while (0) construction to silence this warning.
>
> Moreover the same warning appears when using two semicolons to end a
> statement. Remove such occurrences, like what was already done in commit
> 811185648af2 ("libsepol: drop repeated semicolons").
>
> Signed-off-by: Nicolas Iooss <nicolas.iooss@m4x.org>

For all six patches:
Acked-by: James Carter <jwcart2@gmail.com>

> ---
>  libsepol/cil/src/cil_binary.c      |  4 ++--
>  libsepol/cil/src/cil_resolve_ast.c |  2 +-
>  libsepol/src/avtab.c               |  4 ++--
>  libsepol/tests/libsepol-tests.c    | 18 +++++++++++-------
>  4 files changed, 16 insertions(+), 12 deletions(-)
>
> diff --git a/libsepol/cil/src/cil_binary.c b/libsepol/cil/src/cil_binary.c
> index 54d13f2f3945..41105c122bc3 100644
> --- a/libsepol/cil/src/cil_binary.c
> +++ b/libsepol/cil/src/cil_binary.c
> @@ -4277,7 +4277,7 @@ static unsigned int avrulex_hash(__attribute__((unused)) hashtab_t h, const_hash
>
>         uint32_t hash = 0;
>
> -#define mix(input) { \
> +#define mix(input) do { \
>         uint32_t v = input; \
>         v *= c1; \
>         v = (v << r1) | (v >> (32 - r1)); \
> @@ -4285,7 +4285,7 @@ static unsigned int avrulex_hash(__attribute__((unused)) hashtab_t h, const_hash
>         hash ^= v; \
>         hash = (hash << r2) | (hash >> (32 - r2)); \
>         hash = hash * m + n; \
> -}
> +} while (0)
>
>         mix(k->target_class);
>         mix(k->target_type);
> diff --git a/libsepol/cil/src/cil_resolve_ast.c b/libsepol/cil/src/cil_resolve_ast.c
> index 32ea64e39b21..9a02e3867659 100644
> --- a/libsepol/cil/src/cil_resolve_ast.c
> +++ b/libsepol/cil/src/cil_resolve_ast.c
> @@ -2825,7 +2825,7 @@ static int cil_build_call_args(struct cil_tree_node *call_node, struct cil_call
>                         return SEPOL_OK;
>                 } else {
>                         cil_tree_log(call_node, CIL_ERR, "Unexpected arguments");
> -                       return SEPOL_ERR;;
> +                       return SEPOL_ERR;
>                 }
>         }
>         if (call->args_tree == NULL) {
> diff --git a/libsepol/src/avtab.c b/libsepol/src/avtab.c
> index 88e9d510f981..5e16a0e9899e 100644
> --- a/libsepol/src/avtab.c
> +++ b/libsepol/src/avtab.c
> @@ -63,7 +63,7 @@ static inline int avtab_hash(struct avtab_key *keyp, uint32_t mask)
>
>         uint32_t hash = 0;
>
> -#define mix(input) { \
> +#define mix(input) do { \
>         uint32_t v = input; \
>         v *= c1; \
>         v = (v << r1) | (v >> (32 - r1)); \
> @@ -71,7 +71,7 @@ static inline int avtab_hash(struct avtab_key *keyp, uint32_t mask)
>         hash ^= v; \
>         hash = (hash << r2) | (hash >> (32 - r2)); \
>         hash = hash * m + n; \
> -}
> +} while (0)
>
>         mix(keyp->target_class);
>         mix(keyp->target_type);
> diff --git a/libsepol/tests/libsepol-tests.c b/libsepol/tests/libsepol-tests.c
> index 544c792d2ab5..dc8fd5ce5f6c 100644
> --- a/libsepol/tests/libsepol-tests.c
> +++ b/libsepol/tests/libsepol-tests.c
> @@ -36,13 +36,17 @@
>  int mls;
>
>  #define DECLARE_SUITE(name) \
> -       suite = CU_add_suite(#name, name##_test_init, name##_test_cleanup); \
> -       if (NULL == suite) { \
> -               CU_cleanup_registry(); \
> -               return CU_get_error(); } \
> -       if (name##_add_tests(suite)) { \
> -               CU_cleanup_registry(); \
> -               return CU_get_error(); }
> +       do { \
> +               suite = CU_add_suite(#name, name##_test_init, name##_test_cleanup); \
> +               if (NULL == suite) { \
> +                       CU_cleanup_registry(); \
> +                       return CU_get_error(); \
> +               } \
> +               if (name##_add_tests(suite)) { \
> +                       CU_cleanup_registry(); \
> +                       return CU_get_error(); \
> +               } \
> +       } while (0)
>
>  static void usage(char *progname)
>  {
> --
> 2.32.0
>

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH 1/6] libsepol: silence -Wextra-semi-stmt warning
  2021-07-06 15:40 ` [PATCH 1/6] libsepol: " James Carter
@ 2021-07-07 16:35   ` James Carter
  0 siblings, 0 replies; 8+ messages in thread
From: James Carter @ 2021-07-07 16:35 UTC (permalink / raw)
  To: Nicolas Iooss; +Cc: SElinux list

On Tue, Jul 6, 2021 at 11:40 AM James Carter <jwcart2@gmail.com> wrote:
>
> On Sat, Jul 3, 2021 at 10:32 AM Nicolas Iooss <nicolas.iooss@m4x.org> wrote:
> >
> > On Ubuntu 20.04, when building with clang -Werror -Wextra-semi-stmt
> > (which is not the default build configuration), the compiler reports:
> >
> >   ../cil/src/cil_binary.c:4293:22: error: empty expression statement
> >   has no effect; remove unnecessary ';' to silence this warning
> >   [-Werror,-Wextra-semi-stmt]
> >           mix(k->target_class);
> >                               ^
> >   ../cil/src/cil_binary.c:4294:21: error: empty expression statement
> >   has no effect; remove unnecessary ';' to silence this warning
> >   [-Werror,-Wextra-semi-stmt]
> >           mix(k->target_type);
> >                              ^
> >   ../cil/src/cil_binary.c:4295:21: error: empty expression statement
> >   has no effect; remove unnecessary ';' to silence this warning
> >   [-Werror,-Wextra-semi-stmt]
> >           mix(k->source_type);
> >                              ^
> >   ../cil/src/cil_binary.c:4296:19: error: empty expression statement
> >   has no effect; remove unnecessary ';' to silence this warning
> >   [-Werror,-Wextra-semi-stmt]
> >           mix(k->specified);
> >                            ^
> >
> > Use a do { ... } while (0) construction to silence this warning.
> >
> > Moreover the same warning appears when using two semicolons to end a
> > statement. Remove such occurrences, like what was already done in commit
> > 811185648af2 ("libsepol: drop repeated semicolons").
> >
> > Signed-off-by: Nicolas Iooss <nicolas.iooss@m4x.org>
>
> For all six patches:
> Acked-by: James Carter <jwcart2@gmail.com>
>

All six patches have been merged.
Thanks,
Jim

> > ---
> >  libsepol/cil/src/cil_binary.c      |  4 ++--
> >  libsepol/cil/src/cil_resolve_ast.c |  2 +-
> >  libsepol/src/avtab.c               |  4 ++--
> >  libsepol/tests/libsepol-tests.c    | 18 +++++++++++-------
> >  4 files changed, 16 insertions(+), 12 deletions(-)
> >
> > diff --git a/libsepol/cil/src/cil_binary.c b/libsepol/cil/src/cil_binary.c
> > index 54d13f2f3945..41105c122bc3 100644
> > --- a/libsepol/cil/src/cil_binary.c
> > +++ b/libsepol/cil/src/cil_binary.c
> > @@ -4277,7 +4277,7 @@ static unsigned int avrulex_hash(__attribute__((unused)) hashtab_t h, const_hash
> >
> >         uint32_t hash = 0;
> >
> > -#define mix(input) { \
> > +#define mix(input) do { \
> >         uint32_t v = input; \
> >         v *= c1; \
> >         v = (v << r1) | (v >> (32 - r1)); \
> > @@ -4285,7 +4285,7 @@ static unsigned int avrulex_hash(__attribute__((unused)) hashtab_t h, const_hash
> >         hash ^= v; \
> >         hash = (hash << r2) | (hash >> (32 - r2)); \
> >         hash = hash * m + n; \
> > -}
> > +} while (0)
> >
> >         mix(k->target_class);
> >         mix(k->target_type);
> > diff --git a/libsepol/cil/src/cil_resolve_ast.c b/libsepol/cil/src/cil_resolve_ast.c
> > index 32ea64e39b21..9a02e3867659 100644
> > --- a/libsepol/cil/src/cil_resolve_ast.c
> > +++ b/libsepol/cil/src/cil_resolve_ast.c
> > @@ -2825,7 +2825,7 @@ static int cil_build_call_args(struct cil_tree_node *call_node, struct cil_call
> >                         return SEPOL_OK;
> >                 } else {
> >                         cil_tree_log(call_node, CIL_ERR, "Unexpected arguments");
> > -                       return SEPOL_ERR;;
> > +                       return SEPOL_ERR;
> >                 }
> >         }
> >         if (call->args_tree == NULL) {
> > diff --git a/libsepol/src/avtab.c b/libsepol/src/avtab.c
> > index 88e9d510f981..5e16a0e9899e 100644
> > --- a/libsepol/src/avtab.c
> > +++ b/libsepol/src/avtab.c
> > @@ -63,7 +63,7 @@ static inline int avtab_hash(struct avtab_key *keyp, uint32_t mask)
> >
> >         uint32_t hash = 0;
> >
> > -#define mix(input) { \
> > +#define mix(input) do { \
> >         uint32_t v = input; \
> >         v *= c1; \
> >         v = (v << r1) | (v >> (32 - r1)); \
> > @@ -71,7 +71,7 @@ static inline int avtab_hash(struct avtab_key *keyp, uint32_t mask)
> >         hash ^= v; \
> >         hash = (hash << r2) | (hash >> (32 - r2)); \
> >         hash = hash * m + n; \
> > -}
> > +} while (0)
> >
> >         mix(keyp->target_class);
> >         mix(keyp->target_type);
> > diff --git a/libsepol/tests/libsepol-tests.c b/libsepol/tests/libsepol-tests.c
> > index 544c792d2ab5..dc8fd5ce5f6c 100644
> > --- a/libsepol/tests/libsepol-tests.c
> > +++ b/libsepol/tests/libsepol-tests.c
> > @@ -36,13 +36,17 @@
> >  int mls;
> >
> >  #define DECLARE_SUITE(name) \
> > -       suite = CU_add_suite(#name, name##_test_init, name##_test_cleanup); \
> > -       if (NULL == suite) { \
> > -               CU_cleanup_registry(); \
> > -               return CU_get_error(); } \
> > -       if (name##_add_tests(suite)) { \
> > -               CU_cleanup_registry(); \
> > -               return CU_get_error(); }
> > +       do { \
> > +               suite = CU_add_suite(#name, name##_test_init, name##_test_cleanup); \
> > +               if (NULL == suite) { \
> > +                       CU_cleanup_registry(); \
> > +                       return CU_get_error(); \
> > +               } \
> > +               if (name##_add_tests(suite)) { \
> > +                       CU_cleanup_registry(); \
> > +                       return CU_get_error(); \
> > +               } \
> > +       } while (0)
> >
> >  static void usage(char *progname)
> >  {
> > --
> > 2.32.0
> >

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2021-07-07 16:36 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-07-03 14:31 [PATCH 1/6] libsepol: silence -Wextra-semi-stmt warning Nicolas Iooss
2021-07-03 14:31 ` [PATCH 2/6] libselinux: " Nicolas Iooss
2021-07-03 14:31 ` [PATCH 3/6] libsemanage: " Nicolas Iooss
2021-07-03 14:31 ` [PATCH 4/6] checkpolicy: " Nicolas Iooss
2021-07-03 14:31 ` [PATCH 5/6] policycoreutils: " Nicolas Iooss
2021-07-03 14:31 ` [PATCH 6/6] mcstrans: " Nicolas Iooss
2021-07-06 15:40 ` [PATCH 1/6] libsepol: " James Carter
2021-07-07 16:35   ` James Carter

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.