commit d7465fdfafcede9bbc1966bac26670ad46d8398e
Author: Elan Ruusamäe <[email protected]>
Date:   Mon Apr 8 11:56:43 2013 +0300

    Fix fd leaks when sourcing directory. RHBZ#903833

 bash-4.2-missing_closes.patch | 39 +++++++++++++++++++++++++++++++++++++++
 bash.spec                     |  8 +++++---
 2 files changed, 44 insertions(+), 3 deletions(-)
---
diff --git a/bash.spec b/bash.spec
index ed5b124..feef2c5 100644
--- a/bash.spec
+++ b/bash.spec
@@ -5,7 +5,7 @@
 
 %define                ver             4.2
 %define                patchlevel      45
-%define                rel             1
+%define                rel             2
 Summary:       GNU Bourne Again Shell (bash)
 Summary(fr.UTF-8):     Le shell Bourne Again de GNU
 Summary(pl.UTF-8):     Powłoka GNU Bourne Again Shell (bash)
@@ -35,6 +35,7 @@ Patch10:      %{name}-act_like_sh.patch
 Patch11:       %{name}-elinks_cont.patch
 Patch12:       %{name}-pl.po-update.patch
 Patch13:       %{name}-format-string.patch
+Patch14:       %{name}-4.2-missing_closes.patch
 %patchset_source -f http://ftp.gnu.org/gnu/bash/bash-4.2-patches/bash42-%03g 1 
%{patchlevel}
 URL:           http://www.gnu.org/software/bash/
 BuildRequires: autoconf
@@ -194,6 +195,7 @@ tym pakiecie jest wersja basha skonsolidowana statycznie.
 %patch11 -p1
 %patch12 -p1
 %patch13 -p1
+%patch14 -p1
 
 %build
 cp -f /usr/share/automake/config.* support
@@ -211,13 +213,13 @@ for mode in %{?with_static:static} shared; do
        --enable-dparen-arithmetic \
        --enable-separate-helpfiles \
        --without-bash-malloc \
-       `[ "$mode" = "static" ] && echo "--enable-static-link"` \
+       $([ "$mode" = "static" ] && echo "--enable-static-link") \
        --with-installed-readline
 
 %{__make} \
        DEFS="-DHAVE_CONFIG_H -D_GNU_SOURCE"
 
-[ "$mode" = "static" ] && mv -f bash bash.static || :
+[ "$mode" = "static" ] && mv -f bash bash.static
 done
 
 %{?with_tests:%{__make} tests}
diff --git a/bash-4.2-missing_closes.patch b/bash-4.2-missing_closes.patch
new file mode 100644
index 0000000..8dfd1d4
--- /dev/null
+++ b/bash-4.2-missing_closes.patch
@@ -0,0 +1,39 @@
+There are missing calls of close() leading to resource leak (fd leak).
+Simple reproducer:
+. /
+and /proc/$$/fd contain one open fd for each above call
+
+Signed-off-by: Roman Rakus <[email protected]>
+---
+ builtins/evalfile.c | 3 +++
+ 1 file changed, 3 insertions(+)
+
+diff --git a/builtins/evalfile.c b/builtins/evalfile.c
+index 60f89d1..d30bd96 100644
+--- a/builtins/evalfile.c
++++ b/builtins/evalfile.c
+@@ -133,11 +133,13 @@ file_error_and_exit:
+   if (S_ISDIR (finfo.st_mode))
+     {
+       (*errfunc) (_("%s: is a directory"), filename);
++      close(fd);
+       return ((flags & FEVAL_BUILTIN) ? EXECUTION_FAILURE : -1);
+     }
+   else if ((flags & FEVAL_REGFILE) && S_ISREG (finfo.st_mode) == 0)
+     {
+       (*errfunc) (_("%s: not a regular file"), filename);
++      close(fd);
+       return ((flags & FEVAL_BUILTIN) ? EXECUTION_FAILURE : -1);
+     }
+ 
+@@ -146,6 +148,7 @@ file_error_and_exit:
+   if (file_size != finfo.st_size || file_size + 1 < file_size)
+     {
+       (*errfunc) (_("%s: file is too large"), filename);
++      close(fd);
+       return ((flags & FEVAL_BUILTIN) ? EXECUTION_FAILURE : -1);
+     }      
+ 
+-- 
+1.7.11.7
+
================================================================

---- gitweb:

http://git.pld-linux.org/gitweb.cgi/packages/bash.git/commitdiff/d7465fdfafcede9bbc1966bac26670ad46d8398e

_______________________________________________
pld-cvs-commit mailing list
[email protected]
http://lists.pld-linux.org/mailman/listinfo/pld-cvs-commit

Reply via email to