On Nov 15 22:14, Takashi Yano wrote:
> The commit ae181b0ff122 has a bug that the pointer is referred bofore
> NULL check in the function lf_clearlock(). This patch fixes that.
> 
> Addresses: https://cygwin.com/pipermail/cygwin/2024-November/256750.html
> Fixes: ae181b0ff122 ("Cygwin: lockf: Make lockf() return ENOLCK when too many 
> locks")
> Reported-by: Sebastian Feld <sebastian.n.f...@gmail.com>
> Reviewed-by:
> Signed-off-by: Takashi Yano <takashi.y...@nifty.ne.jp>
> ---
>  winsup/cygwin/flock.cc | 6 ++++--
>  1 file changed, 4 insertions(+), 2 deletions(-)
> 
> diff --git a/winsup/cygwin/flock.cc b/winsup/cygwin/flock.cc
> index 3821bddd6..794e66bd7 100644
> --- a/winsup/cygwin/flock.cc
> +++ b/winsup/cygwin/flock.cc
> @@ -1524,6 +1524,10 @@ lf_clearlock (lockf_t *unlock, lockf_t **clean, HANDLE 
> fhdl)
>    lockf_t *lf = *head;
>    lockf_t *overlap, **prev;
>    int ovcase;
> +
> +  if (lf == NOLOCKF)
> +    return 0;
> +
>    inode_t *node = lf->lf_inode;
>    tmp_pathbuf tp;
>    node->i_all_lf = (lockf_t *) tp.w_get ();
> @@ -1531,8 +1535,6 @@ lf_clearlock (lockf_t *unlock, lockf_t **clean, HANDLE 
> fhdl)
>    uint32_t lock_cnt = node->get_lock_count ();
>    bool first_loop = true;
>  
> -  if (lf == NOLOCKF)
> -    return 0;
>    prev = head;
>    while ((ovcase = lf_findoverlap (lf, unlock, SELF, &prev, &overlap)))
>      {
> -- 
> 2.45.1

LGTM, please push.

Thanks,
Corinna

Reply via email to