summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/ocsptool-common.c18
1 files changed, 13 insertions, 5 deletions
diff --git a/src/ocsptool-common.c b/src/ocsptool-common.c
index fdbd662c31..a2d971b4b0 100644
--- a/src/ocsptool-common.c
+++ b/src/ocsptool-common.c
@@ -219,7 +219,8 @@ int send_ocsp_request(const char *server,
if (ret < 0 || ud.size == 0) {
perror("recv");
- return -1;
+ ret = -1;
+ goto cleanup;
}
socket_bye(&hd, 0);
@@ -227,22 +228,29 @@ int send_ocsp_request(const char *server,
p = memmem(ud.data, ud.size, "\r\n\r\n", 4);
if (p == NULL) {
fprintf(stderr, "Cannot interpret HTTP response\n");
- return -1;
+ ret = -1;
+ goto cleanup;
}
p += 4;
resp_data->size = ud.size - (p - ud.data);
resp_data->data = malloc(resp_data->size);
- if (resp_data->data == NULL)
- return -1;
+ if (resp_data->data == NULL) {
+ perror("recv");
+ ret = -1;
+ goto cleanup;
+ }
memcpy(resp_data->data, p, resp_data->size);
+ ret = 0;
+
+ cleanup:
free(ud.data);
if (url != server)
free(url);
- return 0;
+ return ret;
}
void print_ocsp_verify_res(unsigned int output)