diff options
-rw-r--r-- | source3/smbd/dir.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/source3/smbd/dir.c b/source3/smbd/dir.c index 642fb09362..7acd349b72 100644 --- a/source3/smbd/dir.c +++ b/source3/smbd/dir.c @@ -875,6 +875,7 @@ bool get_dir_entry(TALLOC_CTX *ctx, if ((strcmp(mask,"*.*") == 0) || mask_match_search(filename,mask,False) || mangle_mask_match(conn,filename,mask)) { + bool isdots = (ISDOT(dname) || ISDOTDOT(dname)); char mname[13]; struct smb_filename *smb_fname = NULL; NTSTATUS status; @@ -891,6 +892,11 @@ bool get_dir_entry(TALLOC_CTX *ctx, } } + if (check_descend && !isdots) { + TALLOC_FREE(filename); + continue; + } + if (needslash) { pathreal = talloc_asprintf(ctx, "%s/%s", |