[getdns-api] Memory leaks in getdns_context_get_api_information()
Willem Toorop
willem at nlnetlabs.nl
Fri Feb 26 12:28:16 CET 2016
Thank you Robert!
Good catch. I've committed a fix:
https://github.com/getdnsapi/getdns/commit/6fd05675aa96337b164bd7e9e480cc30f7eb9897
Best regards,
-- Willem
Op 25-02-16 om 15:37 schreef Robert Groenenberg:
> Hi,
>
> While testing my application, which uses getdns 0.9.0, I found two small
> memory leaks related to getdns_context_get_api_information(), but
> probably I'm missing something...
>
> I destroy the returned dict from getdns_context_get_api_information(),
> but according to valgrind there are two leaks. The first
> (context.c:2948) refers to the dns transport list, the second to the
> namespaces list. Apparently these are not freed as part of the
> getdns_dict_destroy().
>
> Am I forgetting to destroy something?
>
> res = getdns_context_create(&ctxt, 0);
> if (res == GETDNS_RETURN_GOOD)
> {
> dict = *getdns_context_get_api_information*(ctxt);
> if (dict != NULL)
> {
> if ((res = *getdns_dict_get_bindata*(dict,
> "/version_string",
> &version)) ==
> GETDNS_RETURN_GOOD))
> {
> trace_mod(TRACE_INFO,
> "Using getdns library version %.*s",
> version->size, version->data);
> }
> *getdns_dict_destroy*(dict);
> dict = NULL;
> }
> else
> {
> trace_mod(BF_TRACE_ERROR,
> "Failed to initialise getdns library: %s (%d)",
> getdns_get_errorstr_by_id(res), res);
> retval = FAILURE;
> }
>
> /* Cleanup */
> *getdns_context_destroy*(ctxt);
> ctxt = NULL;
> }
>
>> ==11484== 216 (56 direct, 160 indirect) bytes in 1 blocks are
>> definitely lost in loss record 637 of 686
>> ==11484== at 0x4A08455: malloc (vg_replace_malloc.c:299)
>> ==11484== by 0x224B6F86:
>> getdns_list_create_with_extended_memory_functions (list.c:380)
>> ==11484== by 0x224C5F15: _get_context_settings (context.c:2948)
>> ==11484== by 0x224C5F15: *getdns_context_get_api_information
>> *(context.c:2986)
>> ==11484== by 0x22191724: mf_am_init (enum_init.c:136)
>> ==11484== by 0x4366F0: mf_am_process_init (mf_am.c:837)
>> ==11484== by 0x43B23A: mf_core_init (mf_core.c:487)
>> ==11484== by 0x40FB31: main (mf_main.c:422)
>> ==11484==
>> ==11484== 216 (56 direct, 160 indirect) bytes in 1 blocks are
>> definitely lost in loss record 638 of 686
>> ==11484== at 0x4A08455: malloc (vg_replace_malloc.c:299)
>> ==11484== by 0x224B6F86:
>> getdns_list_create_with_extended_memory_functions (list.c:380)
>> ==11484== by 0x224C5DE2: _get_context_settings (context.c:2960)
>> ==11484== by 0x224C5DE2: *getdns_context_get_api_information*
>> (context.c:2986)
>> ==11484== by 0x22191724: mf_am_init (enum_init.c:136)
>> ==11484== by 0x4366F0: mf_am_process_init (mf_am.c:837)
>> ==11484== by 0x43B23A: mf_core_init (mf_core.c:487)
>> ==11484== by 0x40FB31: main (mf_main.c:422)
>
> Thanks,
> Robert
>
>
> _______________________________________________
> spec mailing list
> spec at getdnsapi.net
>
More information about the spec
mailing list