projects
/
mech_eap.orig
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
dc484b9
)
Allow composite names in GSS_C_NT_EXPORT_NAME
author
Luke Howard
<lukeh@padl.com>
Tue, 19 Apr 2011 16:58:38 +0000
(18:58 +0200)
committer
Luke Howard
<lukeh@padl.com>
Tue, 19 Apr 2011 16:58:38 +0000
(18:58 +0200)
util.h
patch
|
blob
|
history
util_name.c
patch
|
blob
|
history
diff --git
a/util.h
b/util.h
index
1a51d6f
..
b3399be
100644
(file)
--- a/
util.h
+++ b/
util.h
@@
-452,6
+452,7
@@
gssEapSaslNameToOid(const gss_buffer_t name);
/* util_name.c */
#define EXPORT_NAME_FLAG_OID 0x1
#define EXPORT_NAME_FLAG_COMPOSITE 0x2
/* util_name.c */
#define EXPORT_NAME_FLAG_OID 0x1
#define EXPORT_NAME_FLAG_COMPOSITE 0x2
+#define EXPORT_NAME_FLAG_ALLOW_COMPOSITE 0x4
OM_uint32 gssEapAllocName(OM_uint32 *minor, gss_name_t *pName);
OM_uint32 gssEapReleaseName(OM_uint32 *minor, gss_name_t *pName);
OM_uint32 gssEapAllocName(OM_uint32 *minor, gss_name_t *pName);
OM_uint32 gssEapReleaseName(OM_uint32 *minor, gss_name_t *pName);
diff --git
a/util_name.c
b/util_name.c
index
84478fd
..
fbd4b8a
100644
(file)
--- a/
util_name.c
+++ b/
util_name.c
@@
-339,7
+339,6
@@
gssEapImportNameInternal(OM_uint32 *minor,
unsigned char *p;
size_t len, remain;
gss_buffer_desc buf;
unsigned char *p;
size_t len, remain;
gss_buffer_desc buf;
- enum gss_eap_token_type tokType;
gss_name_t name = GSS_C_NO_NAME;
gss_OID mechanismUsed = GSS_C_NO_OID;
gss_name_t name = GSS_C_NO_NAME;
gss_OID mechanismUsed = GSS_C_NO_OID;
@@
-350,6
+349,8
@@
gssEapImportNameInternal(OM_uint32 *minor,
if (flags & EXPORT_NAME_FLAG_OID) {
gss_OID_desc mech;
if (flags & EXPORT_NAME_FLAG_OID) {
gss_OID_desc mech;
+ enum gss_eap_token_type tokType;
+ uint16_t wireTokType;
/* TOK_ID || MECH_OID_LEN || MECH_OID */
if (remain < 6) {
/* TOK_ID || MECH_OID_LEN || MECH_OID */
if (remain < 6) {
@@
-363,7
+364,15
@@
gssEapImportNameInternal(OM_uint32 *minor,
tokType = TOK_TYPE_EXPORT_NAME;
/* TOK_ID */
tokType = TOK_TYPE_EXPORT_NAME;
/* TOK_ID */
- if (load_uint16_be(p) != tokType) {
+ wireTokType = load_uint16_be(p);
+
+ if ((flags & EXPORT_NAME_FLAG_ALLOW_COMPOSITE) &&
+ wireTokType == TOK_TYPE_EXPORT_NAME_COMPOSITE) {
+ tokType = TOK_TYPE_EXPORT_NAME_COMPOSITE;
+ flags |= EXPORT_NAME_FLAG_COMPOSITE;
+ }
+
+ if (wireTokType != tokType) {
*minor = GSSEAP_WRONG_TOK_ID;
return GSS_S_BAD_NAME;
}
*minor = GSSEAP_WRONG_TOK_ID;
return GSS_S_BAD_NAME;
}
@@
-448,7
+457,8
@@
importExportName(OM_uint32 *minor,
gss_name_t *name)
{
return gssEapImportNameInternal(minor, nameBuffer, name,
gss_name_t *name)
{
return gssEapImportNameInternal(minor, nameBuffer, name,
- EXPORT_NAME_FLAG_OID);
+ EXPORT_NAME_FLAG_OID |
+ EXPORT_NAME_FLAG_ALLOW_COMPOSITE);
}
#ifdef HAVE_GSS_C_NT_COMPOSITE_EXPORT
}
#ifdef HAVE_GSS_C_NT_COMPOSITE_EXPORT