X-Git-Url: https://git.distorted.org.uk/~mdw/adns/blobdiff_plain/6b7c4ef06f1268321f02f6915538b2bfd1dd9dd5..8b9cc94c86219c75366c091e8a604d3420c155a0:/src/query.c?ds=inline diff --git a/src/query.c b/src/query.c index cf85bcf..ff56fc3 100644 --- a/src/query.c +++ b/src/query.c @@ -6,14 +6,15 @@ */ /* * This file is part of adns, which is - * Copyright (C) 1997-2000,2003,2006 Ian Jackson + * Copyright (C) 1997-2000,2003,2006,2014 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, @@ -22,8 +23,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 "internal.h" @@ -275,6 +275,12 @@ int adns_submit(adns_state ads, adns__consistency(ads,0,cc_entex); + if (flags & ~(adns_queryflags)0x4009ffff) + /* 0x40080000 are reserved for `harmless' future expansion + * 0x00000020 used to be adns_qf_quoteok_cname, now the default; + * see also addrfam.c:textaddr_check_qf */ + return ENOSYS; + typei= adns__findtype(type); if (!typei) return ENOSYS; @@ -410,7 +416,7 @@ void *adns__alloc_preserved(adns_query qu, size_t sz) { return rv; } -static allocnode *alloc_info(adns_query qu, void *p, size_t *sz_r) { +static allocnode *alloc__info(adns_query qu, void *p, size_t *sz_r) { allocnode *an; if (!p || p == qu) { *sz_r= 0; return 0; } @@ -421,13 +427,14 @@ static allocnode *alloc_info(adns_query qu, void *p, size_t *sz_r) { void adns__free_interim(adns_query qu, void *p) { size_t sz; - allocnode *an= alloc_info(qu, p, &sz); + allocnode *an= alloc__info(qu, p, &sz); if (!an) return; assert(!qu->final_allocspace); LIST_UNLINK(qu->allocations, an); free(an); qu->interim_allocd -= sz; + assert(!qu->interim_allocd >= 0); } void *adns__alloc_mine(adns_query qu, size_t sz) { @@ -436,7 +443,7 @@ void *adns__alloc_mine(adns_query qu, size_t sz) { void adns__transfer_interim(adns_query from, adns_query to, void *block) { size_t sz; - allocnode *an= alloc_info(from, block, &sz); + allocnode *an= alloc__info(from, block, &sz); if (!an) return;