Date: Sat, 30 Jan 2021 13:22:39 +0000 (UTC) From: Dimitry Andric <dim@FreeBSD.org> To: ports-committers@freebsd.org, svn-ports-all@freebsd.org, svn-ports-head@freebsd.org Subject: svn commit: r563405 - in head/net: samba411 samba411/files samba412 samba412/files samba413 samba413/files Message-ID: <202101301322.10UDMddO038970@repo.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: dim (src committer) Date: Sat Jan 30 13:22:39 2021 New Revision: 563405 URL: https://svnweb.freebsd.org/changeset/ports/563405 Log: net/samba411 net/samba412 net/samba413: Fix zero-sized VLAs With recent versions of clang, samba could dump core shortly after startup, terminating with either SIGILL or SIGSEGV. Investigation showed that samba is using C99 variable length arrays (VLAs), and in some cases the length of these arrays would become zero. Since this is undefined behavior, various interesting things would happen, often ending in segfaults. Fix this by avoiding to use zero as the length for these VLA declarations. A similar patch was also sent upstream, and was accepted and included in subsequent samba releases. See also: https://bugzilla.samba.org/show_bug.cgi?id=14605 Reported by: Dries Michiels <driesm.michiels@gmail.com> PR: 252157 MFH: 2021Q1 Added: head/net/samba411/files/patch-source3_lib_messages.c (contents, props changed) head/net/samba412/files/patch-source3_lib_messages.c (contents, props changed) head/net/samba413/files/patch-source3_lib_messages.c (contents, props changed) Modified: head/net/samba411/Makefile head/net/samba412/Makefile head/net/samba413/Makefile Modified: head/net/samba411/Makefile ============================================================================== --- head/net/samba411/Makefile Sat Jan 30 13:19:45 2021 (r563404) +++ head/net/samba411/Makefile Sat Jan 30 13:22:39 2021 (r563405) @@ -3,7 +3,7 @@ PORTNAME= ${SAMBA4_BASENAME}411 PORTVERSION= ${SAMBA4_VERSION} -PORTREVISION= 0 +PORTREVISION= 1 CATEGORIES?= net MASTER_SITES= SAMBA/samba/stable SAMBA/samba/rc DISTNAME= ${SAMBA4_DISTNAME} Added: head/net/samba411/files/patch-source3_lib_messages.c ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/net/samba411/files/patch-source3_lib_messages.c Sat Jan 30 13:22:39 2021 (r563405) @@ -0,0 +1,29 @@ +--- source3/lib/messages.c.orig 2020-01-08 10:24:52 UTC ++++ source3/lib/messages.c +@@ -158,7 +158,7 @@ struct messaging_rec *messaging_rec_create( + + { + struct messaging_rec rec; +- int64_t fds64[num_fds]; ++ int64_t fds64[MAX(1, num_fds)]; + size_t i; + + for (i=0; i<num_fds; i++) { +@@ -392,7 +392,7 @@ static void messaging_recv_cb(struct tevent_context *e + private_data, struct messaging_context); + struct server_id_buf idbuf; + struct messaging_rec rec; +- int64_t fds64[MIN(num_fds, INT8_MAX)]; ++ int64_t fds64[MAX(1, MIN(num_fds, INT8_MAX))]; + size_t i; + + if (msg_len < MESSAGE_HDR_LENGTH) { +@@ -1348,7 +1348,7 @@ static void messaging_dispatch_rec(struct messaging_co + + if (ev != msg_ctx->event_ctx) { + struct iovec iov; +- int fds[rec->num_fds]; ++ int fds[MAX(1, rec->num_fds)]; + int ret; + + /* Modified: head/net/samba412/Makefile ============================================================================== --- head/net/samba412/Makefile Sat Jan 30 13:19:45 2021 (r563404) +++ head/net/samba412/Makefile Sat Jan 30 13:22:39 2021 (r563405) @@ -3,7 +3,7 @@ PORTNAME= ${SAMBA4_BASENAME}412 PORTVERSION= ${SAMBA4_VERSION} -PORTREVISION= 1 +PORTREVISION= 2 CATEGORIES?= net MASTER_SITES= SAMBA/samba/stable SAMBA/samba/rc DISTNAME= ${SAMBA4_DISTNAME} Added: head/net/samba412/files/patch-source3_lib_messages.c ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/net/samba412/files/patch-source3_lib_messages.c Sat Jan 30 13:22:39 2021 (r563405) @@ -0,0 +1,29 @@ +--- source3/lib/messages.c.orig 2020-02-28 08:59:35 UTC ++++ source3/lib/messages.c +@@ -157,7 +157,7 @@ struct messaging_rec *messaging_rec_create( + + { + struct messaging_rec rec; +- int64_t fds64[num_fds]; ++ int64_t fds64[MAX(1, num_fds)]; + size_t i; + + for (i=0; i<num_fds; i++) { +@@ -391,7 +391,7 @@ static void messaging_recv_cb(struct tevent_context *e + private_data, struct messaging_context); + struct server_id_buf idbuf; + struct messaging_rec rec; +- int64_t fds64[MIN(num_fds, INT8_MAX)]; ++ int64_t fds64[MAX(1, MIN(num_fds, INT8_MAX))]; + size_t i; + + if (msg_len < MESSAGE_HDR_LENGTH) { +@@ -1375,7 +1375,7 @@ static void messaging_dispatch_rec(struct messaging_co + + if (ev != msg_ctx->event_ctx) { + struct iovec iov; +- int fds[rec->num_fds]; ++ int fds[MAX(1, rec->num_fds)]; + int ret; + + /* Modified: head/net/samba413/Makefile ============================================================================== --- head/net/samba413/Makefile Sat Jan 30 13:19:45 2021 (r563404) +++ head/net/samba413/Makefile Sat Jan 30 13:22:39 2021 (r563405) @@ -3,7 +3,7 @@ PORTNAME= ${SAMBA4_BASENAME}413 PORTVERSION= ${SAMBA4_VERSION} -PORTREVISION= 1 +PORTREVISION= 2 CATEGORIES?= net MASTER_SITES= SAMBA/samba/stable SAMBA/samba/rc DISTNAME= ${SAMBA4_DISTNAME} Added: head/net/samba413/files/patch-source3_lib_messages.c ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/net/samba413/files/patch-source3_lib_messages.c Sat Jan 30 13:22:39 2021 (r563405) @@ -0,0 +1,29 @@ +--- source3/lib/messages.c.orig 2020-07-09 09:33:56 UTC ++++ source3/lib/messages.c +@@ -157,7 +157,7 @@ struct messaging_rec *messaging_rec_create( + + { + struct messaging_rec rec; +- int64_t fds64[num_fds]; ++ int64_t fds64[MAX(1, num_fds)]; + size_t i; + + for (i=0; i<num_fds; i++) { +@@ -391,7 +391,7 @@ static void messaging_recv_cb(struct tevent_context *e + private_data, struct messaging_context); + struct server_id_buf idbuf; + struct messaging_rec rec; +- int64_t fds64[MIN(num_fds, INT8_MAX)]; ++ int64_t fds64[MAX(1, MIN(num_fds, INT8_MAX))]; + size_t i; + + if (msg_len < MESSAGE_HDR_LENGTH) { +@@ -1371,7 +1371,7 @@ static void messaging_dispatch_rec(struct messaging_co + + if (ev != msg_ctx->event_ctx) { + struct iovec iov; +- int fds[rec->num_fds]; ++ int fds[MAX(1, rec->num_fds)]; + int ret; + + /*
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202101301322.10UDMddO038970>