The branch, master has been updated
       via  44429f9 s3-printing: avoid KRB5CCNAME overwrite in printer 
publishing (Bug #7444).
      from  bb21fc5 Add torture tests to raw.eas to check sending Windows 
invalid names in the middle of an EA list.

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


- Log -----------------------------------------------------------------
commit 44429f948b72e7bcf968da492592c57864f211c7
Author: Günther Deschner <[email protected]>
Date:   Fri Jul 19 15:10:05 2013 +0200

    s3-printing: avoid KRB5CCNAME overwrite in printer publishing (Bug #7444).
    
    Guenther
    
    Signed-off-by: Günther Deschner <[email protected]>
    Reviewed-by: Andreas Schneider <[email protected]>
    
    Autobuild-User(master): Günther Deschner <[email protected]>
    Autobuild-Date(master): Fri Jul 19 17:53:08 CEST 2013 on sn-devel-104

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

Summary of changes:
 source3/printing/nt_printing_ads.c |   13 +++++++++++++
 1 files changed, 13 insertions(+), 0 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source3/printing/nt_printing_ads.c 
b/source3/printing/nt_printing_ads.c
index dcd31b7..5d5f564 100644
--- a/source3/printing/nt_printing_ads.c
+++ b/source3/printing/nt_printing_ads.c
@@ -417,6 +417,7 @@ WERROR nt_printer_publish(TALLOC_CTX *mem_ctx,
        ADS_STATUS ads_rc;
        ADS_STRUCT *ads = NULL;
        WERROR win_rc;
+       char *old_krb5ccname = NULL;
 
        sinfo2 = talloc_zero(mem_ctx, struct spoolss_SetPrinterInfo2);
        if (!sinfo2) {
@@ -454,6 +455,7 @@ WERROR nt_printer_publish(TALLOC_CTX *mem_ctx,
                win_rc = WERR_SERVER_UNAVAILABLE;
                goto done;
        }
+       old_krb5ccname = getenv(KRB5_ENV_CCNAME);
        setenv(KRB5_ENV_CCNAME, "MEMORY:prtpub_cache", 1);
        SAFE_FREE(ads->auth.password);
        ads->auth.password = secrets_fetch_machine_password(lp_workgroup(),
@@ -479,6 +481,11 @@ WERROR nt_printer_publish(TALLOC_CTX *mem_ctx,
 
 done:
        ads_destroy(&ads);
+       ads_kdestroy("MEMORY:prtpub_cache");
+       unsetenv(KRB5_ENV_CCNAME);
+       if (old_krb5ccname) {
+               setenv(KRB5_ENV_CCNAME, old_krb5ccname, 0);
+       }
        return win_rc;
 }
 
@@ -493,6 +500,7 @@ WERROR check_published_printers(struct messaging_context 
*msg_ctx)
        struct spoolss_PrinterInfo2 *pinfo2;
        NTSTATUS status;
        WERROR result;
+       char *old_krb5ccname = NULL;
 
        tmp_ctx = talloc_new(NULL);
        if (!tmp_ctx) return WERR_NOMEM;
@@ -502,6 +510,7 @@ WERROR check_published_printers(struct messaging_context 
*msg_ctx)
                DEBUG(3, ("ads_init() failed\n"));
                return WERR_SERVER_UNAVAILABLE;
        }
+       old_krb5ccname = getenv(KRB5_ENV_CCNAME);
        setenv(KRB5_ENV_CCNAME, "MEMORY:prtpub_cache", 1);
        SAFE_FREE(ads->auth.password);
        ads->auth.password = secrets_fetch_machine_password(lp_workgroup(),
@@ -546,6 +555,10 @@ WERROR check_published_printers(struct messaging_context 
*msg_ctx)
 done:
        ads_destroy(&ads);
        ads_kdestroy("MEMORY:prtpub_cache");
+       unsetenv(KRB5_ENV_CCNAME);
+       if (old_krb5ccname) {
+               setenv(KRB5_ENV_CCNAME, old_krb5ccname, 0);
+       }
        talloc_free(tmp_ctx);
        return result;
 }


-- 
Samba Shared Repository

Reply via email to