[SCM] Samba Shared Repository - branch master updated

2017-07-27 Thread Andrew Bartlett
The branch, master has been updated
   via  1ea6b51 s4-rpc_server: Improve debug of new endpoints
   via  bc48c4b s4-rpc_server: ensure we get a new endpoint for netlogon
   via  0554bc2 s4-cldap/netlogon: Match Windows 2012R2 and return 
NETLOGON_NT_VERSION_5 when version unspecified
   via  88db634 s4-dsdb/netlogon: allow missing ntver in cldap ping
   via  22a94b7 s4:torture/ldap: Test netlogon without NtVer
   via  69f593e repl: Remove old TODO
   via  50b638d getncchanges.c: Remove unused null_scope variable
   via  dddcf80 getnc_exop.py: Fix typo in function name
   via  475a320 libnet: Initialize req_level in become_dc tests
   via  4bd8467 drs_utils: HWM in 'samba-tool drs replicate --local' always 
zero
   via  314b96e drs: support sync-forced for 'samba-tool drs replicate 
--local'
   via  47a90dc selftest: Use get_creds_ccache_name() in fsmo.py
   via  e917825 selftest: Add and use new helper function 
get_creds_ccache_name()
   via  7ad34d1 selftest: Use new --krb5-ccache in drs_base.py
   via  4cc5ceb selftest: Port DrsBaseTestCase._{en,dis}able_all_repl() to 
self.runsubcmd()
   via  f7c46ed selftest: Port DrsBaseTestCase._disable_inbound_repl() to 
self.runsubcmd()
   via  cc3d836 selftest: Port DrsBaseTestCase._enable_inbound_repl() to 
self.runsubcmd()
   via  09ce35e selftest: Port DrsBaseTestCase._net_drs_replicate() to 
self.runsubcmd()
   via  24de78e selftest: Remove unused import in ridalloc_exop.py
   via  f9bd16d selftest: Use self.runsubcmd() in DrsReplicaSyncTestCase
   via  6a75d4a selftest: Use self.runsubcmd() to run samba-tool for 
_test_force_demote in ridalloc_exop.py
   via  37cf29e selftest: Use self.runsubcmd() to run samba-tool for 
_test_join in ridalloc_exop.py
   via  f7089c0 python/getopt: Add --krb5-ccache (for samba-tool etc) to 
match the C binaries
   via  dc940ad pycredentials: Add set_named_ccache()
   via  a5f6295 selftest: Add tests for credentials.get_named_ccache()
   via  9dd8936 pycredentials: Add get_name() for a credentials cache
   via  35cbed2 pycredentials: Allow optional "name" argument to 
get_named_ccache() to be missing
  from  5445b2b s3: smbd: Modernize Avahi DEBUG macros and long if 
statements

https://git.samba.org/?p=samba.git;a=shortlog;h=master


- Log -
commit 1ea6b5168f146d23d139b570084cb32ec02538fe
Author: Andrew Bartlett 
Date:   Thu Jul 27 11:10:43 2017 +1200

s4-rpc_server: Improve debug of new endpoints

This helps us know what process model is required and what one is in use.

BUG: https://bugzilla.samba.org/show_bug.cgi?id=12939

Signed-off-by: Andrew Bartlett 
Reviewed-by: Douglas Bagnall 

Autobuild-User(master): Andrew Bartlett 
Autobuild-Date(master): Fri Jul 28 04:12:08 CEST 2017 on sn-devel-144

commit bc48c4b54b9c50d76fc967a1aa4fa013079605bc
Author: Andrew Bartlett 
Date:   Thu Jul 27 11:44:12 2017 +1200

s4-rpc_server: ensure we get a new endpoint for netlogon

If we share the single process RPC servers with the multi-process RPC 
servers
on the same endpoint, they will default to running in an single process

BUG: https://bugzilla.samba.org/show_bug.cgi?id=12939

Signed-off-by: Andrew Bartlett 
Reviewed-by: Douglas Bagnall 

commit 0554bc237f1b84d672d36781bead8b2c33f2e5a4
Author: Andrew Bartlett 
Date:   Tue Jul 25 14:26:45 2017 +1200

