From da8b5a53bb615fb8020dd294ebdbaa6bb776fad6 Mon Sep 17 00:00:00 2001 From: Javier Date: Sat, 30 Apr 2022 17:00:18 +0200 Subject: another hack to avoid leaking dirfd on 'dir *.*' --- sftsr.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/sftsr.c b/sftsr.c index ffbf326..fb41431 100644 --- a/sftsr.c +++ b/sftsr.c @@ -1172,6 +1172,14 @@ static void handle_find_first(union INTPACK __far *r) dlog_puts("search volid OK"); clear_dos_err(r); return; + } else if (search_attr == 0) { + // Another hack to avoid leaking directory handles. + // While technically a mask of 0 should return all files, + // DOS's dir uses a mask of 0 when it just wants to check + // if the directory exists, and will never call FindNext. + // So we'll not bother opening the directory and hope nothing breaks. + set_dos_err(r, DOS_ERROR_NO_MORE_FILES); + return; } // First, open the desired directory for searching -- cgit v1.2.3