From dbc39600e29ea9c3573e22262fd78839d2b81eef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Love=20H=C3=B6rnquist=20=C3=85strand?= Date: Wed, 25 Jan 2006 12:50:10 +0000 Subject: [PATCH] Clear error-string when introducing new errors. git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@16661 ec53bebd-3082-4978-b11e-865c3cabbd6b --- lib/kadm5/chpass_c.c | 8 ++++++-- lib/kadm5/create_c.c | 8 ++++++-- lib/kadm5/delete_c.c | 6 +++++- lib/kadm5/init_c.c | 12 +++++++----- lib/kadm5/modify_c.c | 6 +++++- 5 files changed, 29 insertions(+), 11 deletions(-) diff --git a/lib/kadm5/chpass_c.c b/lib/kadm5/chpass_c.c index a2cc10abb..703d5339a 100644 --- a/lib/kadm5/chpass_c.c +++ b/lib/kadm5/chpass_c.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997 - 2000 Kungliga Tekniska Högskolan + * Copyright (c) 1997-2000, 2005-2006 Kungliga Tekniska Högskolan * (Royal Institute of Technology, Stockholm, Sweden). * All rights reserved. * @@ -96,8 +96,10 @@ kadm5_c_chpass_principal_with_key(void *server_handle, return ret; sp = krb5_storage_from_mem(buf, sizeof(buf)); - if (sp == NULL) + if (sp == NULL) { + krb5_clear_error_string(context->context); return ENOMEM; + } krb5_store_int32(sp, kadm_chpass_with_key); krb5_store_principal(sp, princ); krb5_store_int32(sp, n_key_data); @@ -110,10 +112,12 @@ kadm5_c_chpass_principal_with_key(void *server_handle, return ret; sp = krb5_storage_from_data (&reply); if (sp == NULL) { + krb5_clear_error_string(context->context); krb5_data_free (&reply); return ENOMEM; } krb5_ret_int32(sp, &tmp); + krb5_clear_error_string(context->context); krb5_storage_free(sp); krb5_data_free (&reply); return tmp; diff --git a/lib/kadm5/create_c.c b/lib/kadm5/create_c.c index b029344ff..7c47634a7 100644 --- a/lib/kadm5/create_c.c +++ b/lib/kadm5/create_c.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997 - 1999 Kungliga Tekniska Högskolan + * Copyright (c) 1997-2000, 2005-2006 Kungliga Tekniska Högskolan * (Royal Institute of Technology, Stockholm, Sweden). * All rights reserved. * @@ -53,8 +53,10 @@ kadm5_c_create_principal(void *server_handle, return ret; sp = krb5_storage_from_mem(buf, sizeof(buf)); - if (sp == NULL) + if (sp == NULL) { + krb5_clear_error_string(context->context); return ENOMEM; + } krb5_store_int32(sp, kadm_create); kadm5_store_principal_ent(sp, princ); krb5_store_int32(sp, mask); @@ -66,10 +68,12 @@ kadm5_c_create_principal(void *server_handle, return ret; sp = krb5_storage_from_data (&reply); if (sp == NULL) { + krb5_clear_error_string(context->context); krb5_data_free (&reply); return ENOMEM; } krb5_ret_int32(sp, &tmp); + krb5_clear_error_string(context->context); krb5_storage_free(sp); krb5_data_free (&reply); return tmp; diff --git a/lib/kadm5/delete_c.c b/lib/kadm5/delete_c.c index f1785a4ae..e41ec104e 100644 --- a/lib/kadm5/delete_c.c +++ b/lib/kadm5/delete_c.c @@ -50,8 +50,10 @@ kadm5_c_delete_principal(void *server_handle, krb5_principal princ) return ret; sp = krb5_storage_from_mem(buf, sizeof(buf)); - if (sp == NULL) + if (sp == NULL) { + krb5_clear_error_string(context->context); return ENOMEM; + } krb5_store_int32(sp, kadm_delete); krb5_store_principal(sp, princ); ret = _kadm5_client_send(context, sp); @@ -63,10 +65,12 @@ kadm5_c_delete_principal(void *server_handle, krb5_principal princ) return ret; sp = krb5_storage_from_data (&reply); if(sp == NULL) { + krb5_clear_error_string(context->context); krb5_data_free (&reply); return ENOMEM; } krb5_ret_int32(sp, &tmp); + krb5_clear_error_string(context->context); krb5_storage_free(sp); krb5_data_free (&reply); return tmp; diff --git a/lib/kadm5/init_c.c b/lib/kadm5/init_c.c index 7b51777d0..0547c3608 100644 --- a/lib/kadm5/init_c.c +++ b/lib/kadm5/init_c.c @@ -368,8 +368,10 @@ kadm_connect(kadm5_client_context *ctx) hostname = slash + 1; error = getaddrinfo (hostname, portstr, &hints, &ai); - if (error) + if (error) { + krb5_clear_error_string(context); return KADM5_BAD_SERVER_NAME; + } for (a = ai; a != NULL; a = a->ai_next) { s = socket (a->ai_family, a->ai_socktype, a->ai_protocol); @@ -384,6 +386,7 @@ kadm_connect(kadm5_client_context *ctx) } if (a == NULL) { freeaddrinfo (ai); + krb5_clear_error_string(context); krb5_warnx (context, "failed to contact %s", hostname); return KADM5_FAILURE; } @@ -407,6 +410,7 @@ kadm_connect(kadm5_client_context *ctx) if (service_name == NULL) { freeaddrinfo (ai); close(s); + krb5_clear_error_string(context); return ENOMEM; } @@ -450,11 +454,13 @@ kadm_connect(kadm5_client_context *ctx) s = socket (a->ai_family, a->ai_socktype, a->ai_protocol); if (s < 0) { freeaddrinfo (ai); + krb5_clear_error_string(context); return errno; } if (connect (s, a->ai_addr, a->ai_addrlen) < 0) { close (s); freeaddrinfo (ai); + krb5_clear_error_string(context); return errno; } ret = krb5_sendauth(context, &ctx->ac, &s, @@ -471,10 +477,6 @@ kadm_connect(kadm5_client_context *ctx) krb5_free_principal(context, server); if(ctx->ccache == NULL) krb5_cc_close(context, cc); - if(ret) { - close(s); - return ret; - } ctx->sock = s; return 0; diff --git a/lib/kadm5/modify_c.c b/lib/kadm5/modify_c.c index e93180ab3..329b7396b 100644 --- a/lib/kadm5/modify_c.c +++ b/lib/kadm5/modify_c.c @@ -52,8 +52,10 @@ kadm5_c_modify_principal(void *server_handle, return ret; sp = krb5_storage_from_mem(buf, sizeof(buf)); - if (sp == NULL) + if (sp == NULL) { + krb5_clear_error_string(context->contect); return ENOMEM; + } krb5_store_int32(sp, kadm_modify); kadm5_store_principal_ent(sp, princ); krb5_store_int32(sp, mask); @@ -66,10 +68,12 @@ kadm5_c_modify_principal(void *server_handle, return ret; sp = krb5_storage_from_data (&reply); if (sp == NULL) { + krb5_clear_error_string(context->contect); krb5_data_free (&reply); return ENOMEM; } krb5_ret_int32(sp, &tmp); + krb5_clear_error_string(context->contect); krb5_storage_free(sp); krb5_data_free (&reply); return tmp;