Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/srv/net/dnsrsrv/dnsrsrv.c

    r5d1cb8a r959d2ec  
    8989        char *name;
    9090        dns_host_info_t *hinfo;
     91        ipc_callid_t rcallid;
     92        size_t size;
     93        sysarg_t retval;
     94        size_t act_size;
    9195        int rc;
    9296
     
    100104        }
    101105
     106        if (!async_data_read_receive(&rcallid, &size)) {
     107                async_answer_0(rcallid, EREFUSED);
     108                async_answer_0(callid, EREFUSED);
     109                return;
     110        }
     111
    102112        rc = dns_name2host(name, &hinfo);
    103113        if (rc != EOK) {
     114                async_answer_0(rcallid, rc);
    104115                async_answer_0(callid, rc);
    105116                return;
    106117        }
    107118
    108         async_answer_1(callid, EOK, hinfo->addr.ipv4);
     119        act_size = str_size(hinfo->cname);
     120        if (act_size > size) {
     121                async_answer_0(rcallid, EOVERFLOW);
     122                async_answer_0(callid, EOVERFLOW);
     123                return;
     124        }
     125
     126        retval = async_data_read_finalize(rcallid, hinfo->cname, act_size);
     127        async_answer_1(callid, retval, hinfo->addr.ipv4);
    109128
    110129        dns_hostinfo_destroy(hinfo);
Note: See TracChangeset for help on using the changeset viewer.