s4-cldap/netlogon: Match Windows 2012R2 and return NETLOGON_NT_VERSION_5 
when version unspecified

The previous patch set this incorrectly to NETLOGON_NT_VERSION_1

Signed-off-by: Andrew Bartlett 
Reviewed-by: Douglas Bagnall 

commit 88db634ed84647e5105c4b4fdf37d5892bebfd8d
Author: Arvid Requate 
Date:   Thu Jun 22 13:37:13 2017 +0200

s4-dsdb/netlogon: allow missing ntver in cldap ping

BUG: https://bugzilla.samba.org/show_bug.cgi?id=11392

Signed-off-by: Arvid Requate 
Reviewed-by: Douglas Bagnall 
Reviewed-by: Andrew Bartlett 

commit 22a94b728bd5d513b2002b62c129271d2210ed73
Author: Arvid Requate 
Date:   Tue Jun 20 20:05:17 2017 +0200

s4:torture/ldap: Test netlogon without NtVer

BUG: https://bugzilla.samba.org/show_bug.cgi?id=11392

Signed-off-by: Arvid Requate 
Reviewed-by: Douglas Bagnall 
Reviewed-by: Andrew Bartlett 

commit 69f593ec5a89411fb3e2cbf62f2092c3073fa0f7
Author: Tim Beale 
Date:   

[SCM] Samba Shared Repository - branch master updated

2017-07-27 Thread Ralph Böhme
The branch, master has been updated
   via  5445b2b s3: smbd: Modernize Avahi DEBUG macros and long if 
statements
  from  a2625c4 docs/smbget: Fix typo in options within man page

https://git.samba.org/?p=samba.git;a=shortlog;h=master


- Log -
commit 5445b2b8b07192ec28761311536072887e88e640
Author: Omri Mor 
Date:   Wed Jul 26 17:10:06 2017 -0700

s3: smbd: Modernize Avahi DEBUG macros and long if statements

DEBUG(10, (...))=>  DBG_DEBUG(...)
if (long... < 0)=>  ret = long; if (ret < 0)

Signed-off-by: Omri Mor 
Reviewed-by: Volker Lendecke 
Reviewed-by: Ralph Boehme 

Autobuild-User(master): Ralph Böhme 
Autobuild-Date(master): Thu Jul 27 17:12:28 CEST 2017 on sn-devel-144

---

Summary of changes:
 source3/smbd/avahi_register.c | 63 +++
 1 file changed, 28 insertions(+), 35 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source3/smbd/avahi_register.c b/source3/smbd/avahi_register.c
index 368168d..c118e61 100644
--- a/source3/smbd/avahi_register.c
+++ b/source3/smbd/avahi_register.c
@@ -42,27 +42,22 @@ static void avahi_entry_group_callback(AvahiEntryGroup *g,
 
switch (status) {
case AVAHI_ENTRY_GROUP_ESTABLISHED:
-   DEBUG(10, ("avahi_entry_group_callback: "
-  "AVAHI_ENTRY_GROUP_ESTABLISHED\n"));
+   DBG_DEBUG("AVAHI_ENTRY_GROUP_ESTABLISHED\n");
break;
case AVAHI_ENTRY_GROUP_FAILURE:
error = avahi_client_errno(state->client);
 
-   DEBUG(10, ("avahi_entry_group_callback: "
-  "AVAHI_ENTRY_GROUP_FAILURE: %s\n",
-  avahi_strerror(error)));
+   DBG_DEBUG("AVAHI_ENTRY_GROUP_FAILURE: %s\n",
+ avahi_strerror(error));
break;
case AVAHI_ENTRY_GROUP_COLLISION:
-   DEBUG(10, ("avahi_entry_group_callback: "
-  "AVAHI_ENTRY_GROUP_COLLISION\n"));
+   DBG_DEBUG("AVAHI_ENTRY_GROUP_COLLISION\n");
break;
case AVAHI_ENTRY_GROUP_UNCOMMITED:
-   DEBUG(10, ("avahi_entry_group_callback: "
-   "AVAHI_ENTRY_GROUP_UNCOMMITED\n"));
+   DBG_DEBUG("AVAHI_ENTRY_GROUP_UNCOMMITED\n");
break;
case AVAHI_ENTRY_GROUP_REGISTERING:
-   DEBUG(10, ("avahi_entry_group_callback: "
-   "AVAHI_ENTRY_GROUP_REGISTERING\n"));
+   DBG_DEBUG("AVAHI_ENTRY_GROUP_REGISTERING\n");
break;
}
 }
