The branch, master has been updated
       via  342b436691a99fc6c4fb6606e7148e5c7ddd56c1 (commit)
       via  048013ddaa8b5c65ae6db0d8dbfd1e7082f75fc5 (commit)
      from  93c2057c8b5a3976cda65a9d27dc4dbb9c5c550a (commit)

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


- Log -----------------------------------------------------------------
commit 342b436691a99fc6c4fb6606e7148e5c7ddd56c1
Author: Günther Deschner <[email protected]>
Date:   Wed Mar 18 03:00:37 2009 +0100

    s4-smbtorture: fix spoolss_EnumPrinterKey callers in RPC-SPOOLSS-WIN test.
    
    Kai, please check.
    
    Guenther

commit 048013ddaa8b5c65ae6db0d8dbfd1e7082f75fc5
Author: Günther Deschner <[email protected]>
Date:   Wed Mar 18 03:11:37 2009 +0100

    spoolss: fix ndr_push_spoolss_EnumPrinterDataEx.
    
    Guenther

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

Summary of changes:
 librpc/ndr/ndr_spoolss_buf.c      |    1 +
 source4/torture/rpc/spoolss_win.c |   35 ++++++++++++-----------------------
 2 files changed, 13 insertions(+), 23 deletions(-)


Changeset truncated at 500 lines:

diff --git a/librpc/ndr/ndr_spoolss_buf.c b/librpc/ndr/ndr_spoolss_buf.c
index 16a9b1b..97624d3 100644
--- a/librpc/ndr/ndr_spoolss_buf.c
+++ b/librpc/ndr/ndr_spoolss_buf.c
@@ -458,6 +458,7 @@ enum ndr_err_code ndr_push_spoolss_EnumPrinterDataEx(struct 
ndr_push *ndr, int f
                _r.out.count    = r->out.count;
                _r.out.needed   = r->out.needed;
                _r.out.result   = r->out.result;
+               _r.out.info     = data_blob(NULL, 0);
                if (r->in.offered >= *r->out.needed) {
                        struct __spoolss_EnumPrinterDataEx __r;
                        _ndr_info = ndr_push_init_ctx(ndr, 
ndr->iconv_convenience);
diff --git a/source4/torture/rpc/spoolss_win.c 
b/source4/torture/rpc/spoolss_win.c
index 5624e68..c50cbfb 100644
--- a/source4/torture/rpc/spoolss_win.c
+++ b/source4/torture/rpc/spoolss_win.c
@@ -33,7 +33,7 @@ struct test_spoolss_win_context {
        union spoolss_PrinterInfo *current_info;
 
        /* EnumPrinterKeys */
-       char *printer_keys;
+       const char **printer_keys;
 };
 
 /* This is a convenience function for all OpenPrinterEx calls */
@@ -389,9 +389,7 @@ static bool test_EnumPrinterKey(struct torture_context 
*tctx,
 
        torture_assert_werr_ok(tctx, epk.out.result, "EnumPrinterKey failed");
 
-       convert_string_talloc_convenience(ctx, 
lp_iconv_convenience(tctx->lp_ctx), CH_UTF16,
-                       CH_UNIX, epk.out.key_buffer, *epk.out.needed,
-                       (void**)&ctx->printer_keys, NULL, false);
+       ctx->printer_keys = key_buffer;
 
        return true;
 }
@@ -458,7 +456,7 @@ static bool test_WinXP(struct torture_context *tctx, struct 
dcerpc_pipe *p)
         * code, the unused_handle structures are used for that. */
        struct policy_handle unused_handle1, unused_handle2;
        char *server_name;
-       char *key_pointer;
+       uint32_t i;
 
        ntvfs_init(tctx->lp_ctx);
 
@@ -533,24 +531,15 @@ static bool test_WinXP(struct torture_context *tctx, 
struct dcerpc_pipe *p)
        ret &= test_EnumForms(tctx, p, &handle03, 0);
 
        ret &= test_EnumPrinterKey(tctx, p, &handle03, "", ctx);
-       key_pointer = ctx->printer_keys;
-       while(*key_pointer != '\0') {
-               char *end_pointer;
-               char *key_name;
-
-               for(end_pointer = key_pointer; *end_pointer != '\0';
-                               ++end_pointer) {
-                       /* Do nothing, just move the pointer */
-               }
-               key_name = talloc_strndup(tctx, key_pointer,
-                               end_pointer - key_pointer);
-
-               ret &= test_EnumPrinterKey(tctx, p, &handle03, key_name,
-                               tmp_ctx);
-               ret &= test_EnumPrinterDataEx(tctx, p, &handle03, key_name, 0,
-                               WERR_OK);
-
-               key_pointer = ++end_pointer;
+
+       for (i=0; ctx->printer_keys[i] != NULL; i++) {
+
+               ret &= test_EnumPrinterKey(tctx, p, &handle03,
+                                          ctx->printer_keys[i],
+                                          tmp_ctx);
+               ret &= test_EnumPrinterDataEx(tctx, p, &handle03,
+                                             ctx->printer_keys[i], 0,
+                                             WERR_OK);
        }
 
        ret &= test_EnumPrinterDataEx(tctx, p, &handle03, "", 0,


-- 
Samba Shared Repository

Reply via email to