diff options
author | Tom Yu <tlyu@mit.edu> | 2004-10-19 18:09:53 +0000 |
---|---|---|
committer | Tom Yu <tlyu@mit.edu> | 2004-10-19 18:09:53 +0000 |
commit | 26d825e9680a00910a1e3330dc81f14138c2785a (patch) | |
tree | 9f95c1e3daf946af523ff7a61cf1bfc71309422b | |
parent | f5732483111eff48b3b052c6264a54cf452f4ba2 (diff) | |
download | krb5-26d825e9680a00910a1e3330dc81f14138c2785a.zip krb5-26d825e9680a00910a1e3330dc81f14138c2785a.tar.gz krb5-26d825e9680a00910a1e3330dc81f14138c2785a.tar.bz2 |
* dnsglue.c (initparse): Skip query type and class when we lack
ns_initparse().
(krb5int_dns_nextans) [!HAVE_NS_INITPARSE]: Pass correct pointer
to dn_skipname(). Actually skip the RR name.
git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@16831 dc483132-0cff-0310-8789-dd5450dbe970
-rw-r--r-- | src/lib/krb5/os/ChangeLog | 7 | ||||
-rw-r--r-- | src/lib/krb5/os/dnsglue.c | 8 |
2 files changed, 12 insertions, 3 deletions
diff --git a/src/lib/krb5/os/ChangeLog b/src/lib/krb5/os/ChangeLog index f42d83b..8282280 100644 --- a/src/lib/krb5/os/ChangeLog +++ b/src/lib/krb5/os/ChangeLog @@ -1,3 +1,10 @@ +2004-10-19 Tom Yu <tlyu@mit.edu> + + * dnsglue.c (initparse): Skip query type and class when we lack + ns_initparse(). + (krb5int_dns_nextans) [!HAVE_NS_INITPARSE]: Pass correct pointer + to dn_skipname(). Actually skip the RR name. + 2004-10-18 Ken Raeburn <raeburn@mit.edu> * Makefile.in (TEST_PROGS): Add t_locate_kdc. diff --git a/src/lib/krb5/os/dnsglue.c b/src/lib/krb5/os/dnsglue.c index 4bf5e0a..dba1b86 100644 --- a/src/lib/krb5/os/dnsglue.c +++ b/src/lib/krb5/os/dnsglue.c @@ -238,9 +238,9 @@ initparse(struct krb5int_dns_state *ds) len = dn_expand(ds->ansp, (unsigned char *)ds->ansp + ds->anslen, p, host, sizeof(host)); #endif - if (len < 0 || !INCR_OK(ds->ansp, ds->anslen, p, len)) + if (len < 0 || !INCR_OK(ds->ansp, ds->anslen, p, len + 4)) return -1; - p += len; + p += len + 4; } ds->ptr = p; ds->nanswers = nanswers; @@ -269,13 +269,14 @@ krb5int_dns_nextans(struct krb5int_dns_state *ds, while (ds->nanswers--) { #if HAVE_DN_SKIPNAME - len = dn_skipname(ds->ansp, (unsigned char *)ds->ansp + ds->anslen); + len = dn_skipname(p, (unsigned char *)ds->ansp + ds->anslen); #else len = dn_expand(ds->ansp, (unsigned char *)ds->ansp + ds->anslen, p, host, sizeof(host)); #endif if (len < 0 || !INCR_OK(ds->ansp, ds->anslen, p, len)) return -1; + p += len; SAFE_GETUINT16(ds->ansp, ds->anslen, p, 2, ntype, out); /* Also skip 4 bytes of TTL */ SAFE_GETUINT16(ds->ansp, ds->anslen, p, 6, nclass, out); @@ -291,6 +292,7 @@ krb5int_dns_nextans(struct krb5int_dns_state *ds, ds->ptr = p + rdlen; return 0; } + p += rdlen; } return 0; out: |