summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStefan Metzmacher <metze@samba.org>2011-11-10 10:39:34 +0100
committerStefan Metzmacher <metze@samba.org>2011-11-10 12:30:52 +0100
commit7644547a5523b77bd49d9a5d979d5e4939153401 (patch)
treefa1e0f459d65ab5fb2cf1330798b23a91df390d7
parent538748132fbf6bcc1ce0bbd474e4abf3ecdabffa (diff)
downloadsamba-7644547a5523b77bd49d9a5d979d5e4939153401.tar.gz
samba-7644547a5523b77bd49d9a5d979d5e4939153401.tar.bz2
samba-7644547a5523b77bd49d9a5d979d5e4939153401.zip
s3:smbd: avoid string_set() in dir.c
And do some more error checks. metze
-rw-r--r--source3/smbd/dir.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/source3/smbd/dir.c b/source3/smbd/dir.c
index 322c2fe519..1d04e2bc5b 100644
--- a/source3/smbd/dir.c
+++ b/source3/smbd/dir.c
@@ -280,7 +280,7 @@ done:
/* Lanman 2 specific code */
SAFE_FREE(dptr->wcard);
- string_set(&dptr->path,"");
+ SAFE_FREE(dptr->path);
SAFE_FREE(dptr);
}
@@ -563,7 +563,13 @@ NTSTATUS dptr_create(connection_struct *conn, files_struct *fsp,
dptr->dnum += 1; /* Always bias the dnum by one - no zero dnums allowed. */
- string_set(&dptr->path,path);
+ dptr->path = SMB_STRDUP(path);
+ if (!dptr->path) {
+ bitmap_clear(sconn->searches.dptr_bmap, dptr->dnum - 1);
+ SAFE_FREE(dptr);
+ TALLOC_FREE(dir_hnd);
+ return NT_STATUS_NO_MEMORY;
+ }
dptr->conn = conn;
dptr->dir_hnd = dir_hnd;
dptr->spid = spid;
@@ -571,6 +577,7 @@ NTSTATUS dptr_create(connection_struct *conn, files_struct *fsp,
dptr->wcard = SMB_STRDUP(wcard);
if (!dptr->wcard) {
bitmap_clear(sconn->searches.dptr_bmap, dptr->dnum - 1);
+ SAFE_FREE(dptr->path);
SAFE_FREE(dptr);
TALLOC_FREE(dir_hnd);
return NT_STATUS_NO_MEMORY;