diff options
author | Nikos Mavrogiannopoulos <nmav@redhat.com> | 2016-08-25 09:57:55 +0200 |
---|---|---|
committer | Nikos Mavrogiannopoulos <nmav@redhat.com> | 2016-08-25 13:46:11 +0200 |
commit | 6a8ba816674ee6750ea9fcce6f732758bc3d3b1e (patch) | |
tree | a2454dd217c99ec2da381ffca4fe2d68c488c29a | |
parent | 9ecdccbcaf89adac0fbb5522c72cbc09fe5b01e2 (diff) | |
download | gnutls-ocsp-fix.tar.gz |
ocsptool: reduce memory leaks on executionocsp-fix
-rw-r--r-- | src/ocsptool-common.c | 3 | ||||
-rw-r--r-- | src/ocsptool.c | 16 |
2 files changed, 18 insertions, 1 deletions
diff --git a/src/ocsptool-common.c b/src/ocsptool-common.c index 5ab753cf84..a411a8e97e 100644 --- a/src/ocsptool-common.c +++ b/src/ocsptool-common.c @@ -209,6 +209,7 @@ int send_ocsp_request(const char *server, socket_send(&hd, headers, headers_size); socket_send(&hd, req.data, req.size); + gnutls_free(req.data); do { ret = socket_recv(&hd, buffer, sizeof(buffer)); @@ -238,6 +239,8 @@ int send_ocsp_request(const char *server, memcpy(resp_data->data, p, resp_data->size); free(ud.data); + if (url != server) + free(url); return 0; } diff --git a/src/ocsptool.c b/src/ocsptool.c index 9493a8d436..5e38410429 100644 --- a/src/ocsptool.c +++ b/src/ocsptool.c @@ -281,9 +281,15 @@ static gnutls_x509_crt_t load_cert(void) static void generate_request(gnutls_datum_t *nonce) { gnutls_datum_t dat; + gnutls_x509_crt_t cert, issuer; + + cert = load_cert(); + issuer = load_issuer(); - _generate_request(load_cert(), load_issuer(), &dat, nonce); + _generate_request(cert, issuer, &dat, nonce); + gnutls_x509_crt_deinit(cert); + gnutls_x509_crt_deinit(issuer); fwrite(dat.data, 1, dat.size, outfile); gnutls_free(dat.data); @@ -528,6 +534,10 @@ static void ask_server(const char *url) fwrite(resp_data.data, 1, resp_data.size, outfile); } + free(resp_data.data); + gnutls_x509_crt_deinit(issuer); + gnutls_x509_crt_deinit(cert); + if (v && !HAVE_OPT(IGNORE_ERRORS)) exit(1); } @@ -583,5 +593,9 @@ int main(int argc, char **argv) USAGE(1); } + if (infile != stdin) + fclose(infile); + gnutls_global_deinit(); + return 0; } |