]> git.pld-linux.org Git - packages/bash.git/blob - bash-4.2-missing_closes.patch
Up to 5.2.26
[packages/bash.git] / bash-4.2-missing_closes.patch
1 There are missing calls of close() leading to resource leak (fd leak).\r
2 Simple reproducer:\r
3 . /\r
4 and /proc/$$/fd contain one open fd for each above call\r
5 \r
6 Signed-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
11 diff --git a/builtins/evalfile.c b/builtins/evalfile.c\r
12 index 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
38 1.7.11.7\r
39 \r
This page took 0.121165 seconds and 3 git commands to generate.