[SCM] Samba Shared Repository - branch master updated

Günther Deschner gd at samba.org
Fri Feb 1 13:20:02 MST 2013


The branch, master has been updated
       via  4990080 krb5pac: make sure to correctly store the highest relative pointer offset.
       via  87157f0 s3-net: mention optional impersonation principal for PAC retrieval.
       via  3c31fe7 s4-torture: make sure to deal with the highest relative pointer offset correctly.
       via  732e8ab ndrdump: make sure to deal with the highest relative pointer offset correctly.
      from  009cf6e s3:auth: wbcAuthenticateEx gives unix times (bug #9625)

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


- Log -----------------------------------------------------------------
commit 499008021051e5b01e4c1c151403b18a9dcbcf24
Author: Günther Deschner <gd at samba.org>
Date:   Fri Feb 1 17:41:00 2013 +0100

    krb5pac: make sure to correctly store the highest relative pointer offset.
    
    Guenther
    
    Signed-off-by: Günther Deschner <gd at samba.org>
    Reviewed-by: Stefan Metzmacher <metze at samba.org>
    
    Autobuild-User(master): Günther Deschner <gd at samba.org>
    Autobuild-Date(master): Fri Feb  1 21:19:28 CET 2013 on sn-devel-104

commit 87157f04d1ffcee9f12a9529869a3338af82d99a
Author: Günther Deschner <gd at samba.org>
Date:   Thu Dec 13 12:31:54 2012 +0100

    s3-net: mention optional impersonation principal for PAC retrieval.
    
    Guenther
    
    Signed-off-by: Günther Deschner <gd at samba.org>
    Reviewed-by: Stefan Metzmacher <metze at samba.org>

commit 3c31fe7600145662f8bdba98c8f13cbaac58685e
Author: Günther Deschner <gd at samba.org>
Date:   Fri Feb 1 17:45:02 2013 +0100

    s4-torture: make sure to deal with the highest relative pointer offset correctly.
    
    Guenther
    
    Signed-off-by: Günther Deschner <gd at samba.org>
    Reviewed-by: Stefan Metzmacher <metze at samba.org>

commit 732e8ab64d3c082dd142e4cbf07ebaec54549216
Author: Günther Deschner <gd at samba.org>
Date:   Fri Feb 1 17:44:16 2013 +0100

    ndrdump: make sure to deal with the highest relative pointer offset correctly.
    
    Guenther
    
    Signed-off-by: Günther Deschner <gd at samba.org>
    Reviewed-by: Stefan Metzmacher <metze at samba.org>

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

Summary of changes:
 librpc/ndr/ndr_krb5pac.c  |    3 +++
 librpc/tools/ndrdump.c    |   25 +++++++++++++++++++------
 source3/utils/net_ads.c   |    2 +-
 source4/torture/ndr/ndr.c |   32 ++++++++++++++++++++++++++------
 4 files changed, 49 insertions(+), 13 deletions(-)


Changeset truncated at 500 lines:

diff --git a/librpc/ndr/ndr_krb5pac.c b/librpc/ndr/ndr_krb5pac.c
index 237c0b6..f7db791 100644
--- a/librpc/ndr/ndr_krb5pac.c
+++ b/librpc/ndr/ndr_krb5pac.c
@@ -115,6 +115,9 @@ enum ndr_err_code ndr_pull_PAC_BUFFER(struct ndr_pull *ndr, int ndr_flags, struc
 					NDR_CHECK(ndr_pull_subcontext_end(ndr, _ndr_info, 0, r->_ndr_size));
 				}
 				NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info_0, 0);
+				if (ndr->offset > ndr->relative_highest_offset) {
+					ndr->relative_highest_offset = ndr->offset;
+				}
 				ndr->offset = _relative_save_offset;
 			}
 			ndr->flags = _flags_save_PAC_INFO;
diff --git a/librpc/tools/ndrdump.c b/librpc/tools/ndrdump.c
index 91bf06f..4a102f5 100644
--- a/librpc/tools/ndrdump.c
+++ b/librpc/tools/ndrdump.c
@@ -214,6 +214,7 @@ static NTSTATUS ndrdump_pull_and_print_pipes(const char *function,
 	};
 	const struct ndr_interface_call_pipes *in_pipes = NULL;
 	const struct ndr_interface_call_pipes *out_pipes = NULL;
+	uint32_t highest_ofs;
 
 	ndr_table_init();
 
