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

Reply via email to