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