summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--source3/smbd/dir.c6
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",