error_code GSSEAP_BAD_CONTEXT_TOKEN, "Context token is malformed or corrupt"
error_code GSSEAP_MISSING_IOV, "IOV is missing required buffer"
error_code GSSEAP_BAD_STREAM_IOV, "Stream IOV can only contain a single data buffer"
+error_code GSSEAP_BAD_PRF_KEY, "PRF key usage type is unknown"
end
if (prf_key != GSS_C_PRF_KEY_PARTIAL &&
prf_key != GSS_C_PRF_KEY_FULL) {
- code = EINVAL;
+ code = GSSEAP_BAD_PRF_KEY;
goto cleanup;
}
OM_uint32 flags;
unsigned char *p;
- if (buffer == GSS_C_NO_BUFFER || buffer->length < 4) {
+ if (buffer == GSS_C_NO_BUFFER) {
*minor = EINVAL;
return GSS_S_FAILURE;
}
+ if (buffer->length < 4) {
+ *minor = GSSEAP_WRONG_SIZE;
+ return GSS_S_FAILURE;
+ }
+
p = (unsigned char *)buffer->value;
flags = load_uint32_be(buffer->value) & CRED_FLAG_PUBLIC_MASK;
}
/* XXX this is probably NOT what we want to be doing */
- *minor = krb5_sname_to_principal(krbContext, host, service,
- KRB5_NT_SRV_HST, &krbPrinc);
- if (*minor != 0) {
+ if (krb5_sname_to_principal(krbContext, host, service,
+ KRB5_NT_SRV_HST, &krbPrinc) != 0) {
GSSEAP_FREE(service);
+ *minor = GSSEAP_BAD_SERVICE_NAME;
return GSS_S_FAILURE;
}
suffix = osuffix;
if (oid->length < prefix_len + nbytes) {
- *minor = ERANGE;
+ *minor = GSSEAP_WRONG_SIZE;
return GSS_S_FAILURE;
}
size_t *lenremain)
{
if (*lenremain < sizeof(queue)) {
- *minor = ERANGE;
+ *minor = GSSEAP_WRONG_SIZE;
return GSS_S_FAILURE;
}
memcpy(*buf, vqueue, sizeof(queue));
void *q;
if (*lenremain < sizeof(queue)) {
- *minor = ERANGE;
+ *minor = GSSEAP_WRONG_SIZE;
return GSS_S_DEFECTIVE_TOKEN;
}