diff --git a/libconfuse-d73777c2c3566fb2647727bb56d9a2295b81669b.patch b/libconfuse-d73777c2c3566fb2647727bb56d9a2295b81669b.patch new file mode 100644 index 0000000..28f7afc --- /dev/null +++ b/libconfuse-d73777c2c3566fb2647727bb56d9a2295b81669b.patch @@ -0,0 +1,38 @@ +commit d73777c2c3566fb2647727bb56d9a2295b81669b +Author: Joachim Wiberg +Date: Fri Sep 2 16:12:46 2022 +0200 + + Fix #163: unterminated username used with getpwnam() + + Signed-off-by: Joachim Wiberg + +diff --git a/src/confuse.c b/src/confuse.c +index 6d1fdbd..05566b5 100644 +--- a/src/confuse.c ++++ b/src/confuse.c +@@ -1894,18 +1894,20 @@ DLLIMPORT char *cfg_tilde_expand(const char *filename) + passwd = getpwuid(geteuid()); + file = filename + 1; + } else { +- /* ~user or ~user/path */ +- char *user; ++ char *user; /* ~user or ~user/path */ ++ size_t len; + + file = strchr(filename, '/'); +- if (file == 0) ++ if (file == NULL) + file = filename + strlen(filename); + +- user = malloc(file - filename); ++ len = file - filename - 1; ++ user = malloc(len + 1); + if (!user) + return NULL; + +- strncpy(user, filename + 1, file - filename - 1); ++ strncpy(user, &filename[1], len); ++ user[len] = 0; + passwd = getpwnam(user); + free(user); + } diff --git a/libconfuse.changes b/libconfuse.changes index d08a25b..e9c1d77 100644 --- a/libconfuse.changes +++ b/libconfuse.changes @@ -1,3 +1,11 @@ +------------------------------------------------------------------- +Mon Sep 12 11:02:59 CEST 2022 - ro@suse.de + +- add fix from upstream git + libconfuse-d73777c2c3566fb2647727bb56d9a2295b81669b.patch + cfg_tilde_expand in confuse.c has a heap-based buffer over-read + (CVE-2022-40320 boo#1203326) + ------------------------------------------------------------------- Thu Jun 25 07:08:53 UTC 2020 - Michael Vetter diff --git a/libconfuse.spec b/libconfuse.spec index af15e8e..54ca0bc 100644 --- a/libconfuse.spec +++ b/libconfuse.spec @@ -1,7 +1,7 @@ # # spec file for package libconfuse # -# Copyright (c) 2020 SUSE LLC +# Copyright (c) 2022 SUSE LLC # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -25,6 +25,8 @@ License: LGPL-2.1-or-later Group: Development/Libraries/C and C++ URL: http://www.nongnu.org/confuse/ Source: https://github.com/martinh/libconfuse/releases/download/v%{version}/confuse-%{version}.tar.xz +# PATCH-FIX_UPSTREAM +Patch0: libconfuse-d73777c2c3566fb2647727bb56d9a2295b81669b.patch BuildRequires: check-devel BuildRequires: gcc-c++ BuildRequires: gettext-devel @@ -67,7 +69,7 @@ This package holds the development files for libconfuse. %lang_package -r %{library_name} %prep -%setup -q -n confuse-%{version} +%autosetup -n confuse-%{version} -p1 %build %configure --enable-shared --disable-static