diff --git a/kcm/cache.c b/kcm/cache.c index 02624dfd1..b11812769 100644 --- a/kcm/cache.c +++ b/kcm/cache.c @@ -168,9 +168,9 @@ krb5_error_code kcm_debug_ccache(krb5_context context) ncreds++; if (p->client != NULL) - krb5_unparse_name(context, p->client, &cpn); + (void) krb5_unparse_name(context, p->client, &cpn); if (p->server != NULL) - krb5_unparse_name(context, p->server, &spn); + (void) krb5_unparse_name(context, p->server, &spn); kcm_log(7, "cache %08x: name %s refcnt %d flags %04x mode %04o " "uid %d gid %d client %s server %s ncreds %d", @@ -179,10 +179,8 @@ krb5_error_code kcm_debug_ccache(krb5_context context) (spn == NULL) ? "" : spn, ncreds); - if (cpn != NULL) - free(cpn); - if (spn != NULL) - free(spn); + free(cpn); + free(spn); } return 0; diff --git a/kcm/protocol.c b/kcm/protocol.c index decc6c176..31f17623d 100644 --- a/kcm/protocol.c +++ b/kcm/protocol.c @@ -1747,6 +1747,7 @@ kcm_dispatch(krb5_context context, krb5_storage *resp_sp = NULL; uint16_t opcode; + krb5_data_zero(resp_data); resp_sp = krb5_storage_emem(); if (resp_sp == NULL) { return ENOMEM; @@ -1796,11 +1797,17 @@ out: krb5_storage_free(req_sp); } - krb5_storage_seek(resp_sp, 0, SEEK_SET); - krb5_store_int32(resp_sp, ret); + if (resp_sp) { + krb5_error_code ret2; - ret = krb5_storage_to_data(resp_sp, resp_data); - krb5_storage_free(resp_sp); + krb5_storage_seek(resp_sp, 0, SEEK_SET); + ret2 = krb5_store_int32(resp_sp, ret); + if (ret2 == 0) + ret2 = krb5_storage_to_data(resp_sp, resp_data); + krb5_storage_free(resp_sp); + if (ret2) + ret = ret2; + } return ret; }