GNU Binutils with patches for OS216
修订版 | 6fa0bc1c30c6f099771d91c574cccbce5535ae75 (tree) |
---|---|
时间 | 2019-09-24 22:06:32 |
作者 | Nick Alcock <nick.alcock@orac...> |
Commiter | Nick Alcock |
libctf: fix refcount leak in ctf_import
Calling ctf_import (fp, NULL) to cancel out a pre-existing import leaked
the refcnt increment on the parent, so it could never be freed.
New in v4.
libctf/
* ctf-open.c (ctf_import): Do not leak a ctf_file_t ref on every
ctf_import after the first for a given file.
@@ -1,5 +1,10 @@ | ||
1 | 1 | 2019-09-23 Nick Alcock <nick.alcock@oracle.com> |
2 | 2 | |
3 | + * ctf-open.c (ctf_import): Do not leak a ctf_file_t ref on every | |
4 | + ctf_import after the first for a given file. | |
5 | + | |
6 | +2019-09-23 Nick Alcock <nick.alcock@oracle.com> | |
7 | + | |
3 | 8 | * ctf-impl.h (ctf_str_append_noerr): Declare. |
4 | 9 | * ctf-util.c (ctf_str_append_noerr): Define in terms of |
5 | 10 | ctf_str_append. |
@@ -1778,6 +1778,7 @@ ctf_import (ctf_file_t *fp, ctf_file_t *pfp) | ||
1778 | 1778 | |
1779 | 1779 | if (fp->ctf_parent != NULL) |
1780 | 1780 | { |
1781 | + fp->ctf_parent->ctf_refcnt--; | |
1781 | 1782 | ctf_file_close (fp->ctf_parent); |
1782 | 1783 | fp->ctf_parent = NULL; |
1783 | 1784 | } |
@@ -1793,6 +1794,7 @@ ctf_import (ctf_file_t *fp, ctf_file_t *pfp) | ||
1793 | 1794 | fp->ctf_flags |= LCTF_CHILD; |
1794 | 1795 | pfp->ctf_refcnt++; |
1795 | 1796 | } |
1797 | + | |
1796 | 1798 | fp->ctf_parent = pfp; |
1797 | 1799 | return 0; |
1798 | 1800 | } |