The branch, master has been updated
       via  7e80793 check_parent_exists() can change errno. Ensure we preserve 
it across calls.
       via  c672ef1 winbind4: Fix bug 9832 -- talloc use after free
      from  08d7cae regedit: Use color only when available.

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master


- Log -----------------------------------------------------------------
commit 7e807934e6550308efed814a20ce6d6dabbad557
Author: Anand Avati <[email protected]>
Date:   Mon Apr 29 15:21:00 2013 -0700

    check_parent_exists() can change errno. Ensure we preserve it across calls.
    
    Reviewed-by: Jeremy Allison <[email protected]>
    Reviewed-by: Volker Lendecke <[email protected]>
    
    Autobuild-User(master): Volker Lendecke <[email protected]>
    Autobuild-Date(master): Tue Apr 30 11:00:11 CEST 2013 on sn-devel-104

commit c672ef11b1ed663b6366f321d3628acf05b3d0fe
Author: Volker Lendecke <[email protected]>
Date:   Mon Apr 29 18:40:08 2013 +0200

    winbind4: Fix bug 9832 -- talloc use after free
    
    Signed-off-by: Volker Lendecke <[email protected]>
    Reviewed-by: Stefan Metzmacher <[email protected]>

-----------------------------------------------------------------------

Summary of changes:
 source3/smbd/filename.c     |    9 ++++++++-
 source4/winbind/wb_server.c |    2 +-
 2 files changed, 9 insertions(+), 2 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source3/smbd/filename.c b/source3/smbd/filename.c
index efa39f4..03e1d2d 100644
--- a/source3/smbd/filename.c
+++ b/source3/smbd/filename.c
@@ -450,13 +450,17 @@ NTSTATUS unix_convert(TALLOC_CTX *ctx,
 
                if (errno == ENOENT) {
                        /* Optimization when creating a new file - only
-                          the last component doesn't exist. */
+                          the last component doesn't exist.
+                          NOTE : check_parent_exists() doesn't preserve errno.
+                       */
+                       int saved_errno = errno;
                        status = check_parent_exists(ctx,
                                                conn,
                                                posix_pathnames,
                                                smb_fname,
                                                &dirpath,
                                                &start);
+                       errno = saved_errno;
                        if (!NT_STATUS_IS_OK(status)) {
                                goto fail;
                        }
@@ -529,13 +533,16 @@ NTSTATUS unix_convert(TALLOC_CTX *ctx,
                 * Optimization for common case where the wildcard
                 * is in the last component and the client already
                 * sent the correct case.
+                * NOTE : check_parent_exists() doesn't preserve errno.
                 */
+               int saved_errno = errno;
                status = check_parent_exists(ctx,
                                        conn,
                                        posix_pathnames,
                                        smb_fname,
                                        &dirpath,
                                        &start);
+               errno = saved_errno;
                if (!NT_STATUS_IS_OK(status)) {
                        goto fail;
                }
diff --git a/source4/winbind/wb_server.c b/source4/winbind/wb_server.c
index f036749..335bdbc 100644
--- a/source4/winbind/wb_server.c
+++ b/source4/winbind/wb_server.c
@@ -75,7 +75,7 @@ static void wbsrv_call_loop(struct tevent_req *subreq)
        if (!NT_STATUS_IS_OK(status)) {
                const char *reason;
 
-               reason = talloc_asprintf(call, "wbsrv_call_loop: "
+               reason = talloc_asprintf(wbsrv_conn, "wbsrv_call_loop: "
                                         "tstream_read_pdu_blob_recv() - %s",
                                         nt_errstr(status));
                if (!reason) {


-- 
Samba Shared Repository

Reply via email to