aboutsummaryrefslogtreecommitdiffstats
path: root/meta-networking/recipes-connectivity/samba/samba/0002-util-Fix-build-on-FreeBSD-by-avoiding-NSS_BUFLEN_PAS.patch
diff options
context:
space:
mode:
authorYi Zhao <yi.zhao@windriver.com>2020-07-31 16:51:09 +0800
committerArmin Kuster <akuster808@gmail.com>2020-08-23 11:08:25 -0700
commit060d218f82af9070a8e79cefe1093f9b0e6bd7b8 (patch)
tree0bc8f39a2a28083dd930b6c465e61e612432c258 /meta-networking/recipes-connectivity/samba/samba/0002-util-Fix-build-on-FreeBSD-by-avoiding-NSS_BUFLEN_PAS.patch
parent5fe92ba89e7f3c05eebb15592720974ae92a5d6a (diff)
downloadmeta-openembedded-contrib-060d218f82af9070a8e79cefe1093f9b0e6bd7b8.tar.gz
meta-openembedded-contrib-060d218f82af9070a8e79cefe1093f9b0e6bd7b8.tar.bz2
meta-openembedded-contrib-060d218f82af9070a8e79cefe1093f9b0e6bd7b8.zip
samba: upgrade 4.10.15 -> 4.10.17
This is a security release in order to address the following defects: CVE-2020-10730: NULL pointer de-reference and use-after-free in Samba AD DC LDAP Server with ASQ, VLV and paged_results. CVE-2020-10745: Parsing and packing of NBT and DNS packets can consume excessive CPU CVE-2020-10760: LDAP Use-after-free in Samba AD DC Global Catalog with paged_results and VLV. CVE-2020-14303: Empty UDP packet DoS in Samba AD DC nbtd. Also backport 3 patches to fix build error with musl. Signed-off-by: Yi Zhao <yi.zhao@windriver.com> Signed-off-by: Khem Raj <raj.khem@gmail.com> (cherry picked from commit 1609df11530ebb73de863d0c705e16107015dbe3) Signed-off-by: Armin Kuster <akuster808@gmail.com>
Diffstat (limited to 'meta-networking/recipes-connectivity/samba/samba/0002-util-Fix-build-on-FreeBSD-by-avoiding-NSS_BUFLEN_PAS.patch')
-rw-r--r--meta-networking/recipes-connectivity/samba/samba/0002-util-Fix-build-on-FreeBSD-by-avoiding-NSS_BUFLEN_PAS.patch79
1 files changed, 79 insertions, 0 deletions
diff --git a/meta-networking/recipes-connectivity/samba/samba/0002-util-Fix-build-on-FreeBSD-by-avoiding-NSS_BUFLEN_PAS.patch b/meta-networking/recipes-connectivity/samba/samba/0002-util-Fix-build-on-FreeBSD-by-avoiding-NSS_BUFLEN_PAS.patch
new file mode 100644
index 0000000000..dcd79044ae
--- /dev/null
+++ b/meta-networking/recipes-connectivity/samba/samba/0002-util-Fix-build-on-FreeBSD-by-avoiding-NSS_BUFLEN_PAS.patch
@@ -0,0 +1,79 @@
+From 57bd719af1f138f44f71b2078995452582da0da6 Mon Sep 17 00:00:00 2001
+From: Martin Schwenke <martin@meltin.net>
+Date: Fri, 5 Jun 2020 21:52:23 +1000
+Subject: [PATCH 2/3] util: Fix build on FreeBSD by avoiding NSS_BUFLEN_PASSWD
+
+NSS_BUFLEN_PASSWD is not defined on FreeBSD. Use
+sysconf(_SC_GETPW_R_SIZE_MAX) instead, as per POSIX.
+
+Use a dynamically allocated buffer instead of trying to cram all of
+the logic into the declarations. This will come in useful later
+anyway.
+
+Signed-off-by: Martin Schwenke <martin@meltin.net>
+Reviewed-by: Volker Lendecke <vl@samba.org>
+Reviewed-by: Bjoern Jacke <bjacke@samba.org>
+(cherry picked from commit 847208cd8ac68c4c7d1dae63767820db1c69292b)
+
+Upstream-Status:Backport
+[https://gitlab.com/samba-team/samba/-/commit/57bd719af1f138f44f71b2078995452582da0da6]
+
+Signed-off-by: Yi Zhao <yi.zhao@windriver.com>
+---
+ lib/util/util_paths.c | 27 ++++++++++++++++++++++-----
+ 1 file changed, 22 insertions(+), 5 deletions(-)
+
+diff --git a/lib/util/util_paths.c b/lib/util/util_paths.c
+index dec91772d9e..9bc6df37e5d 100644
+--- a/lib/util/util_paths.c
++++ b/lib/util/util_paths.c
+@@ -68,24 +68,41 @@ static char *get_user_home_dir(TALLOC_CTX *mem_ctx)
+ {
+ struct passwd pwd = {0};
+ struct passwd *pwdbuf = NULL;
+- char buf[NSS_BUFLEN_PASSWD] = {0};
++ char *buf = NULL;
++ char *out = NULL;
++ long int initlen;
+ size_t len;
+ int rc;
+
+- rc = getpwuid_r(getuid(), &pwd, buf, NSS_BUFLEN_PASSWD, &pwdbuf);
++ initlen = sysconf(_SC_GETPW_R_SIZE_MAX);
++ if (initlen == -1) {
++ len = 1024;
++ } else {
++ len = (size_t)initlen;
++ }
++ buf = talloc_size(mem_ctx, len);
++ if (buf == NULL) {
++ return NULL;
++ }
++
++ rc = getpwuid_r(getuid(), &pwd, buf, len, &pwdbuf);
+ if (rc != 0 || pwdbuf == NULL ) {
+ const char *szPath = getenv("HOME");
+ if (szPath == NULL) {
+- return NULL;
++ goto done;
+ }
+ len = strnlen(szPath, PATH_MAX);
+ if (len >= PATH_MAX) {
+ return NULL;
+ }
+- return talloc_strdup(mem_ctx, szPath);
++ out = talloc_strdup(mem_ctx, szPath);
++ goto done;
+ }
+
+- return talloc_strdup(mem_ctx, pwd.pw_dir);
++ out = talloc_strdup(mem_ctx, pwd.pw_dir);
++done:
++ TALLOC_FREE(buf);
++ return out;
+ }
+
+ char *path_expand_tilde(TALLOC_CTX *mem_ctx, const char *d)
+--
+2.17.1
+