From 00844301bba023f14fb6b95b0d0c0457b7fc8ac1 Mon Sep 17 00:00:00 2001 From: Ian Jackson Date: Mon, 1 Aug 2011 15:19:02 +0100 Subject: [PATCH] WIP DNS bugfixes and debugging - dns-bitenc-test seems to work --- dns-bitenc-test.c | 9 +++++---- dns-transp-common.c | 10 +++++----- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/dns-bitenc-test.c b/dns-bitenc-test.c index 972542c..4191eeb 100644 --- a/dns-bitenc-test.c +++ b/dns-bitenc-test.c @@ -25,8 +25,8 @@ int main(int argc, const char **argv) { for (;;) { const char *arg = *++argv; if (!strcmp(arg,"b")) { - int bits=atoi(*++argv); uint32_t val=strtoul(*++argv,0,0); + int bits=atoi(*++argv); dnsdomainenc_addbits(&enc,val,bits); } else if (!strcmp(arg,"w")) { uint32_t val=strtoul(*++argv,0,0); @@ -61,13 +61,14 @@ int main(int argc, const char **argv) { for (;;) { const char *arg = *++argv; if (!strcmp(arg,"b")) { - int bits=atoi(*++argv); ++argv; + int bits=atoi(*++argv); uint32_t val=dnsdomaindec_getbits(&dec,bits); - printf("b %d 0x%"PRIx32, bits, val); + printf("b %d 0x%"PRIx32"\n", bits, val); } else if (!strcmp(arg,"w")) { + ++argv; uint32_t val=dnsdomaindec_getu32(&dec); - printf("w 0x%"PRIx32, val); + printf("w 0x%"PRIx32"\n", val); } else if (!strcmp(arg,"r")) { ++argv; uint8_t rbuf[MAX_DOMAIN_BYTES]; diff --git a/dns-transp-common.c b/dns-transp-common.c index f0c56fb..4e8ce7a 100644 --- a/dns-transp-common.c +++ b/dns-transp-common.c @@ -232,10 +232,9 @@ uint32_t dnsdomaindec_getbits(struct dnsdomaindec *bd, int nbits) assert(nbits<=28); while (bd->npending < nbits) inputchar(bd); - int newnpending = bd->pending - nbits; - uint32_t rv = bd->pending >> newnpending; - bd->pending &= ((uint32_t)1 << newnpending)-1; - bd->npending = newnpending; + uint32_t rv = bd->pending & (((uint32_t)1 << nbits)-1); + bd->pending >>= nbits; + bd->npending -= nbits; return rv; } uint32_t dnsdomaindec_getu32(struct dnsdomaindec *bd) @@ -244,7 +243,8 @@ uint32_t dnsdomaindec_getu32(struct dnsdomaindec *bd) uint32_t msw=dnsdomaindec_getbits(bd,16); return (msw << 16) | lsw; } -int dnsdomaindec_restbytes(struct dnsdomaindec *bd, uint8_t outbuf[MAX_DOMAIN_BYTES]) +int dnsdomaindec_restbytes(struct dnsdomaindec *bd, + uint8_t outbuf[MAX_DOMAIN_BYTES]) { uint8_t *out = outbuf; for (;;) { -- 2.30.2