s3:smbd: avoid string_set() in dir.c
authorStefan Metzmacher <metze@samba.org>
Thu, 10 Nov 2011 09:39:34 +0000 (10:39 +0100)
committerKarolin Seeger <kseeger@samba.org>
Mon, 14 Nov 2011 19:09:54 +0000 (20:09 +0100)
And do some more error checks.

metze
(cherry picked from commit 7644547a5523b77bd49d9a5d979d5e4939153401)

source3/smbd/dir.c

index 9969693e7b861e063c2e5c160d797d1bdb141d50..e6f431eb33ed8da4f2a57906e4d439f6ea487f2a 100644 (file)
@@ -279,7 +279,7 @@ done:
 
        /* Lanman 2 specific code */
        SAFE_FREE(dptr->wcard);
-       string_set(&dptr->path,"");
+       SAFE_FREE(dptr->path);
        SAFE_FREE(dptr);
 }
 
@@ -534,7 +534,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;
@@ -542,6 +548,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;