LCOV - code coverage report
Current view: top level - waltz/resolv - fd_dns_parse.c (source / functions) Hit Total Coverage
Test: cov.lcov Lines: 25 26 96.2 %
Date: 2026-08-16 04:31:21 Functions: 1 1 100.0 %

          Line data    Source code
       1             : #include "fd_lookup.h"
       2             : 
       3             : int
       4             : fd_dns_parse(
       5             :     uchar const * r,
       6             :     int           rlen,
       7             :     int (* callback)(
       8             :         void *,
       9             :         int,
      10             :         void const *,
      11             :         int,
      12             :         void const *,
      13             :         int
      14             :     ),
      15             :     void * ctx
      16          12 : ) {
      17          12 :   int qdcount, ancount;
      18          12 :   int len;
      19             : 
      20          12 :   if( rlen<12   ) return -1;
      21          12 :   if( (r[3]&15) ) return 0;
      22          12 :   uchar const * p = r+12;
      23          12 :   qdcount = r[4]*256 + r[5];
      24          12 :   ancount = r[6]*256 + r[7];
      25          21 :   while( qdcount-- ) {
      26          72 :     while( p-r < rlen && *p-1U < 127 ) p++;
      27          12 :     if( p-r>=rlen || p>r+rlen-5-!!*p )
      28           3 :       return -1;
      29           9 :     p += 5 + !!*p;
      30           9 :   }
      31          18 :   while( ancount-- ) {
      32           9 :     while( p-r < rlen && *p-1U < 127 ) p++;
      33           9 :     if( p>r+rlen-12 )
      34           0 :       return -1;
      35           9 :     p += 1 + !!*p;
      36           9 :     len = p[8]*256 + p[9];
      37           9 :     if( len+10 > r+rlen-p ) return -1;
      38           9 :     if( callback( ctx, p[1], p+10, len, r, rlen ) < 0 ) return -1;
      39           9 :     p += 10 + len;
      40           9 :   }
      41           9 :   return 0;
      42           9 : }

Generated by: LCOV version 1.14