chiark
/
gitweb
/
~ian
/
secnet.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
WIP DNS bugfixes and debugging - dns-bitenc-test seems to work
[secnet.git]
/
dns-transp-common.c
diff --git
a/dns-transp-common.c
b/dns-transp-common.c
index f0c56fb6fe75d6a7d427564e48551a39097f6b3f..4e8ce7a99f95e5fdbfb10885ecdd1d21e3c10218 100644
(file)
--- 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);
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)
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;
}
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 (;;) {
{
uint8_t *out = outbuf;
for (;;) {