X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ian/git?a=blobdiff_plain;f=dns-transp-common.c;fp=dns-transp-common.c;h=4e8ce7a99f95e5fdbfb10885ecdd1d21e3c10218;hb=00844301bba023f14fb6b95b0d0c0457b7fc8ac1;hp=f0c56fb6fe75d6a7d427564e48551a39097f6b3f;hpb=286755cfbed07ad57f6f995d96464c106ef6fa4d;p=secnet.git 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 (;;) {