diff --git a/lib/kadm5/send_recv.c b/lib/kadm5/send_recv.c index a3d6a4aec..43a490d88 100644 --- a/lib/kadm5/send_recv.c +++ b/lib/kadm5/send_recv.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997-2003 Kungliga Tekniska Högskolan + * Copyright (c) 1997-2003, 2006 Kungliga Tekniska Högskolan * (Royal Institute of Technology, Stockholm, Sweden). * All rights reserved. * @@ -47,8 +47,10 @@ _kadm5_client_send(kadm5_client_context *context, krb5_storage *sp) len = krb5_storage_seek(sp, 0, SEEK_CUR); ret = krb5_data_alloc(&msg, len); - if (ret) + if (ret) { + krb5_clear_error_string(context->context); return ret; + } krb5_storage_seek(sp, 0, SEEK_SET); krb5_storage_read(sp, msg.data, msg.length); @@ -59,11 +61,14 @@ _kadm5_client_send(kadm5_client_context *context, krb5_storage *sp) sock = krb5_storage_from_fd(context->sock); if(sock == NULL) { + krb5_clear_error_string(context->context); krb5_data_free(&out); return ENOMEM; } ret = krb5_store_data(sock, out); + if (ret) + krb5_clear_error_string(context->context); krb5_storage_free(sock); krb5_data_free(&out); return ret; @@ -77,10 +82,13 @@ _kadm5_client_recv(kadm5_client_context *context, krb5_data *reply) krb5_storage *sock; sock = krb5_storage_from_fd(context->sock); - if(sock == NULL) + if(sock == NULL) { + krb5_clear_error_string(context->context); return ENOMEM; + } ret = krb5_ret_data(sock, &data); krb5_storage_free(sock); + krb5_clear_error_string(context->context); if(ret == KRB5_CC_END) return KADM5_RPC_ERROR; else if(ret)