[PATCH 1/2] Cygwin: lockf: Fix access violation in lf_clearlock().
Takashi Yano
takashi.yano@nifty.ne.jp
Tue Nov 19 08:39:39 GMT 2024
On Mon, 18 Nov 2024 16:55:14 +0100
Corinna Vinschen wrote:
> 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 for reviewing this patch. Could you please review
[PATCH v2] Cygwin: flock: Fix overlap handling in lf_setlock() and lf_clearlock()
as well?
--
Takashi Yano <takashi.yano@nifty.ne.jp>
More information about the Cygwin-patches
mailing list