1 wdns_res wdns_reverse_name(const uint8_t * name,size_t len_name,uint8_t * rev_name)2wdns_reverse_name(const uint8_t *name, size_t len_name, uint8_t *rev_name) { 3 const uint8_t *p; 4 size_t len; 5 size_t total_len = 0; 6 7 p = name; 8 memset(rev_name, 0, len_name); 9 rev_name += len_name - 1; 10 11 while ((len = *p) != '\x00') { 12 len += 1; 13 total_len += len; 14 if (total_len > len_name) { 15 return (wdns_res_out_of_bounds); 16 } 17 rev_name -= len; 18 memcpy(rev_name, p, len); 19 p += len; 20 } 21 22 return (wdns_res_success); 23 } 24