[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH 5/5] libtrivfs: fix an use-after-free error
From: |
Emilio Pozuelo Monfort |
Subject: |
Re: [PATCH 5/5] libtrivfs: fix an use-after-free error |
Date: |
Fri, 25 Oct 2013 15:15:22 +0200 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20131005 Icedove/17.0.9 |
Minor nitpick:
On 25/10/13 10:30, Justus Winter wrote:
> Found using the Clang Static Analyzer.
>
> * libtrivfs/protid-clean.c (trivfs_clean_protid): Fix use-after-free error.
> ---
> libtrivfs/protid-clean.c | 5 ++++-
> 1 file changed, 4 insertions(+), 1 deletion(-)
>
> diff --git a/libtrivfs/protid-clean.c b/libtrivfs/protid-clean.c
> index 856d7af..575dec3 100644
> --- a/libtrivfs/protid-clean.c
> +++ b/libtrivfs/protid-clean.c
> @@ -39,10 +39,13 @@ trivfs_clean_protid (void *arg)
> }
> if (--cred->po->refcnt == 0)
> {
> + struct trivfs_control *cntl = cred->po->cntl;
> ports_port_deref (cred->po->cntl);
> free (cred->po);
> + pthread_mutex_unlock (&cntl->lock);
> }
> - pthread_mutex_unlock (&cred->po->cntl->lock);
> + else
> + pthread_mutex_unlock (&cred->po->cntl->lock);
I think it'd be clearer to unconditionally declare cntl before the if block and
call pthread_mutex_unlock on &cntl->lock after the if block instead of inside
the if and again inside the else.
Cheers,
Emilio
[PATCH 2/5] exec: Remove the remaining BFD related bits, Justus Winter, 2013/10/25
Re: [PATCH 1/5] Makeconf: add -fno-strict-aliasing to CFLAGS, Thomas Schwinge, 2013/10/25