/*
- * Copyright (c) 2010, JANET(UK)
+ * Copyright (c) 2011, JANET(UK)
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
*
*/
+/*
+ * OID utility routines.
+ */
+
#include "gssapiP_eap.h"
OM_uint32
{
gss_OID p;
- *minor = 0;
*newOid = GSS_C_NO_OID;
p = (gss_OID)GSSEAP_MALLOC(sizeof(*p));
return GSS_S_FAILURE;
}
p->length = oid->length;
- p->elements = GSSEAP_MALLCO(p->length);
+ p->elements = GSSEAP_MALLOC(p->length);
if (p->elements == NULL) {
GSSEAP_FREE(p);
+ *minor = ENOMEM;
return GSS_S_FAILURE;
}
memcpy(p->elements, oid->elements, p->length);
*newOid = p;
+ *minor = 0;
return GSS_S_COMPLETE;
}
if (oid == GSS_C_NO_OID) {
*minor = EINVAL;
- return GSS_S_FAILURE;
+ return GSS_S_CALL_INACCESSIBLE_READ | GSS_S_FAILURE;
}
+
if (oid->length < prefix_len) {
- *minor = ERANGE;
+ *minor = GSSEAP_WRONG_SIZE;
return GSS_S_FAILURE;
}
suffix = osuffix;
if (oid->length < prefix_len + nbytes) {
- *minor = ERANGE;
+ *minor = GSSEAP_WRONG_SIZE;
return GSS_S_FAILURE;
}
for (i = 0; i < slen; i++) {
*suffix = (*suffix << 7) | (op[i] & 0x7f);
if (i + 1 != slen && (op[i] & 0x80) == 0) {
- *minor = EINVAL;
+ *minor = GSSEAP_WRONG_SIZE;
return GSS_S_FAILURE;
}
}
return GSS_S_COMPLETE;
}
-#if 0
-OM_uint32
-gssEapReleaseOid(OM_uint32 *minor, gss_OID *oid)
-{
- OM_uint32 major;
-
- major = gss_internal_release_oid(minor, oid);
- if (major == GSS_S_CONTINUE_NEEDED) {
- GSSEAP_FREE(oid->elements);
- GSSEAP_FREE(oid);
- *oid = GSS_C_NO_OID;
- major = GSS_S_COMPLETE;
- }
-
- return major;
-}
-#endif
-
OM_uint32
duplicateOidSet(OM_uint32 *minor,
const gss_OID_set src,