Skip site navigation (1)Skip section navigation (2)
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>