[libvirt] [PATCH 01/13] virnettlscontexttest: Resolve memory leak found by Valgrind

Osier Yang jyang at redhat.com
Thu Feb 7 01:48:25 UTC 2013


On 2013年02月07日 05:35, John Ferlan wrote:
> testTLSDerEncode() will allocate memory for der.data, it wasn't VIR_FREE()'d.
> also don't initialized der to use static buffer.
> ---
>   tests/virnettlscontexttest.c | 8 +++++++-
>   1 file changed, 7 insertions(+), 1 deletion(-)
>
> diff --git a/tests/virnettlscontexttest.c b/tests/virnettlscontexttest.c
> index e0a2788..3df8a70 100644
> --- a/tests/virnettlscontexttest.c
> +++ b/tests/virnettlscontexttest.c
> @@ -160,7 +160,7 @@ testTLSGenerateCert(struct testTLSCertReq *req)
>       static char buffer[1024*1024];
>       size_t size = sizeof(buffer);
>       char serial[5] = { 1, 2, 3, 4, 0 };
> -    gnutls_datum_t der = { (unsigned char *)buffer, size };
> +    gnutls_datum_t der;
>       time_t start = time(NULL) + (60*60*req->start_offset);
>       time_t expire = time(NULL) + (60*60*(req->expire_offset
>                                            ? req->expire_offset : 24));
> @@ -294,9 +294,11 @@ testTLSGenerateCert(struct testTLSCertReq *req)
>                                                           der.size,
>                                                           req->basicConstraintsCritical))<  0) {
>               VIR_WARN("Failed to set certificate basic constraints %s", gnutls_strerror(err));
> +            VIR_FREE(der.data);
>               abort();
>           }
>           asn1_delete_structure(&ext);
> +        VIR_FREE(der.data);
>       }
>
>       /*
> @@ -320,9 +322,11 @@ testTLSGenerateCert(struct testTLSCertReq *req)
>                                                           der.size,
>                                                           req->keyUsageCritical))<  0) {
>               VIR_WARN("Failed to set certificate key usage %s", gnutls_strerror(err));
> +            VIR_FREE(der.data);
>               abort();
>           }
>           asn1_delete_structure(&ext);
> +        VIR_FREE(der.data);
>       }
>
>       /*
> @@ -350,9 +354,11 @@ testTLSGenerateCert(struct testTLSCertReq *req)
>                                                           der.size,
>                                                           req->keyPurposeCritical))<  0) {
>               VIR_WARN("Failed to set certificate key purpose %s", gnutls_strerror(err));
> +            VIR_FREE(der.data);
>               abort();
>           }
>           asn1_delete_structure(&ext);
> +        VIR_FREE(der.data);
>       }
>
>       /*

ACK




More information about the libvir-list mailing list