static void
chaos_trustanchor(sldns_buffer* pkt, struct edns_data* edns, struct worker* w)
{
- int max_txt = 16;
- int max_tags = 32;
- char* str_array[16];
- uint16_t tags[32];
+#define TA_RESPONSE_MAX_TXT 16 /* max number of TXT records */
+#define TA_RESPONSE_MAX_TAGS 32 /* max number of tags printed per zone */
+ char* str_array[TA_RESPONSE_MAX_TXT];
+ uint16_t tags[TA_RESPONSE_MAX_TAGS];
int num = 0;
struct trust_anchor* ta;
/* fill the string with contents */
lock_basic_lock(&w->env.anchors->lock);
RBTREE_FOR(ta, struct trust_anchor*, w->env.anchors->tree) {
- int i, numtag;
char* str;
- size_t str_len = 255;
- if(num == max_txt) continue;
- str = (char*)regional_alloc(w->scratchpad, 255);
+ size_t i, numtag, str_len = 255;
+ if(num == TA_RESPONSE_MAX_TXT) continue;
+ str = (char*)regional_alloc(w->scratchpad, str_len);
if(!str) continue;
lock_basic_lock(&ta->lock);
- numtag = anchor_list_keytags(ta, tags, max_tags);
+ numtag = anchor_list_keytags(ta, tags, TA_RESPONSE_MAX_TAGS);
if(numtag == 0) {
/* empty, insecure point */
lock_basic_unlock(&ta->lock);
return -1;
}
-int
-anchor_list_keytags(struct trust_anchor* ta, uint16_t* list, int num)
+size_t
+anchor_list_keytags(struct trust_anchor* ta, uint16_t* list, size_t num)
{
- size_t i;
- int ret = 0;
+ size_t i, ret = 0;
if(ta->numDS == 0 && ta->numDNSKEY == 0)
return 0; /* insecure point */
if(ta->numDS != 0 && ta->ds_rrset) {
list[ret++] = dnskey_calc_keytag(ta->dnskey_rrset, i);
}
}
- qsort(list, (size_t)ret, sizeof(*list), keytag_compare);
+ qsort(list, ret, sizeof(*list), keytag_compare);
return ret;
}
* bigger than the array, it is truncated at num. On errors, less keytags
* are filled in. The array is sorted.
*/
-int anchor_list_keytags(struct trust_anchor* ta, uint16_t* list, int num);
+size_t anchor_list_keytags(struct trust_anchor* ta, uint16_t* list, size_t num);
#endif /* VALIDATOR_VAL_ANCHOR_H */