Changeset 401840b in mainline


Ignore:
Timestamp:
2016-06-17T13:30:58Z (8 years ago)
Author:
Jakub Jermar <jakub@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
554e70f
Parents:
741b2fb1
git-author:
Manuele Conti <conti.manuele@…> (2016-06-17 13:30:58)
git-committer:
Jakub Jermar <jakub@…> (2016-06-17 13:30:58)
Message:

Fix memory leak in dnsr_name2host and missing call to async_forget

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/lib/c/generic/dnsr.c

    r741b2fb1 r401840b  
    6969int dnsr_name2host(const char *name, dnsr_hostinfo_t **rinfo, ip_ver_t ver)
    7070{
    71         dnsr_hostinfo_t *info = calloc(1, sizeof(dnsr_hostinfo_t));
    72         if (info == NULL)
    73                 return ENOMEM;
    74        
    7571        async_exch_t *exch = dnsr_exchange_begin();
    7672       
     
    8581                return rc;
    8682        }
     83
     84        dnsr_hostinfo_t *info = calloc(1, sizeof(dnsr_hostinfo_t));
     85        if (info == NULL)
     86                return ENOMEM;
    8787       
    8888        ipc_call_t answer_addr;
     
    9696                async_exchange_end(exch);
    9797                async_forget(req);
     98                free(info);
    9899                return (int) retval_addr;
    99100        }
     
    111112        if (retval_cname != EOK) {
    112113                async_forget(req);
     114                free(info);
    113115                return (int) retval_cname;
    114116        }
     
    117119        async_wait_for(req, &retval);
    118120       
    119         if (retval != EOK)
     121        if (retval != EOK) {
     122                async_forget(req);
     123                free(info);
    120124                return (int) retval;
    121        
     125        }
     126
    122127        size_t act_size = IPC_GET_ARG2(answer_cname);
    123128        assert(act_size <= DNSR_NAME_MAX_SIZE);
    124129       
    125130        cname_buf[act_size] = '\0';
    126        
     131
    127132        info->cname = str_dup(cname_buf);
    128        
     133
    129134        *rinfo = info;
    130135        return EOK;
Note: See TracChangeset for help on using the changeset viewer.