X-Git-Url: https://git.distorted.org.uk/~mdw/adns/blobdiff_plain/9e04ed8374746d9b069ecff9ecad499e5f10b9c4..HEAD:/src/types.c diff --git a/src/types.c b/src/types.c index ab97801..a4478fa 100644 --- a/src/types.c +++ b/src/types.c @@ -4,14 +4,15 @@ */ /* * This file is part of adns, which is - * Copyright (C) 1997-2000,2003,2006 Ian Jackson + * Copyright (C) 1997-2000,2003,2006,2014-2016 Ian Jackson + * Copyright (C) 2014 Mark Wooding * Copyright (C) 1999-2000,2003,2006 Tony Finch * Copyright (C) 1991 Massachusetts Institute of Technology * (See the file INSTALL for full details.) * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) + * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, @@ -20,8 +21,7 @@ * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software Foundation, - * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * along with this program; if not, write to the Free Software Foundation. */ #include @@ -579,11 +579,11 @@ static adns_status addr_submit(adns_query parent, adns_query *query_r, * available record types. The memory management and callback rules are * the same as for adns__internal_submit. * - * Some differences: the query is linked onto the parent's children list - * before exit (though the parent's state is not changed, and it is not - * linked into the childw list queue); and we fiddle with the `tinfo' - * portion of the context structure (yes, modifying *ctx), since this is, - * in fact, the main purpose of this function. + * Some differences: the query is linked onto the parent's children + * list before exit (though the parent's state is not changed, and + * it is not linked into the childw list queue); and we set the + * `tinfo' portion of the context structure (yes, modifying *ctx), + * since this is, in fact, the main purpose of this function. */ adns_state ads= parent->ads; @@ -892,6 +892,7 @@ static void icb_hostaddr(adns_query parent, adns_query child) { done: if (st) { adns__free_interim(parent, rrp->addrs); + rrp->addrs = 0; rrp->naddrs= (st>0 && st<=adns_s_max_tempfail) ? -1 : 0; } @@ -1693,6 +1694,10 @@ DEEP_TYPE(unknown,0, "unknown",byteblock,opaque, 0, opaque ); const typeinfo *adns__findtype(adns_rrtype type) { const typeinfo *begin, *end, *mid; + if (type & ~(adns_rrtype)0x63ffffff) + /* 0x60000000 is reserved for `harmless' future expansion */ + return 0; + if (type & adns_r_unknown) return &typeinfo_unknown; type &= adns_rrt_reprmask;