[PATCH] Fix new coverity findings

Volker Lendecke Volker.Lendecke at SerNet.DE
Tue Jan 30 11:38:56 UTC 2018


Hi!

Review appreciated!

Thanks, Volker

-- 
Besuchen Sie die verinice.XP 2018 in Berlin,
Anwenderkonferenz für Informationssicherheit
vom 21.-23.03.2018 im Sofitel Kurfürstendamm
Info & Anmeldung hier: http://veriniceXP.org

SerNet GmbH, Bahnhofsallee 1b, 37081 Göttingen
phone: +49-551-370000-0, fax: +49-551-370000-9
AG Göttingen, HRB 2816, GF: Dr. Johannes Loxen
http://www.sernet.de, mailto:kontakt at sernet.de
-------------- next part --------------
From ee4d33098b9162e514be0b10e2c7a4f699e3b923 Mon Sep 17 00:00:00 2001
From: Volker Lendecke <vl at samba.org>
Date: Tue, 30 Jan 2018 12:34:11 +0100
Subject: [PATCH 1/3] vfs_virusfilter: Fix CID 1428739 Buffer not null
 terminated

Signed-off-by: Volker Lendecke <vl at samba.org>
---
 source3/modules/vfs_virusfilter_utils.c | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/source3/modules/vfs_virusfilter_utils.c b/source3/modules/vfs_virusfilter_utils.c
index 628e0aef99a..d2616f058d5 100644
--- a/source3/modules/vfs_virusfilter_utils.c
+++ b/source3/modules/vfs_virusfilter_utils.c
@@ -148,10 +148,16 @@ bool virusfilter_io_connect_path(
 	struct sockaddr_un addr;
 	NTSTATUS status;
 	int socket, bes_result, flags, ret;
+	size_t len;
 
 	ZERO_STRUCT(addr);
 	addr.sun_family = AF_UNIX;
-	strncpy(addr.sun_path, path, sizeof(addr.sun_path));
+
+	len = strlcpy(addr.sun_path, path, sizeof(addr.sun_path));
+	if (len >= sizeof(addr.sun_path)) {
+		io_h->stream = NULL;
+		return false;
+	}
 
 	status = open_socket_out((struct sockaddr_storage *)&addr, 0,
 				 io_h->connect_timeout,
-- 
2.11.0


From 7ba112652f78e6d41f5ac05613484648106bc90d Mon Sep 17 00:00:00 2001
From: Volker Lendecke <vl at samba.org>
Date: Tue, 30 Jan 2018 12:36:14 +0100
Subject: [PATCH 2/3] vfs_virusfilter: Fix CID 1428740 Macro compares unsigned
 to 0

vsnprintf returns "int" and not "size_t"

Signed-off-by: Volker Lendecke <vl at samba.org>
---
 source3/modules/vfs_virusfilter_utils.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/source3/modules/vfs_virusfilter_utils.c b/source3/modules/vfs_virusfilter_utils.c
index d2616f058d5..55d00f715d6 100644
--- a/source3/modules/vfs_virusfilter_utils.c
+++ b/source3/modules/vfs_virusfilter_utils.c
@@ -417,7 +417,7 @@ bool virusfilter_io_vwritefl(
 	const char *data_fmt, va_list ap)
 {
 	char data[VIRUSFILTER_IO_BUFFER_SIZE + VIRUSFILTER_IO_EOL_SIZE];
-	size_t data_size;
+	int data_size;
 
 	data_size = vsnprintf(data, VIRUSFILTER_IO_BUFFER_SIZE, data_fmt, ap);
 
-- 
2.11.0


From 78f83c9f6ca4b4ecb1e079cb0c11a9bf31d9fdca Mon Sep 17 00:00:00 2001
From: Volker Lendecke <vl at samba.org>
Date: Tue, 30 Jan 2018 12:37:30 +0100
Subject: [PATCH 3/3] vfs_virusfilter: Fix CID 1428738 Macro compares unsigned
 to 0

vsnprintf returns "int" and not "size_t"

Signed-off-by: Volker Lendecke <vl at samba.org>
---
 source3/modules/vfs_virusfilter_utils.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/source3/modules/vfs_virusfilter_utils.c b/source3/modules/vfs_virusfilter_utils.c
index 55d00f715d6..90ae427023b 100644
--- a/source3/modules/vfs_virusfilter_utils.c
+++ b/source3/modules/vfs_virusfilter_utils.c
@@ -395,7 +395,7 @@ bool virusfilter_io_writefl(
 {
 	va_list ap;
 	char data[VIRUSFILTER_IO_BUFFER_SIZE + VIRUSFILTER_IO_EOL_SIZE];
-	size_t data_size;
+	int data_size;
 
 	va_start(ap, data_fmt);
 	data_size = vsnprintf(data, VIRUSFILTER_IO_BUFFER_SIZE, data_fmt, ap);
-- 
2.11.0



More information about the samba-technical mailing list