use krb5_set_error_message
git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@23279 ec53bebd-3082-4978-b11e-865c3cabbd6b
This commit is contained in:
@@ -53,7 +53,7 @@ krb5_digest_alloc(krb5_context context, krb5_digest *digest)
|
||||
d = calloc(1, sizeof(*d));
|
||||
if (d == NULL) {
|
||||
*digest = NULL;
|
||||
krb5_set_error_string(context, "out of memory");
|
||||
krb5_set_error_message(context, ENOMEM, "malloc: out of memory");
|
||||
return ENOMEM;
|
||||
}
|
||||
*digest = d;
|
||||
@@ -82,7 +82,8 @@ krb5_digest_set_server_cb(krb5_context context,
|
||||
const char *binding)
|
||||
{
|
||||
if (digest->init.channel) {
|
||||
krb5_set_error_string(context, "server channel binding already set");
|
||||
krb5_set_error_message(context, EINVAL,
|
||||
"server channel binding already set");
|
||||
return EINVAL;
|
||||
}
|
||||
digest->init.channel = calloc(1, sizeof(*digest->init.channel));
|
||||
@@ -97,14 +98,14 @@ krb5_digest_set_server_cb(krb5_context context,
|
||||
if (digest->init.channel->cb_binding == NULL)
|
||||
goto error;
|
||||
return 0;
|
||||
error:
|
||||
error:
|
||||
if (digest->init.channel) {
|
||||
free(digest->init.channel->cb_type);
|
||||
free(digest->init.channel->cb_binding);
|
||||
free(digest->init.channel);
|
||||
digest->init.channel = NULL;
|
||||
}
|
||||
krb5_set_error_string(context, "out of memory");
|
||||
krb5_set_error_message(context, ENOMEM, "out of memory");
|
||||
return ENOMEM;
|
||||
}
|
||||
|
||||
@@ -114,12 +115,12 @@ krb5_digest_set_type(krb5_context context,
|
||||
const char *type)
|
||||
{
|
||||
if (digest->init.type) {
|
||||
krb5_set_error_string(context, "client type already set");
|
||||
krb5_set_error_message(context, EINVAL, "client type already set");
|
||||
return EINVAL;
|
||||
}
|
||||
digest->init.type = strdup(type);
|
||||
if (digest->init.type == NULL) {
|
||||
krb5_set_error_string(context, "out of memory");
|
||||
krb5_set_error_message(context, ENOMEM, "out of memory");
|
||||
return ENOMEM;
|
||||
}
|
||||
return 0;
|
||||
@@ -131,17 +132,17 @@ krb5_digest_set_hostname(krb5_context context,
|
||||
const char *hostname)
|
||||
{
|
||||
if (digest->init.hostname) {
|
||||
krb5_set_error_string(context, "server hostname already set");
|
||||
krb5_set_error_message(context, EINVAL, "server hostname already set");
|
||||
return EINVAL;
|
||||
}
|
||||
digest->init.hostname = malloc(sizeof(*digest->init.hostname));
|
||||
if (digest->init.hostname == NULL) {
|
||||
krb5_set_error_string(context, "out of memory");
|
||||
krb5_set_error_message(context, ENOMEM, "out of memory");
|
||||
return ENOMEM;
|
||||
}
|
||||
*digest->init.hostname = strdup(hostname);
|
||||
if (*digest->init.hostname == NULL) {
|
||||
krb5_set_error_string(context, "out of memory");
|
||||
krb5_set_error_message(context, ENOMEM, "out of memory");
|
||||
free(digest->init.hostname);
|
||||
digest->init.hostname = NULL;
|
||||
return ENOMEM;
|
||||
@@ -162,12 +163,12 @@ krb5_digest_set_server_nonce(krb5_context context,
|
||||
const char *nonce)
|
||||
{
|
||||
if (digest->request.serverNonce) {
|
||||
krb5_set_error_string(context, "nonce already set");
|
||||
krb5_set_error_message(context, EINVAL, "nonce already set");
|
||||
return EINVAL;
|
||||
}
|
||||
digest->request.serverNonce = strdup(nonce);
|
||||
if (digest->request.serverNonce == NULL) {
|
||||
krb5_set_error_string(context, "out of memory");
|
||||
krb5_set_error_message(context, ENOMEM, "out of memory");
|
||||
return ENOMEM;
|
||||
}
|
||||
return 0;
|
||||
@@ -186,12 +187,12 @@ krb5_digest_set_opaque(krb5_context context,
|
||||
const char *opaque)
|
||||
{
|
||||
if (digest->request.opaque) {
|
||||
krb5_set_error_string(context, "opaque already set");
|
||||
krb5_set_error_message(context, EINVAL, "opaque already set");
|
||||
return EINVAL;
|
||||
}
|
||||
digest->request.opaque = strdup(opaque);
|
||||
if (digest->request.opaque == NULL) {
|
||||
krb5_set_error_string(context, "out of memory");
|
||||
krb5_set_error_message(context, ENOMEM, "out of memory");
|
||||
return ENOMEM;
|
||||
}
|
||||
return 0;
|
||||
@@ -212,17 +213,17 @@ krb5_digest_set_identifier(krb5_context context,
|
||||
const char *id)
|
||||
{
|
||||
if (digest->request.identifier) {
|
||||
krb5_set_error_string(context, "identifier already set");
|
||||
krb5_set_error_message(context, EINVAL, "identifier already set");
|
||||
return EINVAL;
|
||||
}
|
||||
digest->request.identifier = calloc(1, sizeof(*digest->request.identifier));
|
||||
if (digest->request.identifier == NULL) {
|
||||
krb5_set_error_string(context, "out of memory");
|
||||
krb5_set_error_message(context, ENOMEM, "out of memory");
|
||||
return ENOMEM;
|
||||
}
|
||||
*digest->request.identifier = strdup(id);
|
||||
if (*digest->request.identifier == NULL) {
|
||||
krb5_set_error_string(context, "out of memory");
|
||||
krb5_set_error_message(context, ENOMEM, "out of memory");
|
||||
free(digest->request.identifier);
|
||||
digest->request.identifier = NULL;
|
||||
return ENOMEM;
|
||||
@@ -280,8 +281,8 @@ digest_request(krb5_context context,
|
||||
ASN1_MALLOC_ENCODE(DigestReqInner, data.data, data.length,
|
||||
ireq, &size, ret);
|
||||
if (ret) {
|
||||
krb5_set_error_string(context,
|
||||
"Failed to encode digest inner request");
|
||||
krb5_set_error_message(context, ret,
|
||||
"Failed to encode digest inner request");
|
||||
goto out;
|
||||
}
|
||||
if (size != data.length)
|
||||
@@ -300,8 +301,9 @@ digest_request(krb5_context context,
|
||||
if (ret)
|
||||
goto out;
|
||||
if (key == NULL) {
|
||||
krb5_set_error_string(context, "Digest failed to get local subkey");
|
||||
ret = EINVAL;
|
||||
krb5_set_error_message(context, ret,
|
||||
"Digest failed to get local subkey");
|
||||
goto out;
|
||||
}
|
||||
|
||||
@@ -322,7 +324,7 @@ digest_request(krb5_context context,
|
||||
ASN1_MALLOC_ENCODE(DigestREQ, data.data, data.length,
|
||||
&req, &size, ret);
|
||||
if (ret) {
|
||||
krb5_set_error_string(context, "Failed to encode DigestREQest");
|
||||
krb5_set_error_message(context, ret, "Failed to encode DigestREQest");
|
||||
goto out;
|
||||
}
|
||||
if (size != data.length)
|
||||
@@ -334,7 +336,7 @@ digest_request(krb5_context context,
|
||||
|
||||
ret = decode_DigestREP(data2.data, data2.length, &rep, NULL);
|
||||
if (ret) {
|
||||
krb5_set_error_string(context, "Failed to parse digest response");
|
||||
krb5_set_error_message(context, ret, "Failed to parse digest response");
|
||||
goto out;
|
||||
}
|
||||
|
||||
@@ -355,8 +357,8 @@ digest_request(krb5_context context,
|
||||
goto out;
|
||||
if (key == NULL) {
|
||||
ret = EINVAL;
|
||||
krb5_set_error_string(context,
|
||||
"Digest reply have no remote subkey");
|
||||
krb5_set_error_message(context, ret,
|
||||
"Digest reply have no remote subkey");
|
||||
goto out;
|
||||
}
|
||||
|
||||
@@ -375,11 +377,12 @@ digest_request(krb5_context context,
|
||||
|
||||
ret = decode_DigestRepInner(data.data, data.length, irep, NULL);
|
||||
if (ret) {
|
||||
krb5_set_error_string(context, "Failed to decode digest inner reply");
|
||||
krb5_set_error_message(context, ret,
|
||||
"Failed to decode digest inner reply");
|
||||
goto out;
|
||||
}
|
||||
|
||||
out:
|
||||
out:
|
||||
if (ccache == NULL && id)
|
||||
krb5_cc_close(context, id);
|
||||
if (realm == NULL && r)
|
||||
@@ -414,7 +417,8 @@ krb5_digest_init_request(krb5_context context,
|
||||
memset(&irep, 0, sizeof(irep));
|
||||
|
||||
if (digest->init.type == NULL) {
|
||||
krb5_set_error_string(context, "Type missing from init req");
|
||||
krb5_set_error_message(context, EINVAL,
|
||||
"Type missing from init req");
|
||||
return EINVAL;
|
||||
}
|
||||
|
||||
@@ -427,25 +431,26 @@ krb5_digest_init_request(krb5_context context,
|
||||
goto out;
|
||||
|
||||
if (irep.element == choice_DigestRepInner_error) {
|
||||
krb5_set_error_string(context, "Digest init error: %s",
|
||||
irep.u.error.reason);
|
||||
ret = irep.u.error.code;
|
||||
krb5_set_error_message(context, ret, "Digest init error: %s",
|
||||
irep.u.error.reason);
|
||||
goto out;
|
||||
}
|
||||
|
||||
if (irep.element != choice_DigestRepInner_initReply) {
|
||||
krb5_set_error_string(context, "digest reply not an initReply");
|
||||
ret = EINVAL;
|
||||
krb5_set_error_message(context, ret, "digest reply not an initReply");
|
||||
goto out;
|
||||
}
|
||||
|
||||
ret = copy_DigestInitReply(&irep.u.initReply, &digest->initReply);
|
||||
if (ret) {
|
||||
krb5_set_error_string(context, "Failed to copy initReply");
|
||||
krb5_set_error_message(context, ret,
|
||||
"Failed to copy initReply");
|
||||
goto out;
|
||||
}
|
||||
|
||||
out:
|
||||
out:
|
||||
free_DigestRepInner(&irep);
|
||||
|
||||
return ret;
|
||||
@@ -458,18 +463,19 @@ krb5_digest_set_client_nonce(krb5_context context,
|
||||
const char *nonce)
|
||||
{
|
||||
if (digest->request.clientNonce) {
|
||||
krb5_set_error_string(context, "clientNonce already set");
|
||||
krb5_set_error_message(context, EINVAL,
|
||||
"clientNonce already set");
|
||||
return EINVAL;
|
||||
}
|
||||
digest->request.clientNonce =
|
||||
calloc(1, sizeof(*digest->request.clientNonce));
|
||||
if (digest->request.clientNonce == NULL) {
|
||||
krb5_set_error_string(context, "out of memory");
|
||||
krb5_set_error_message(context, ENOMEM, "out of memory");
|
||||
return ENOMEM;
|
||||
}
|
||||
*digest->request.clientNonce = strdup(nonce);
|
||||
if (*digest->request.clientNonce == NULL) {
|
||||
krb5_set_error_string(context, "out of memory");
|
||||
krb5_set_error_message(context, ENOMEM, "out of memory");
|
||||
free(digest->request.clientNonce);
|
||||
digest->request.clientNonce = NULL;
|
||||
return ENOMEM;
|
||||
@@ -483,12 +489,13 @@ krb5_digest_set_digest(krb5_context context,
|
||||
const char *dgst)
|
||||
{
|
||||
if (digest->request.digest) {
|
||||
krb5_set_error_string(context, "digest already set");
|
||||
krb5_set_error_message(context, EINVAL,
|
||||
"digest already set");
|
||||
return EINVAL;
|
||||
}
|
||||
digest->request.digest = strdup(dgst);
|
||||
if (digest->request.digest == NULL) {
|
||||
krb5_set_error_string(context, "out of memory");
|
||||
krb5_set_error_message(context, ENOMEM, "out of memory");
|
||||
return ENOMEM;
|
||||
}
|
||||
return 0;
|
||||
@@ -500,12 +507,12 @@ krb5_digest_set_username(krb5_context context,
|
||||
const char *username)
|
||||
{
|
||||
if (digest->request.username) {
|
||||
krb5_set_error_string(context, "username already set");
|
||||
krb5_set_error_message(context, EINVAL, "username already set");
|
||||
return EINVAL;
|
||||
}
|
||||
digest->request.username = strdup(username);
|
||||
if (digest->request.username == NULL) {
|
||||
krb5_set_error_string(context, "out of memory");
|
||||
krb5_set_error_message(context, ENOMEM, "out of memory");
|
||||
return ENOMEM;
|
||||
}
|
||||
return 0;
|
||||
@@ -517,17 +524,17 @@ krb5_digest_set_authid(krb5_context context,
|
||||
const char *authid)
|
||||
{
|
||||
if (digest->request.authid) {
|
||||
krb5_set_error_string(context, "authid already set");
|
||||
krb5_set_error_message(context, EINVAL, "authid already set");
|
||||
return EINVAL;
|
||||
}
|
||||
digest->request.authid = malloc(sizeof(*digest->request.authid));
|
||||
if (digest->request.authid == NULL) {
|
||||
krb5_set_error_string(context, "out of memory");
|
||||
krb5_set_error_message(context, ENOMEM, "out of memory");
|
||||
return ENOMEM;
|
||||
}
|
||||
*digest->request.authid = strdup(authid);
|
||||
if (*digest->request.authid == NULL) {
|
||||
krb5_set_error_string(context, "out of memory");
|
||||
krb5_set_error_message(context, ENOMEM, "out of memory");
|
||||
free(digest->request.authid);
|
||||
digest->request.authid = NULL;
|
||||
return ENOMEM;
|
||||
@@ -543,14 +550,14 @@ krb5_digest_set_authentication_user(krb5_context context,
|
||||
krb5_error_code ret;
|
||||
|
||||
if (digest->request.authentication_user) {
|
||||
krb5_set_error_string(context, "authentication_user already set");
|
||||
krb5_set_error_message(context, EINVAL, "authentication_user already set");
|
||||
return EINVAL;
|
||||
}
|
||||
ret = krb5_copy_principal(context,
|
||||
authentication_user,
|
||||
&digest->request.authentication_user);
|
||||
if (digest->request.authentication_user == NULL) {
|
||||
krb5_set_error_string(context, "out of memory");
|
||||
krb5_set_error_message(context, ENOMEM, "out of memory");
|
||||
return ENOMEM;
|
||||
}
|
||||
return 0;
|
||||
@@ -562,17 +569,17 @@ krb5_digest_set_realm(krb5_context context,
|
||||
const char *realm)
|
||||
{
|
||||
if (digest->request.realm) {
|
||||
krb5_set_error_string(context, "realm already set");
|
||||
krb5_set_error_message(context, EINVAL, "realm already set");
|
||||
return EINVAL;
|
||||
}
|
||||
digest->request.realm = malloc(sizeof(*digest->request.realm));
|
||||
if (digest->request.realm == NULL) {
|
||||
krb5_set_error_string(context, "out of memory");
|
||||
krb5_set_error_message(context, ENOMEM, "out of memory");
|
||||
return ENOMEM;
|
||||
}
|
||||
*digest->request.realm = strdup(realm);
|
||||
if (*digest->request.realm == NULL) {
|
||||
krb5_set_error_string(context, "out of memory");
|
||||
krb5_set_error_message(context, ENOMEM, "out of memory");
|
||||
free(digest->request.realm);
|
||||
digest->request.realm = NULL;
|
||||
return ENOMEM;
|
||||
@@ -586,17 +593,17 @@ krb5_digest_set_method(krb5_context context,
|
||||
const char *method)
|
||||
{
|
||||
if (digest->request.method) {
|
||||
krb5_set_error_string(context, "method already set");
|
||||
krb5_set_error_message(context, EINVAL, "method already set");
|
||||
return EINVAL;
|
||||
}
|
||||
digest->request.method = malloc(sizeof(*digest->request.method));
|
||||
if (digest->request.method == NULL) {
|
||||
krb5_set_error_string(context, "out of memory");
|
||||
krb5_set_error_message(context, ENOMEM, "out of memory");
|
||||
return ENOMEM;
|
||||
}
|
||||
*digest->request.method = strdup(method);
|
||||
if (*digest->request.method == NULL) {
|
||||
krb5_set_error_string(context, "out of memory");
|
||||
krb5_set_error_message(context, ENOMEM, "out of memory");
|
||||
free(digest->request.method);
|
||||
digest->request.method = NULL;
|
||||
return ENOMEM;
|
||||
@@ -610,17 +617,17 @@ krb5_digest_set_uri(krb5_context context,
|
||||
const char *uri)
|
||||
{
|
||||
if (digest->request.uri) {
|
||||
krb5_set_error_string(context, "uri already set");
|
||||
krb5_set_error_message(context, EINVAL, "uri already set");
|
||||
return EINVAL;
|
||||
}
|
||||
digest->request.uri = malloc(sizeof(*digest->request.uri));
|
||||
if (digest->request.uri == NULL) {
|
||||
krb5_set_error_string(context, "out of memory");
|
||||
krb5_set_error_message(context, ENOMEM, "out of memory");
|
||||
return ENOMEM;
|
||||
}
|
||||
*digest->request.uri = strdup(uri);
|
||||
if (*digest->request.uri == NULL) {
|
||||
krb5_set_error_string(context, "out of memory");
|
||||
krb5_set_error_message(context, ENOMEM, "out of memory");
|
||||
free(digest->request.uri);
|
||||
digest->request.uri = NULL;
|
||||
return ENOMEM;
|
||||
@@ -634,18 +641,18 @@ krb5_digest_set_nonceCount(krb5_context context,
|
||||
const char *nonce_count)
|
||||
{
|
||||
if (digest->request.nonceCount) {
|
||||
krb5_set_error_string(context, "nonceCount already set");
|
||||
krb5_set_error_message(context, EINVAL, "nonceCount already set");
|
||||
return EINVAL;
|
||||
}
|
||||
digest->request.nonceCount =
|
||||
malloc(sizeof(*digest->request.nonceCount));
|
||||
if (digest->request.nonceCount == NULL) {
|
||||
krb5_set_error_string(context, "out of memory");
|
||||
krb5_set_error_message(context, ENOMEM, "out of memory");
|
||||
return ENOMEM;
|
||||
}
|
||||
*digest->request.nonceCount = strdup(nonce_count);
|
||||
if (*digest->request.nonceCount == NULL) {
|
||||
krb5_set_error_string(context, "out of memory");
|
||||
krb5_set_error_message(context, ENOMEM, "out of memory");
|
||||
free(digest->request.nonceCount);
|
||||
digest->request.nonceCount = NULL;
|
||||
return ENOMEM;
|
||||
@@ -659,17 +666,17 @@ krb5_digest_set_qop(krb5_context context,
|
||||
const char *qop)
|
||||
{
|
||||
if (digest->request.qop) {
|
||||
krb5_set_error_string(context, "qop already set");
|
||||
krb5_set_error_message(context, EINVAL, "qop already set");
|
||||
return EINVAL;
|
||||
}
|
||||
digest->request.qop = malloc(sizeof(*digest->request.qop));
|
||||
if (digest->request.qop == NULL) {
|
||||
krb5_set_error_string(context, "out of memory");
|
||||
krb5_set_error_message(context, ENOMEM, "out of memory");
|
||||
return ENOMEM;
|
||||
}
|
||||
*digest->request.qop = strdup(qop);
|
||||
if (*digest->request.qop == NULL) {
|
||||
krb5_set_error_string(context, "out of memory");
|
||||
krb5_set_error_message(context, ENOMEM, "out of memory");
|
||||
free(digest->request.qop);
|
||||
digest->request.qop = NULL;
|
||||
return ENOMEM;
|
||||
@@ -684,7 +691,7 @@ krb5_digest_set_responseData(krb5_context context,
|
||||
{
|
||||
digest->request.responseData = strdup(response);
|
||||
if (digest->request.responseData == NULL) {
|
||||
krb5_set_error_string(context, "out of memory");
|
||||
krb5_set_error_message(context, ENOMEM, "out of memory");
|
||||
return ENOMEM;
|
||||
}
|
||||
return 0;
|
||||
@@ -708,7 +715,7 @@ krb5_digest_request(krb5_context context,
|
||||
|
||||
if (digest->request.type == NULL) {
|
||||
if (digest->init.type == NULL) {
|
||||
krb5_set_error_string(context, "Type missing from req");
|
||||
krb5_set_error_message(context, EINVAL, "Type missing from req");
|
||||
return EINVAL;
|
||||
}
|
||||
ireq.u.digestRequest.type = digest->init.type;
|
||||
@@ -723,25 +730,25 @@ krb5_digest_request(krb5_context context,
|
||||
return ret;
|
||||
|
||||
if (irep.element == choice_DigestRepInner_error) {
|
||||
krb5_set_error_string(context, "Digest response error: %s",
|
||||
irep.u.error.reason);
|
||||
ret = irep.u.error.code;
|
||||
krb5_set_error_message(context, ret, "Digest response error: %s",
|
||||
irep.u.error.reason);
|
||||
goto out;
|
||||
}
|
||||
|
||||
if (irep.element != choice_DigestRepInner_response) {
|
||||
krb5_set_error_string(context, "digest reply not an DigestResponse");
|
||||
krb5_set_error_message(context, EINVAL, "digest reply not an DigestResponse");
|
||||
ret = EINVAL;
|
||||
goto out;
|
||||
}
|
||||
|
||||
ret = copy_DigestResponse(&irep.u.response, &digest->response);
|
||||
if (ret) {
|
||||
krb5_set_error_string(context, "Failed to copy initReply");
|
||||
krb5_set_error_message(context, ret, "Failed to copy initReply");
|
||||
goto out;
|
||||
}
|
||||
|
||||
out:
|
||||
out:
|
||||
free_DigestRepInner(&irep);
|
||||
|
||||
return ret;
|
||||
@@ -785,7 +792,7 @@ krb5_digest_get_client_binding(krb5_context context,
|
||||
if (*type == NULL || *binding == NULL) {
|
||||
free(*type);
|
||||
free(*binding);
|
||||
krb5_set_error_string(context, "out of memory");
|
||||
krb5_set_error_message(context, ENOMEM, "out of memory");
|
||||
return ENOMEM;
|
||||
}
|
||||
} else {
|
||||
@@ -825,7 +832,7 @@ krb5_ntlm_alloc(krb5_context context,
|
||||
{
|
||||
*ntlm = calloc(1, sizeof(**ntlm));
|
||||
if (*ntlm == NULL) {
|
||||
krb5_set_error_string(context, "out of memory");
|
||||
krb5_set_error_message(context, ENOMEM, "out of memory");
|
||||
return ENOMEM;
|
||||
}
|
||||
return 0;
|
||||
@@ -879,25 +886,25 @@ krb5_ntlm_init_request(krb5_context context,
|
||||
goto out;
|
||||
|
||||
if (irep.element == choice_DigestRepInner_error) {
|
||||
krb5_set_error_string(context, "Digest init error: %s",
|
||||
irep.u.error.reason);
|
||||
ret = irep.u.error.code;
|
||||
krb5_set_error_message(context, ret, "Digest init error: %s",
|
||||
irep.u.error.reason);
|
||||
goto out;
|
||||
}
|
||||
|
||||
if (irep.element != choice_DigestRepInner_ntlmInitReply) {
|
||||
krb5_set_error_string(context, "ntlm reply not an initReply");
|
||||
ret = EINVAL;
|
||||
krb5_set_error_message(context, ret, "ntlm reply not an initReply");
|
||||
goto out;
|
||||
}
|
||||
|
||||
ret = copy_NTLMInitReply(&irep.u.ntlmInitReply, &ntlm->initReply);
|
||||
if (ret) {
|
||||
krb5_set_error_string(context, "Failed to copy initReply");
|
||||
krb5_set_error_message(context, ret, "Failed to copy initReply");
|
||||
goto out;
|
||||
}
|
||||
|
||||
out:
|
||||
out:
|
||||
free_DigestRepInner(&irep);
|
||||
|
||||
return ret;
|
||||
@@ -998,25 +1005,25 @@ krb5_ntlm_request(krb5_context context,
|
||||
return ret;
|
||||
|
||||
if (irep.element == choice_DigestRepInner_error) {
|
||||
krb5_set_error_string(context, "NTLM response error: %s",
|
||||
irep.u.error.reason);
|
||||
ret = irep.u.error.code;
|
||||
krb5_set_error_message(context, ret, "NTLM response error: %s",
|
||||
irep.u.error.reason);
|
||||
goto out;
|
||||
}
|
||||
|
||||
if (irep.element != choice_DigestRepInner_ntlmResponse) {
|
||||
krb5_set_error_string(context, "NTLM reply not an NTLMResponse");
|
||||
ret = EINVAL;
|
||||
krb5_set_error_message(context, ret, "NTLM reply not an NTLMResponse");
|
||||
goto out;
|
||||
}
|
||||
|
||||
ret = copy_NTLMResponse(&irep.u.ntlmResponse, &ntlm->response);
|
||||
if (ret) {
|
||||
krb5_set_error_string(context, "Failed to copy NTLMResponse");
|
||||
krb5_set_error_message(context, ret, "Failed to copy NTLMResponse");
|
||||
goto out;
|
||||
}
|
||||
|
||||
out:
|
||||
out:
|
||||
free_DigestRepInner(&irep);
|
||||
|
||||
return ret;
|
||||
@@ -1038,7 +1045,7 @@ krb5_ntlm_req_set_username(krb5_context context,
|
||||
{
|
||||
ntlm->request.username = strdup(username);
|
||||
if (ntlm->request.username == NULL) {
|
||||
krb5_set_error_string(context, "out of memory");
|
||||
krb5_set_error_message(context, ENOMEM, "out of memory");
|
||||
return ENOMEM;
|
||||
}
|
||||
return 0;
|
||||
@@ -1051,7 +1058,7 @@ krb5_ntlm_req_set_targetname(krb5_context context,
|
||||
{
|
||||
ntlm->request.targetname = strdup(targetname);
|
||||
if (ntlm->request.targetname == NULL) {
|
||||
krb5_set_error_string(context, "out of memory");
|
||||
krb5_set_error_message(context, ENOMEM, "out of memory");
|
||||
return ENOMEM;
|
||||
}
|
||||
return 0;
|
||||
@@ -1064,7 +1071,7 @@ krb5_ntlm_req_set_lm(krb5_context context,
|
||||
{
|
||||
ntlm->request.lm.data = malloc(len);
|
||||
if (ntlm->request.lm.data == NULL) {
|
||||
krb5_set_error_string(context, "out of memory");
|
||||
krb5_set_error_message(context, ENOMEM, "out of memory");
|
||||
return ENOMEM;
|
||||
}
|
||||
ntlm->request.lm.length = len;
|
||||
@@ -1079,7 +1086,7 @@ krb5_ntlm_req_set_ntlm(krb5_context context,
|
||||
{
|
||||
ntlm->request.ntlm.data = malloc(len);
|
||||
if (ntlm->request.ntlm.data == NULL) {
|
||||
krb5_set_error_string(context, "out of memory");
|
||||
krb5_set_error_message(context, ENOMEM, "out of memory");
|
||||
return ENOMEM;
|
||||
}
|
||||
ntlm->request.ntlm.length = len;
|
||||
@@ -1094,7 +1101,7 @@ krb5_ntlm_req_set_opaque(krb5_context context,
|
||||
{
|
||||
ntlm->request.opaque.data = malloc(opaque->length);
|
||||
if (ntlm->request.opaque.data == NULL) {
|
||||
krb5_set_error_string(context, "out of memory");
|
||||
krb5_set_error_message(context, ENOMEM, "out of memory");
|
||||
return ENOMEM;
|
||||
}
|
||||
ntlm->request.opaque.length = opaque->length;
|
||||
@@ -1109,12 +1116,12 @@ krb5_ntlm_req_set_session(krb5_context context,
|
||||
{
|
||||
ntlm->request.sessionkey = calloc(1, sizeof(*ntlm->request.sessionkey));
|
||||
if (ntlm->request.sessionkey == NULL) {
|
||||
krb5_set_error_string(context, "out of memory");
|
||||
krb5_set_error_message(context, ENOMEM, "out of memory");
|
||||
return ENOMEM;
|
||||
}
|
||||
ntlm->request.sessionkey->data = malloc(length);
|
||||
if (ntlm->request.sessionkey->data == NULL) {
|
||||
krb5_set_error_string(context, "out of memory");
|
||||
krb5_set_error_message(context, ENOMEM, "out of memory");
|
||||
return ENOMEM;
|
||||
}
|
||||
memcpy(ntlm->request.sessionkey->data, sessionkey, length);
|
||||
@@ -1135,7 +1142,7 @@ krb5_ntlm_rep_get_sessionkey(krb5_context context,
|
||||
krb5_data *data)
|
||||
{
|
||||
if (ntlm->response.sessionkey == NULL) {
|
||||
krb5_set_error_string(context, "no ntlm session key");
|
||||
krb5_set_error_message(context, EINVAL, "no ntlm session key");
|
||||
return EINVAL;
|
||||
}
|
||||
krb5_clear_error_string(context);
|
||||
@@ -1178,21 +1185,21 @@ krb5_digest_probe(krb5_context context,
|
||||
goto out;
|
||||
|
||||
if (irep.element == choice_DigestRepInner_error) {
|
||||
krb5_set_error_string(context, "Digest probe error: %s",
|
||||
irep.u.error.reason);
|
||||
ret = irep.u.error.code;
|
||||
krb5_set_error_message(context, ret, "Digest probe error: %s",
|
||||
irep.u.error.reason);
|
||||
goto out;
|
||||
}
|
||||
|
||||
if (irep.element != choice_DigestRepInner_supportedMechs) {
|
||||
krb5_set_error_string(context, "Digest reply not an probe");
|
||||
ret = EINVAL;
|
||||
krb5_set_error_message(context, ret, "Digest reply not an probe");
|
||||
goto out;
|
||||
}
|
||||
|
||||
*flags = DigestTypes2int(irep.u.supportedMechs);
|
||||
|
||||
out:
|
||||
out:
|
||||
free_DigestRepInner(&irep);
|
||||
|
||||
return ret;
|
||||
|
Reference in New Issue
Block a user