@@ -76,31 +71,33 @@ static void avahi_client_callback(AvahiClient *c, 
AvahiClientState status,
 
switch (status) {
case AVAHI_CLIENT_S_RUNNING:
-   DEBUG(10, ("avahi_client_callback: AVAHI_CLIENT_S_RUNNING\n"));
+   DBG_DEBUG("AVAHI_CLIENT_S_RUNNING\n");
 
state->entry_group = avahi_entry_group_new(
c, avahi_entry_group_callback, state);
if (state->entry_group == NULL) {
error = avahi_client_errno(c);
-   DEBUG(10, ("avahi_entry_group_new failed: %s\n",
-  avahi_strerror(error)));
+   DBG_DEBUG("avahi_entry_group_new failed: %s\n",
+ avahi_strerror(error));
break;
}
-   if (avahi_entry_group_add_service(
+
+   error = avahi_entry_group_add_service(
state->entry_group, AVAHI_IF_UNSPEC,
AVAHI_PROTO_UNSPEC, 0, lp_netbios_name(),
-   "_smb._tcp", NULL, NULL, state->port, NULL) < 0) {
-   error = avahi_client_errno(c);
-   DEBUG(10, ("avahi_entry_group_add_service failed: "
-  "%s\n", avahi_strerror(error)));
+   "_smb._tcp", NULL, NULL, state->port, NULL);
+   if (error != AVAHI_OK) {
+   DBG_DEBUG("avahi_entry_group_add_service failed: %s\n",
+ avahi_strerror(error));
avahi_entry_group_free(state->entry_group);
state->entry_group = NULL;
break;
}
-   if (avahi_entry_group_commit(state->entry_group) < 0) {
-   error = avahi_client_errno(c);
-   DEBUG(10, ("avahi_entry_group_commit failed: "
-  "%s\n", avahi_strerror(error)));
+
+   error = avahi_entry_group_commit(state->entry_group);
+   if 

[SCM] Socket Wrapper Repository - branch master updated

2017-07-27 Thread Michael Adam
The branch, master has been updated
   via  fa9cc40 swrap: Protect the FALL_THROUGH define
  from  fafd5ed cmake: Replace deprecated get_target_property()

https://git.samba.org/?p=socket_wrapper.git;a=shortlog;h=master


- Log -
commit fa9cc407f1a8bd17433835eedcc0135424d420a1
Author: Andreas Schneider 
Date:   Thu Jul 27 13:18:12 2017 +0200

swrap: Protect the FALL_THROUGH define

Signed-off-by: Andreas Schneider 
Reviewed-by: Michael Adam 

---

Summary of changes:
 src/socket_wrapper.c | 12 +++-
 1 file changed, 7 insertions(+), 5 deletions(-)


Changeset truncated at 500 lines:

diff --git a/src/socket_wrapper.c b/src/socket_wrapper.c
index 46fb683..280215e 100644
--- a/src/socket_wrapper.c
+++ b/src/socket_wrapper.c
@@ -107,11 +107,13 @@ enum swrap_dbglvl_e {
 #define DESTRUCTOR_ATTRIBUTE
 #endif
 
-#ifdef HAVE_FALLTHROUGH_ATTRIBUTE
-#define FALL_THROUGH __attribute__ ((fallthrough))
-#else
-#define FALL_THROUGH
-#endif
+#ifndef FALL_THROUGH
+# ifdef HAVE_FALLTHROUGH_ATTRIBUTE
+#  define FALL_THROUGH __attribute__ ((fallthrough))
+# else /* HAVE_FALLTHROUGH_ATTRIBUTE */
+#  define FALL_THROUGH
+# endif /* HAVE_FALLTHROUGH_ATTRIBUTE */
+#endif /* FALL_THROUGH */
 
 #ifdef HAVE_ADDRESS_SANITIZER_ATTRIBUTE
 #define DO_NOT_SANITIZE_ADDRESS_ATTRIBUTE __attribute__((no_sanitize_address))


-- 
Socket Wrapper Repository



[SCM] UID Wrapper Repository - annotated tag uid_wrapper-1.2.4 created

2017-07-27 Thread Andreas Schneider
The annotated tag, uid_wrapper-1.2.4 has been created
at  c6da569123fd52390e4ea0de51f2f0988e45e4f5 (tag)
   tagging  701a0d03503ee1cd5263afe94bb09b2ff67078d1 (commit)
  replaces  uid_wrapper-1.2.3
 tagged by  Andreas Schneider
on  Mon Jul 24 09:12:40 2017 +0200

- Log -
uid_wrapper-1.2.4
-BEGIN PGP SIGNATURE-

iQIzBAABCAAdFiEEjf9T4Y8qvI2PPJIjfuD8TcwBTj0FAll1newACgkQfuD8TcwB
Tj2oihAAh11kmBzYtmfk2B00zezjWqNjRdQkbsPP0NeFT6xwu+XnldJRubjzgk85
K52UicbF/6SbOIIGvpEPHJjYK+uZgzrsqiJroISicTlPEMbubHZLyLcy+j0ODuYy
WCxCeOclsHOeBZk1iYDXHCrYLm4tIo/3fHD0G82Le3c4Y2nIcvYgif+JmhaSelh1
pvkgn5xVn4VVFT8HhvMsTabklW+AsrO8dlbQwLo/sgoflKl2G5pbMldc3WTwUWLc
8QP0GbIvOlbfCpjB7YAGXqS+Ne8RFmFzQuMq0DUV33Zp/4yhCd1/pUcgY+80btyz
+hRbEIJxp118oiP21Vv5XLACUPlwR3Kotjwyo9reM6fVfpJtbWU7Q8kQhCnWy3Ko
YkXTgQzKBLJzi2C90XfxWD8HqS2lxFvL1RPFtw1Vl+Swg3jFFdvM+zyviYWmPMnc
IflThk8mw46rPstpmFBuuDz8mVmsyFQO8KGHoGyruFj0UlsCUXuLPD/4HyvLvhoP
9/juNgarfZt1EqVMS7sftTxvJsfEZyVzfIi7kEdRLGhrBvdGlVf6T44Tw2l0TC6z
QcCDh0kCYJJVknvq5NQzGf6j13FMRhNTj75JpcdSsrYPv769FgZof9X9uUyguYVx
0X1OvpZgHtNgqOetYTgRQPHhm/qfaT4fVHvWaL5JU1+5DL94GTY=
=gj66
-END PGP SIGNATURE-

Andreas Schneider (11):
  uwrap: Fix logging on optimized build
  uwrap: Fix a deadlock if uid_wrapper is not enabled
  uwrap: Fix a typo
  uwrap: Fix two error messages
  uwrap: Fix type of len value
  uwrap: Make the unsigned_str smaller
  uwrap: Improve groups string creation
  tests: Add setgroups to test_fork_exec
  uwrap: First do garbage collection before exporting ids
  uwrap: Add a workaround for glibc malloc mutex deadlock bug
  Bump version to 1.2.4

---


-- 
UID Wrapper Repository



[SCM] UID Wrapper Repository - branch master updated

2017-07-27 Thread Andreas Schneider
The branch, master has been updated
   via  701a0d0 Bump version to 1.2.4
  from  4ec0dfc uwrap: Add a workaround for glibc malloc mutex deadlock bug

https://git.samba.org/?p=uid_wrapper.git;a=shortlog;h=master


- Log -
commit 701a0d03503ee1cd5263afe94bb09b2ff67078d1
Author: Andreas Schneider 
Date:   Fri Jul 21 11:58:08 2017 +0200

Bump version to 1.2.4

Signed-off-by: Andreas Schneider 
Reviewed-by: Stefan Metzmacher 

---

Summary of changes:
 CMakeLists.txt | 2 +-
 ChangeLog  | 4 
 2 files changed, 5 insertions(+), 1 deletion(-)


Changeset truncated at 500 lines:

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 97f0e30..9dba9d5 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -8,7 +8,7 @@ set(APPLICATION_NAME ${PROJECT_NAME})
 
 set(APPLICATION_VERSION_MAJOR "1")
 set(APPLICATION_VERSION_MINOR "2")
-set(APPLICATION_VERSION_PATCH "3")
+set(APPLICATION_VERSION_PATCH "4")
 
 set(APPLICATION_VERSION 
"${APPLICATION_VERSION_MAJOR}.${APPLICATION_VERSION_MINOR}.${APPLICATION_VERSION_PATCH}")
 
diff --git a/ChangeLog b/ChangeLog
index 33a879e..b57d876 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,6 +1,10 @@
 ChangeLog
 ==
 
+version 1.2.4 (released 2017-07-24)
+  * Added deadlock workaround for glibc < 2.24
+  * Fixed a possible deadlock bug if uid_wrapper is turned off
+
 version 1.2.3 (released 2017-07-14)
   * Logging is always turned on now
   * Fixed a memory leak


-- 
UID Wrapper Repository



[SCM] Socket Wrapper Repository - branch master updated

2017-07-27 Thread Michael Adam
The branch, master has been updated
   via  fafd5ed cmake: Replace deprecated get_target_property()
   via  e961a1c swrap: Add common exit point to swrap_setsockopt
   via  070d84d swrap: Add common exit point to swrap_getsockopt
   via  b585bf0 swrap: Add common exit point to swrap_connect
   via  4c6082d swrap: Add common exit point to swrap_auto_bind
   via  d6253b3 swrap: Fix tab vs space in swrap_auto_bind
  from  ceb1767 swrap: Suppress intentional fall through warning

https://git.samba.org/?p=socket_wrapper.git;a=shortlog;h=master


- Log -
commit fafd5ed2dd89b7d951d70d0ac5585939cb2e4dcf
Author: Andreas Schneider 
Date:   Thu Jul 27 11:30:23 2017 +0200

cmake: Replace deprecated get_target_property()

Signed-off-by: Andreas Schneider 
Reviewed-by: Michael Adam 

commit e961a1c8b8e03d9e8f070a686207740b486340ea
Author: Anoop C S 
Date:   Thu Jul 13 02:43:47 2017 +0200

swrap: Add common exit point to swrap_setsockopt

In preparation of thread safety.

Signed-off-by: Anoop C S 
Reviewed-by: Andreas Schneider 
Reviewed-by: Michael Adam 

commit 070d84d733369a4de8f2b840a1f92065e2f3473d
Author: Anoop C S 
Date:   Thu Jul 13 02:36:20 2017 +0200

swrap: Add common exit point to swrap_getsockopt

In preparation of thread safety.

Signed-off-by: Anoop C S 
Reviewed-by: Andreas Schneider 
Reviewed-by: Michael Adam 

commit b585bf0a24d19e03f5a9fdc51b6b1bc90e60ddd6
Author: Anoop C S 
Date:   Thu Jul 13 02:30:14 2017 +0200

swrap: Add common exit point to swrap_connect

In preparation of thread safety.

Signed-off-by: Anoop C S 
Reviewed-by: Andreas Schneider 
Reviewed-by: Michael Adam 

commit 4c6082d88e1241fe678687fb0d19480e17e700e5
Author: Anoop C S 
Date:   Thu Jul 13 02:26:10 2017 +0200

swrap: Add common exit point to swrap_auto_bind

In preparation for thread safety.

Signed-off-by: Anoop C S 
Reviewed-by: Andreas Schneider 
Reviewed-by: Michael Adam 

commit d6253b326ee53c4278458fc425335b64519d93dd
Author: Michael Adam 
Date:   Thu Jul 13 02:22:14 2017 +0200

swrap: Fix tab vs space in swrap_auto_bind

Signed-off-by: Michael Adam 
Reviewed-by: Andreas Schneider 

---

Summary of changes:
 src/CMakeLists.txt   |  7 +---
 src/socket_wrapper.c | 98 +++-
 2 files changed, 67 insertions(+), 38 deletions(-)


Changeset truncated at 500 lines:

diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 3b4d7d0..d96f773 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -23,9 +23,4 @@ set_target_properties(
 ${LIBRARY_SOVERSION}
 )
 
-# This needs to be at the end
-if (POLICY CMP0026)
-cmake_policy(SET CMP0026 OLD)
-endif()
-get_target_property(SWRAP_LOCATION socket_wrapper LOCATION)
-set(SOCKET_WRAPPER_LOCATION ${SWRAP_LOCATION} PARENT_SCOPE)
+set(SOCKET_WRAPPER_LOCATION 
"${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_SHARED_LIBRARY_PREFIX}socket_wrapper${CMAKE_SHARED_LIBRARY_SUFFIX}"
 PARENT_SCOPE)
diff --git a/src/socket_wrapper.c b/src/socket_wrapper.c
index 29cd3f9..46fb683 100644
--- a/src/socket_wrapper.c
+++ b/src/socket_wrapper.c
@@ -3173,8 +3173,9 @@ static int swrap_auto_bind(int fd, struct socket_info 
*si, int family)
type = SOCKET_TYPE_CHAR_UDP;
break;
default:
-   errno = ESOCKTNOSUPPORT;
-   return -1;
+   errno = ESOCKTNOSUPPORT;
+   ret = -1;
+   goto done;
}
 
memset(, 0, sizeof(in));
@@ -3194,7 +3195,8 @@ static int swrap_auto_bind(int fd, struct socket_info 
*si, int family)
 
if (si->family != family) {
errno = ENETUNREACH;
-   return -1;
+   ret = -1;
+   goto done;
}
 
switch (si->type) {
@@ -3206,7 +3208,8 @@ static int swrap_auto_bind(int fd, struct socket_info 
*si, int family)
break;
default:
errno = ESOCKTNOSUPPORT;
-   return -1;
+   ret = -1;
+   goto done;
}
 
memset(, 0, sizeof(in6));
@@ -3223,7 +3226,8 @@ static int swrap_auto_bind(int fd, struct socket_info 
*si, int 

[SCM] Socket Wrapper Repository - branch master updated

2017-07-27 Thread Andreas Schneider
The branch, master has been updated
   via  ceb1767 swrap: Suppress intentional fall through warning
  from  9088344 swrap: Add fopen64() on systems which provide it

https://git.samba.org/?p=socket_wrapper.git;a=shortlog;h=master


- Log -
commit ceb17676cba178f56d00d21189c3f1765e5c2ae0
Author: Anoop C S 
Date:   Sat Jul 15 20:54:06 2017 +0530

swrap: Suppress intentional fall through warning

-Wimplicit-fallthrough compiler flag introduced with gcc v7
results in the following warning during compilation:

[  7%] Building C object 
src/CMakeFiles/socket_wrapper.dir/socket_wrapper.c.o
src/socket_wrapper.c: In function ‘sockaddr_convert_to_un’:
src/socket_wrapper.c:1846:18: warning: this statement may fall through 
[-Wimplicit-fallthrough=]
  case AF_UNSPEC: {
  ^
/src/socket_wrapper.c:1866:2: note: here
  case AF_INET:
  ^~~~

Default level for -Wimplicit-fallthrough(which is 3) allows
us to get rid of the above warning using specific comments
made within switch cases matching the regular expressions
outlined in gcc docs[1].

But for us the presence of preprocessor directives in the
vicinity of such comments nullifies its effect[2]. So our
best bet would be to make use of the reliable fallthrough
attribute and supress such warnings in future.

[1] 
https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html#index-Wimplicit-fallthrough
[2] https://gcc.gnu.org/bugzilla/show_bug.cgi?id=77817

Signed-off-by: Anoop C S 
Reviewed-by: Andreas Schneider 
Reviewed-by: Michael Adam 

---

Summary of changes:
 ConfigureChecks.cmake | 27 +++
 config.h.cmake|  1 +
 src/socket_wrapper.c  | 16 +++-
 3 files changed, 39 insertions(+), 5 deletions(-)


Changeset truncated at 500 lines:

diff --git a/ConfigureChecks.cmake b/ConfigureChecks.cmake
index 0691c8a..cb2ea92 100644
--- a/ConfigureChecks.cmake
+++ b/ConfigureChecks.cmake
@@ -198,6 +198,33 @@ int main(void) {
 }" HAVE_DESTRUCTOR_ATTRIBUTE)
 
 check_c_source_compiles("
+#define FALL_THROUGH __attribute__((fallthrough))
+
+enum direction_e {
+UP = 0,
+DOWN,
+};
+
+int main(void) {
+enum direction_e key = UP;
+int i = 10;
+int j = 0;
+
+switch (key) {
+case UP:
+i = 5;
+FALL_THROUGH;
+case DOWN:
+j = i * 2;
+break;
+default:
+break;
+}
+
+return 0;
+}" HAVE_FALLTHROUGH_ATTRIBUTE)
+
+check_c_source_compiles("
 __thread int tls;
 
 int main(void) {
diff --git a/config.h.cmake b/config.h.cmake
index 2f494a4..b98ceff 100644
--- a/config.h.cmake
+++ b/config.h.cmake
@@ -62,6 +62,7 @@
 #cmakedefine HAVE_GCC_THREAD_LOCAL_STORAGE 1
 #cmakedefine HAVE_CONSTRUCTOR_ATTRIBUTE 1
 #cmakedefine HAVE_DESTRUCTOR_ATTRIBUTE 1
+#cmakedefine HAVE_FALLTHROUGH_ATTRIBUTE 1
 #cmakedefine HAVE_ADDRESS_SANITIZER_ATTRIBUTE 1
 #cmakedefine HAVE_SOCKADDR_STORAGE 1
 #cmakedefine HAVE_IPV6 1
diff --git a/src/socket_wrapper.c b/src/socket_wrapper.c
index 395d0d7..29cd3f9 100644
--- a/src/socket_wrapper.c
+++ b/src/socket_wrapper.c
@@ -107,6 +107,12 @@ enum swrap_dbglvl_e {
 #define DESTRUCTOR_ATTRIBUTE
 #endif
 
+#ifdef HAVE_FALLTHROUGH_ATTRIBUTE
+#define FALL_THROUGH __attribute__ ((fallthrough))
+#else
+#define FALL_THROUGH
+#endif
+
 #ifdef HAVE_ADDRESS_SANITIZER_ATTRIBUTE
 #define DO_NOT_SANITIZE_ADDRESS_ATTRIBUTE __attribute__((no_sanitize_address))
 #else
@@ -587,7 +593,7 @@ static void *swrap_load_lib_handle(enum swrap_lib lib)
 
switch (lib) {
case SWRAP_LIBNSL:
-   /* FALL TROUGH */
+   FALL_THROUGH;
case SWRAP_LIBSOCKET:
 #ifdef HAVE_LIBSOCKET
handle = swrap.libc.socket_handle;
@@ -606,7 +612,7 @@ static void *swrap_load_lib_handle(enum swrap_lib lib)
}
break;
 #endif
-   /* FALL TROUGH */
+   FALL_THROUGH;
case SWRAP_LIBC:
handle = swrap.libc.handle;
 #ifdef LIBC_SO
@@ -1861,7 +1867,7 @@ static int sockaddr_convert_to_un(struct socket_info *si,
 * AF_UNSPEC is mapped to AF_INET and must be treated here.
 */
 
-   /* FALL THROUGH */
+   FALL_THROUGH;
}
case AF_INET:
 #ifdef HAVE_IPV6
@@ -2790,12 +2796,12 @@ static int swrap_socket(int family, int type, int 
protocol)
if (real_type == SOCK_STREAM) {
break;
}
-   /*fall through*/
+   FALL_THROUGH;
case 17:
if (real_type == SOCK_DGRAM) {
break;
}
-   /*fall through*/
+   FALL_THROUGH;
default: