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