-3374. [bug] isc_parse_uint32 failed to return a range error on
- systems with 64 bit longs [RT #30232]
-
--- 9.7.7 released ---
3373. [bug] win32: open raw files in binary mode. [RT #30944]
/*
- * Copyright (C) 2004-2010, 2012 Internet Systems Consortium, Inc. ("ISC")
+ * Copyright (C) 2004-2010 Internet Systems Consortium, Inc. ("ISC")
* Copyright (C) 2000-2002 Internet Software Consortium.
*
* Permission to use, copy, modify, and/or distribute this software for any
/*
- * Portions Copyright (C) 2004-2012 Internet Systems Consortium, Inc. ("ISC")
+ * Portions Copyright (C) 2004-2011 Internet Systems Consortium, Inc. ("ISC")
* Portions Copyright (C) 1999-2003 Internet Software Consortium.
*
* Permission to use, copy, modify, and/or distribute this software for any
# This file must follow /bin/sh rules. It is imported directly via
# configure.
#
-SRCID="( 2012/09/13 00:15:00 UTC )"
+SRCID="( 2012/09/12 08:15:00 UTC )"
isc_file_bopenunique(char *templet, FILE **fp);
/*!<
* \brief Create and open a file with a unique name based on 'templet'.
- * isc_file_bopen*() open the file in binary mode in Windows.
- * isc_file_open*() open the file in text mode in Windows.
+ * isc_file_bopen*() open the file in binary mode in Windows.
+ * isc_file_open*() open the file in text mode in Windows.
*
* Notes:
*\li 'template' is a reserved work in C++. If you want to complain
/*
- * Copyright (C) 2004, 2005, 2007, 2012 Internet Systems Consortium, Inc. ("ISC")
+ * Copyright (C) 2004, 2005, 2007 Internet Systems Consortium, Inc. ("ISC")
* Copyright (C) 2001-2003 Internet Software Consortium.
*
* Permission to use, copy, modify, and/or distribute this software for any
isc_result_t
isc_parse_uint32(isc_uint32_t *uip, const char *string, int base) {
unsigned long n;
- isc_uint32_t r;
char *e;
if (! isalnum((unsigned char)(string[0])))
return (ISC_R_BADNUMBER);
n = strtoul(string, &e, base);
if (*e != '\0')
return (ISC_R_BADNUMBER);
- /*
- * Where long is 64 bits we need to convert to 32 bits then test for
- * equality. This is a no-op on 32 bit machines and a good compiler
- * will optimise it away.
- */
- r = (isc_uint32_t)n;
- if ((n == ULONG_MAX && errno == ERANGE) || (n != (unsigned long)r))
+ if (n == ULONG_MAX && errno == ERANGE)
return (ISC_R_RANGE);
- *uip = r;
+ *uip = n;
return (ISC_R_SUCCESS);
}
LIBS = @LIBS@ @ATFLIBS@
OBJS = isctest.@O@
-
-SRCS = isctest.c taskpool_test.c hash_test.c symtab_test.c \
- parse_test.c
+SRCS = isctest.c taskpool_test.c hash_test.c symtab_test.c
SUBDIRS =
-TARGETS = taskpool_test@EXEEXT@ hash_test@EXEEXT@ symtab_test@EXEEXT@ \
- parse_test@EXEEXT@
+TARGETS = taskpool_test@EXEEXT@ hash_test@EXEEXT@ symtab_test@EXEEXT@
@BIND9_MAKE_RULES@
${LIBTOOL_MODE_LINK} ${PURIFY} ${CC} ${CFLAGS} ${LDFLAGS} -o $@ \
symtab_test.@O@ isctest.@O@ ${ISCLIBS} ${LIBS}
-parse_test@EXEEXT@: parse_test.@O@ isctest.@O@ ${ISCDEPLIBS}
- ${LIBTOOL_MODE_LINK} ${PURIFY} ${CC} ${CFLAGS} ${LDFLAGS} -o $@ \
- parse_test.@O@ isctest.@O@ ${ISCLIBS} ${LIBS}
-
-
unit::
sh ${top_srcdir}/unit/unittest.sh
clean distclean::
rm -f ${TARGETS}
- rm -f atf.out
+++ /dev/null
-/*
- * Copyright (C) 2012 Internet Systems Consortium, Inc. ("ISC")
- *
- * Permission to use, copy, modify, and/or distribute this software for any
- * purpose with or without fee is hereby granted, provided that the above
- * copyright notice and this permission notice appear in all copies.
- *
- * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH
- * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
- * AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT,
- * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
- * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
- * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- * PERFORMANCE OF THIS SOFTWARE.
- */
-
-/*! \file */
-
-#include <config.h>
-
-#include <atf-c.h>
-
-#include <unistd.h>
-#include <time.h>
-
-#include <isc/parseint.h>
-
-#include "isctest.h"
-
-/*
- * Individual unit tests
- */
-
-/* Test for 32 bit overflow on 64 bit machines in isc_parse_uint32 */
-ATF_TC(parse_overflow);
-ATF_TC_HEAD(parse_overflow, tc) {
- atf_tc_set_md_var(tc, "descr", "Check for 32 bit overflow");
-}
-ATF_TC_BODY(parse_overflow, tc) {
- isc_result_t result;
- isc_uint32_t output;
- UNUSED(tc);
-
- result = isc_test_begin(NULL);
- ATF_REQUIRE_EQ(result, ISC_R_SUCCESS);
-
- result = isc_parse_uint32(&output, "1234567890", 10);
- ATF_CHECK_EQ(1234567890, output);
-
- result = isc_parse_uint32(&output, "123456789012345", 10);
- ATF_CHECK_EQ(ISC_R_RANGE, result);
-
- result = isc_parse_uint32(&output, "12345678901234567890", 10);
- ATF_CHECK_EQ(ISC_R_RANGE, result);
-
- isc_test_end();
-}
-
-/*
- * Main
- */
-ATF_TP_ADD_TCS(tp) {
- ATF_TP_ADD_TC(tp, parse_overflow);
-
- return (atf_no_error());
-}
-
./bin/Makefile.in MAKE 1998,1999,2000,2001,2004,2007,2009,2012
./bin/check/.gitignore X 2012
./bin/check/Makefile.in MAKE 2000,2001,2002,2003,2004,2005,2006,2007,2009,2012
-./bin/check/check-tool.c C 2000,2001,2002,2004,2005,2006,2007,2008,2009,2010,2012
+./bin/check/check-tool.c C 2000,2001,2002,2004,2005,2006,2007,2008,2009,2010
./bin/check/check-tool.h C 2000,2001,2002,2004,2005,2007,2010
./bin/check/named-checkconf.8 MAN DOCBOOK
./bin/check/named-checkconf.c C 1999,2000,2001,2002,2004,2005,2006,2007,2009,2010,2011
./bin/dnssec/dnssec-settime.docbook SGML 2009,2010,2011
./bin/dnssec/dnssec-settime.html HTML DOCBOOK
./bin/dnssec/dnssec-signzone.8 MAN DOCBOOK
-./bin/dnssec/dnssec-signzone.c C.NAI 1999,2000,2001,2002,2003,2004,2005,2006,2007,2008,2009,2010,2011,2012
+./bin/dnssec/dnssec-signzone.c C.NAI 1999,2000,2001,2002,2003,2004,2005,2006,2007,2008,2009,2010,2011
./bin/dnssec/dnssec-signzone.docbook SGML 2000,2001,2002,2003,2004,2005,2006,2007,2008,2009
./bin/dnssec/dnssec-signzone.html HTML DOCBOOK
./bin/dnssec/dnssectool.c C 2000,2001,2003,2004,2005,2007,2009,2010,2011
./lib/isc/nothreads/mutex.c C 2000,2001,2004,2006,2007
./lib/isc/nothreads/thread.c C 2000,2001,2004,2007
./lib/isc/ondestroy.c C 2000,2001,2004,2005,2007
-./lib/isc/parseint.c C 2001,2002,2003,2004,2005,2007,2012
+./lib/isc/parseint.c C 2001,2002,2003,2004,2005,2007
./lib/isc/portset.c C 2008
./lib/isc/powerpc/Makefile.in MAKE 2007,2012
./lib/isc/powerpc/include/Makefile.in MAKE 2007,2012
./lib/isc/tests/hash_test.c C 2011,2012
./lib/isc/tests/isctest.c C 2011,2012
./lib/isc/tests/isctest.h C 2011,2012
-./lib/isc/tests/parse_test.c C 2012
./lib/isc/tests/symtab_test.c C 2011,2012
./lib/isc/tests/taskpool_test.c C 2011,2012
./lib/isc/timer.c C 1998,1999,2000,2001,2002,2004,2005,2007,2008,2009,2011,2012