[PATCH 1/2] Cygwin: lockf: Fix access violation in lf_clearlock().
Corinna Vinschen
corinna-cygwin@cygwin.com
Mon Nov 18 15:55:14 GMT 2024
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.feld@gmail.com>
> Reviewed-by:
> Signed-off-by: Takashi Yano <takashi.yano@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
More information about the Cygwin-patches
mailing list