summaryrefslogtreecommitdiff
path: root/source3/libsmb/clispnego.c
diff options
context:
space:
mode:
authorGerald Carter <jerry@samba.org>2007-09-28 03:54:42 +0000
committerGerald (Jerry) Carter <jerry@samba.org>2007-10-10 12:31:02 -0500
commit3529156971e17c7ec13f6a6243f7b613e4666cdd (patch)
tree0f6479de4c560c92a75826d955020659a36ef060 /source3/libsmb/clispnego.c
parent470ebf8a3504474dea5c324d01282e59c034a236 (diff)
downloadsamba-3529156971e17c7ec13f6a6243f7b613e4666cdd.tar.gz
samba-3529156971e17c7ec13f6a6243f7b613e4666cdd.tar.bz2
samba-3529156971e17c7ec13f6a6243f7b613e4666cdd.zip
r25400: Windows 2008 (Longhorn) Interop fixes for AD specific auth2 flags,
and client fixes. Patch from Todd Stetcher <todd.stetcher@isilon.com>. (This used to be commit 8304ccba7346597425307e260e88647e49081f68)
Diffstat (limited to 'source3/libsmb/clispnego.c')
-rw-r--r--source3/libsmb/clispnego.c19
1 files changed, 19 insertions, 0 deletions
diff --git a/source3/libsmb/clispnego.c b/source3/libsmb/clispnego.c
index 9432ce81d3..c45883d890 100644
--- a/source3/libsmb/clispnego.c
+++ b/source3/libsmb/clispnego.c
@@ -52,7 +52,18 @@ DATA_BLOB spnego_gen_negTokenInit(char guid[16],
asn1_push_tag(&data, ASN1_CONTEXT(3));
asn1_push_tag(&data, ASN1_SEQUENCE(0));
asn1_push_tag(&data, ASN1_CONTEXT(0));
+
+ /*
+ * @todo
+ * Windows 2008 sends a bogus principal, since this
+ * is not truly supported in the SPNEGO protocol.
+ *
+ * We should do the same, but I'm worried this will break things,
+ * such as DFS.
+ * todd.stecher@isilon.com
+ */
asn1_write_GeneralString(&data,principal);
+
asn1_pop_tag(&data);
asn1_pop_tag(&data);
asn1_pop_tag(&data);
@@ -154,6 +165,14 @@ BOOL spnego_parse_negTokenInit(DATA_BLOB blob,
asn1_start_tag(&data, ASN1_SEQUENCE(0));
asn1_start_tag(&data, ASN1_CONTEXT(0));
asn1_read_GeneralString(&data,principal);
+ /*
+ * Windows 2008 sends a bogus principal, since this
+ * is not truly supported in the SPNEGO protocol.
+ * todd.stecher@isilon.com
+ */
+ if (strcmp(ADS_IGNORE_PRINCIPAL, *principal) == 0)
+ SAFE_FREE(*principal);
+
asn1_end_tag(&data);
asn1_end_tag(&data);
asn1_end_tag(&data);