s3:smbd: avoid string_set() in dir.c
authorStefan Metzmacher <metze@samba.org>
Thu, 10 Nov 2011 09:39:34 +0000 (10:39 +0100)
committerStefan Metzmacher <metze@samba.org>
Thu, 10 Nov 2011 11:30:52 +0000 (12:30 +0100)
And do some more error checks.

metze

source3/smbd/dir.c

index 322c2fe5195f4fef761fe2be8844751dbb64f1f4..1d04e2bc5bf9689614db38d797fc04a03c7b300e 100644 (file)
@@ -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;