From de49812990871e1705b64051c35161d5e6400269 Mon Sep 17 00:00:00 2001 From: V3n3RiX Date: Mon, 24 Dec 2018 14:11:38 +0000 Subject: gentoo resync : 24.12.2018 --- dev-libs/libverto/files/libverto-load.patch | 78 +++++++++++++++++++++++++++++ 1 file changed, 78 insertions(+) create mode 100644 dev-libs/libverto/files/libverto-load.patch (limited to 'dev-libs/libverto/files/libverto-load.patch') diff --git a/dev-libs/libverto/files/libverto-load.patch b/dev-libs/libverto/files/libverto-load.patch new file mode 100644 index 000000000000..94dceac5d69c --- /dev/null +++ b/dev-libs/libverto/files/libverto-load.patch @@ -0,0 +1,78 @@ +From 7989b3c6bdfdeb8770d17d8717b4a0cd48e79386 Mon Sep 17 00:00:00 2001 +From: Robbie Harwood +Date: Wed, 24 Oct 2018 16:57:11 -0400 +Subject: [PATCH] Fix rare leak of DSO in module_load + +--- + src/module.c | 31 +++++++++++++++---------------- + 1 file changed, 15 insertions(+), 16 deletions(-) + +diff --git a/src/module.c b/src/module.c +index 1f1b7c9..0b59034 100644 +--- a/src/module.c ++++ b/src/module.c +@@ -182,7 +182,7 @@ module_load(const char *filename, const char *symbname, + intdll = dlopen(filename, RTLD_LAZY | RTLD_LOCAL); + #endif /* WIN32 */ + if (!intdll) +- return dllerror(); ++ goto fail; + + /* Get the module symbol */ + #ifdef WIN32 +@@ -190,16 +190,12 @@ module_load(const char *filename, const char *symbname, + #else /* WIN32 */ + intsym = dlsym(intdll, symbname); + #endif /* WIN32 */ +- if (!intsym) { +- module_close(intdll); +- return dllerror(); +- } ++ if (!intsym) ++ goto fail; + + /* Figure out whether or not to load this module */ +- if (!shouldload(intsym, misc, &interr)) { +- module_close(intdll); +- return interr; +- } ++ if (!shouldload(intsym, misc, &interr)) ++ goto fail; + + /* Re-open the module */ + module_close(intdll); +@@ -208,9 +204,8 @@ module_load(const char *filename, const char *symbname, + #else /* WIN32 */ + intdll = dlopen(filename, RTLD_NOW | RTLD_LOCAL); + #endif /* WIN32 */ +- if (!intdll) { +- return dllerror(); +- } ++ if (!intdll) ++ goto fail; + + /* Get the symbol again */ + #ifdef WIN32 +@@ -218,14 +213,18 @@ module_load(const char *filename, const char *symbname, + #else /* WIN32 */ + intsym = dlsym(intdll, symbname); + #endif /* WIN32 */ +- if (!intsym) { +- module_close(intdll); +- return dllerror(); +- } ++ if (!intsym) ++ goto fail; + + if (dll) + *dll = intdll; + if (symb) + *symb = intsym; + return NULL; ++ ++fail: ++ if (!interr) ++ interr = dllerror(); ++ module_close(intdll); ++ return interr; + } -- cgit v1.2.3