summaryrefslogtreecommitdiff
path: root/source3/smbd/dir.c
diff options
context:
space:
mode:
Diffstat (limited to 'source3/smbd/dir.c')
-rw-r--r--source3/smbd/dir.c22
1 files changed, 8 insertions, 14 deletions
diff --git a/source3/smbd/dir.c b/source3/smbd/dir.c
index 1d497574a6..fa9cbdc4a2 100644
--- a/source3/smbd/dir.c
+++ b/source3/smbd/dir.c
@@ -727,21 +727,15 @@ void *OpenDir(connection_struct *conn, char *name, BOOL use_veto)
if (use_veto && conn && IS_VETO_PATH(conn, n)) continue;
/* Honour _hide unreadable_ option */
- if (conn && lp_hideunreadable(SNUM(conn)))
- {
- char *entry;
- int ret;
+ if (conn && lp_hideunreadable(SNUM(conn))) {
+ char *entry;
+ int ret=0;
- entry = (char *)malloc(PATH_MAX);
- if (!entry) {
- DEBUG(0,("Out of memory in OpenDir\n"));
- conn->vfs_ops.closedir(conn,p);
- return(NULL);
- }
- slprintf(entry, PATH_MAX, "%s/%s/%s", conn->origpath, name, n);
- ret = user_can_read_file(conn, entry);
- free(entry);
- if (!ret) continue;
+ if (asprintf(&entry, "%s/%s/%s", conn->origpath, name, n) > 0) {
+ ret = user_can_read_file(conn, entry);
+ free(entry);
+ }
+ if (!ret) continue;
}
if (used + l > dirp->mallocsize) {