@@ -341,8 +342,14 @@ static NTSTATUS ndrdump_pull_and_print_pipes(const char *function,
 
 		ndr_err = f->ndr_pull(ndr_pull, NDR_IN, st);
 
-		if (ndr_pull->offset != ndr_pull->data_size) {
-			printf("WARNING! %d unread bytes while parsing context file\n", ndr_pull->data_size - ndr_pull->offset);
+		if (ndr_pull->offset > ndr_pull->relative_highest_offset) {
+			highest_ofs = ndr_pull->offset;
+		} else {
+			highest_ofs = ndr_pull->relative_highest_offset;
+		}
+
+		if (highest_ofs != ndr_pull->data_size) {
+			printf("WARNING! %d unread bytes while parsing context file\n", ndr_pull->data_size - highest_ofs);
 		}
 
 		if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
@@ -392,10 +399,16 @@ static NTSTATUS ndrdump_pull_and_print_pipes(const char *function,
 
 	printf("pull returned %s\n", nt_errstr(status));
 
-	if (ndr_pull->offset != ndr_pull->data_size) {
-		printf("WARNING! %d unread bytes\n", ndr_pull->data_size - ndr_pull->offset);
-		ndrdump_data(ndr_pull->data+ndr_pull->offset,
-			     ndr_pull->data_size - ndr_pull->offset,
+	if (ndr_pull->offset > ndr_pull->relative_highest_offset) {
+		highest_ofs = ndr_pull->offset;
+	} else {
+		highest_ofs = ndr_pull->relative_highest_offset;
+	}
+
+	if (highest_ofs != ndr_pull->data_size) {
+		printf("WARNING! %d unread bytes\n", ndr_pull->data_size - highest_ofs);
+		ndrdump_data(ndr_pull->data+highest_ofs,
+			     ndr_pull->data_size - highest_ofs,
 			     dumpdata);
 	}
 
diff --git a/source3/utils/net_ads.c b/source3/utils/net_ads.c
index 80368ee..013884d 100644
--- a/source3/utils/net_ads.c
+++ b/source3/utils/net_ads.c
@@ -2596,7 +2596,7 @@ static int net_ads_kerberos_pac(struct net_context *c, int argc, const char **ar
 
 	if (c->display_usage) {
 		d_printf(  "%s\n"
-			   "net ads kerberos pac\n"
+			   "net ads kerberos pac [impersonation_principal]\n"
 			   "    %s\n",
 			 _("Usage:"),
 			 _("Dump the Kerberos PAC"));
diff --git a/source4/torture/ndr/ndr.c b/source4/torture/ndr/ndr.c
index 30cd46a..9e63ff7 100644
--- a/source4/torture/ndr/ndr.c
+++ b/source4/torture/ndr/ndr.c
@@ -43,6 +43,7 @@ static bool wrap_ndr_pullpush_test(struct torture_context *tctx,
 	struct ndr_pull *ndr = ndr_pull_init_blob(&(data->data), tctx);
 	void *ds = talloc_zero_size(ndr, data->struct_size);
 	bool ret;
+	uint32_t highest_ofs;
 
 	ndr->flags |= data->flags;
 
@@ -51,9 +52,15 @@ static bool wrap_ndr_pullpush_test(struct torture_context *tctx,
 	torture_assert_ndr_success(tctx, data->pull_fn(ndr, data->ndr_flags, ds),
 				   "pulling");
 
-	torture_assert(tctx, ndr->offset == ndr->data_size,
+	if (ndr->offset > ndr->relative_highest_offset) {
+		highest_ofs = ndr->offset;
+	} else {
+		highest_ofs = ndr->relative_highest_offset;
+	}
+
+	torture_assert(tctx, highest_ofs == ndr->data_size,
 				   talloc_asprintf(tctx,
-					   "%d unread bytes", ndr->data_size - ndr->offset));
+					   "%d unread bytes", ndr->data_size - highest_ofs));
 
 	if (check_fn != NULL) {
 		ret = check_fn(tctx, ds);
@@ -120,6 +127,7 @@ static bool wrap_ndr_inout_pull_test(struct torture_context *tctx,
 	const struct ndr_pull_test_data *data = (const struct ndr_pull_test_data *)test->data;
 	void *ds = talloc_zero_size(tctx, data->struct_size);
 	struct ndr_pull *ndr;
+	uint32_t highest_ofs;
 
 	/* handle NDR_IN context */
 
@@ -132,8 +140,14 @@ static bool wrap_ndr_inout_pull_test(struct torture_context *tctx,
 		data->pull_fn(ndr, NDR_IN, ds),
 		"ndr pull of context failed");
 
-	torture_assert(tctx, ndr->offset == ndr->data_size,
-		talloc_asprintf(tctx, "%d unread bytes", ndr->data_size - ndr->offset));
+	if (ndr->offset > ndr->relative_highest_offset) {
+		highest_ofs = ndr->offset;
+	} else {
+		highest_ofs = ndr->relative_highest_offset;
+	}
+
+	torture_assert(tctx, highest_ofs == ndr->data_size,
+		talloc_asprintf(tctx, "%d unread bytes", ndr->data_size - highest_ofs));
 
 	talloc_free(ndr);
 
@@ -148,8 +162,14 @@ static bool wrap_ndr_inout_pull_test(struct torture_context *tctx,
 		data->pull_fn(ndr, NDR_OUT, ds),
 		"ndr pull failed");
 
-	torture_assert(tctx, ndr->offset == ndr->data_size,
-		talloc_asprintf(tctx, "%d unread bytes", ndr->data_size - ndr->offset));
+	if (ndr->offset > ndr->relative_highest_offset) {
+		highest_ofs = ndr->offset;
+	} else {
+		highest_ofs = ndr->relative_highest_offset;
+	}
+
+	torture_assert(tctx, highest_ofs == ndr->data_size,
+		talloc_asprintf(tctx, "%d unread bytes", ndr->data_size - highest_ofs));
 
 	talloc_free(ndr);
 


-- 
Samba Shared Repository


More information about the samba-cvs mailing list