chiark / gitweb /
WIP DNS bugfixes and debugging - dns-bitenc-test seems to work
[secnet.git] / dns-transp-common.c
index f0c56fb6fe75d6a7d427564e48551a39097f6b3f..4e8ce7a99f95e5fdbfb10885ecdd1d21e3c10218 100644 (file)
@@ -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 (;;) {