diff options
author | Jeffrey Altman <jaltman@secure-endpoints.com> | 2006-06-05 17:49:34 +0000 |
---|---|---|
committer | Jeffrey Altman <jaltman@secure-endpoints.com> | 2006-06-05 17:49:34 +0000 |
commit | f42fa33b985c230736ad5d9080055916de33be8c (patch) | |
tree | 0f6cc37148d66dc13ca10bb268679ea4c99677bf /src/lib/ccapi/client/cacheapi.c | |
parent | 3d6591dd63c23bcc0ae68e94a960c85fd53daad0 (diff) | |
download | krb5-f42fa33b985c230736ad5d9080055916de33be8c.tar.gz krb5-f42fa33b985c230736ad5d9080055916de33be8c.tar.xz krb5-f42fa33b985c230736ad5d9080055916de33be8c.zip |
improved error handling
git-svn-id: svn://anonsvn.mit.edu/krb5/branches/ccapi@18083 dc483132-0cff-0310-8789-dd5450dbe970
Diffstat (limited to 'src/lib/ccapi/client/cacheapi.c')
-rw-r--r-- | src/lib/ccapi/client/cacheapi.c | 26 |
1 files changed, 18 insertions, 8 deletions
diff --git a/src/lib/ccapi/client/cacheapi.c b/src/lib/ccapi/client/cacheapi.c index 14a1eb476..c76ebe457 100644 --- a/src/lib/ccapi/client/cacheapi.c +++ b/src/lib/ccapi/client/cacheapi.c @@ -64,9 +64,9 @@ cc_initialize ( cc_context_t* outContext, char const** outVendor) { static char vendor[128] = ""; - cc_msg_t *request; + cc_msg_t *request = NULL; ccmsg_init_t *request_header; - cc_msg_t *response; + cc_msg_t *response = NULL; cc_uint32 type; ccmsg_init_resp_t *response_header; cc_int32 code; @@ -100,14 +100,17 @@ cc_initialize ( cc_context_t* outContext, request_header->in_version = htonl(inVersion); code = cci_msg_new(ccmsg_INIT, &request); - if (code != ccNoError) { - free(request_header); - return code; - } + if (code != ccNoError) + goto cleanup; code = cci_msg_add_header(request, request_header, sizeof(ccmsg_init_t)); + if (code != ccNoError) + goto cleanup; + request_header = NULL; code = cci_perform_rpc(request, &response); + if (code != ccNoError) + goto cleanup; type = ntohl(response->type); if (type == ccmsg_NACK) { @@ -131,8 +134,15 @@ cc_initialize ( cc_context_t* outContext, } else { code = ccErrBadInternalMessage; } - cci_msg_destroy(request); - cci_msg_destroy(response); + + cleanup: + if (request_header) + free(request_header); + + if (request) + cci_msg_destroy(request); + if (response) + cci_msg_destroy(response); return code; } |