]> git.pld-linux.org Git - packages/bash.git/blame - bash-4.2-missing_closes.patch
Up to 5.2.26
[packages/bash.git] / bash-4.2-missing_closes.patch
CommitLineData
d7465fdf
ER
1There are missing calls of close() leading to resource leak (fd leak).\r
2Simple reproducer:\r
3. /\r
4and /proc/$$/fd contain one open fd for each above call\r
5\r
6Signed-off-by: Roman Rakus <rrakus@redhat.com>\r
7---\r
8 builtins/evalfile.c | 3 +++\r
9 1 file changed, 3 insertions(+)\r
10\r
11diff --git a/builtins/evalfile.c b/builtins/evalfile.c\r
12index 60f89d1..d30bd96 100644\r
13--- a/builtins/evalfile.c\r
14+++ b/builtins/evalfile.c\r
15@@ -133,11 +133,13 @@ file_error_and_exit:\r
16 if (S_ISDIR (finfo.st_mode))\r
17 {\r
18 (*errfunc) (_("%s: is a directory"), filename);\r
19+ close(fd);\r
20 return ((flags & FEVAL_BUILTIN) ? EXECUTION_FAILURE : -1);\r
21 }\r
22 else if ((flags & FEVAL_REGFILE) && S_ISREG (finfo.st_mode) == 0)\r
23 {\r
24 (*errfunc) (_("%s: not a regular file"), filename);\r
25+ close(fd);\r
26 return ((flags & FEVAL_BUILTIN) ? EXECUTION_FAILURE : -1);\r
27 }\r
28 \r
29@@ -146,6 +148,7 @@ file_error_and_exit:\r
30 if (file_size != finfo.st_size || file_size + 1 < file_size)\r
31 {\r
32 (*errfunc) (_("%s: file is too large"), filename);\r
33+ close(fd);\r
34 return ((flags & FEVAL_BUILTIN) ? EXECUTION_FAILURE : -1);\r
35 } \r
36 \r
37-- \r
381.7.11.7\r
39\r
This page took 0.09734 seconds and 4 git commands to generate.