mirror of
git://sourceware.org/git/newlib-cygwin.git
synced 2025-02-08 18:19:08 +08:00
Cygwin: lockf: Fix access violation in lf_clearlock().
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: Corinna Vinschen <corinna@vinschen.de> Signed-off-by: Takashi Yano <takashi.yano@nifty.ne.jp> (cherry picked from commit e7ef920d7d0dcff8cfe7a0c914f803b8c78900bb)
This commit is contained in:
parent
22474a6e5d
commit
c4102f82dd
@ -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)))
|
||||
{
|
||||
|
@ -36,3 +36,6 @@ Fixes:
|
||||
|
||||
- Fix potential stack corruption in rmdir() in a border case.
|
||||
Addresses: https://cygwin.com/pipermail/cygwin/2024-November/256774.html
|
||||
|
||||
- Fix access violation in lf_clearlock() called from flock().
|
||||
Addresses: https://cygwin.com/pipermail/cygwin/2024-November/256750.html
|
||||
|
Loading…
x
Reference in New Issue
Block a user