2901. [port] Use AC_C_FLEXIBLE_ARRAY_MEMBER. [RT #21316]
This commit is contained in:
2
CHANGES
2
CHANGES
@@ -1,3 +1,5 @@
|
||||
2901. [port] Use AC_C_FLEXIBLE_ARRAY_MEMBER. [RT #21316]
|
||||
|
||||
2900. [bug] The placeholder negative caching element was not
|
||||
properly constructed triggering a INSIST in
|
||||
dns_ncache_towire(). [RT #21346]
|
||||
|
||||
11
config.h.in
11
config.h.in
@@ -16,7 +16,7 @@
|
||||
* PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
/* $Id: config.h.in,v 1.124 2010/05/12 08:25:21 marka Exp $ */
|
||||
/* $Id: config.h.in,v 1.126 2010/05/26 23:44:27 marka Exp $ */
|
||||
|
||||
/*! \file */
|
||||
|
||||
@@ -160,6 +160,15 @@ int sigwait(const unsigned int *set, int *sig);
|
||||
/* Solaris hack to get select_large_fdset. */
|
||||
#undef FD_SETSIZE
|
||||
|
||||
/* Define to nothing if C supports flexible array members, and to 1 if it does
|
||||
not. That way, with a declaration like `struct s { int n; double
|
||||
d[FLEXIBLE_ARRAY_MEMBER]; };', the struct hack can be used with pre-C99
|
||||
compilers. When computing the size of such an object, don't use 'sizeof
|
||||
(struct s)' as it overestimates the size. Use 'offsetof (struct s, d)'
|
||||
instead. Don't use 'offsetof (struct s, d[0])', as this doesn't work with
|
||||
MSVC and with C++ compilers. */
|
||||
#undef FLEXIBLE_ARRAY_MEMBER
|
||||
|
||||
/* Define to 1 if you have the `chroot' function. */
|
||||
#undef HAVE_CHROOT
|
||||
|
||||
|
||||
75
configure
vendored
75
configure
vendored
@@ -14,7 +14,7 @@
|
||||
# OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
||||
# PERFORMANCE OF THIS SOFTWARE.
|
||||
#
|
||||
# $Id: configure,v 1.475 2010/05/12 08:25:21 marka Exp $
|
||||
# $Id: configure,v 1.476 2010/05/19 07:13:15 marka Exp $
|
||||
#
|
||||
# Portions Copyright (C) 1996-2001 Nominum, Inc.
|
||||
#
|
||||
@@ -29,7 +29,7 @@
|
||||
# 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.
|
||||
# From configure.in Revision: 1.492 .
|
||||
# From configure.in Revision: 1.493 .
|
||||
# Guess values for system-dependent variables and create Makefiles.
|
||||
# Generated by GNU Autoconf 2.62.
|
||||
#
|
||||
@@ -21227,6 +21227,77 @@ _ACEOF
|
||||
fi
|
||||
|
||||
|
||||
{ $as_echo "$as_me:$LINENO: checking for flexible array members" >&5
|
||||
$as_echo_n "checking for flexible array members... " >&6; }
|
||||
if test "${ac_cv_c_flexmember+set}" = set; then
|
||||
$as_echo_n "(cached) " >&6
|
||||
else
|
||||
cat >conftest.$ac_ext <<_ACEOF
|
||||
/* confdefs.h. */
|
||||
_ACEOF
|
||||
cat confdefs.h >>conftest.$ac_ext
|
||||
cat >>conftest.$ac_ext <<_ACEOF
|
||||
/* end confdefs.h. */
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include <stddef.h>
|
||||
struct s { int n; double d[]; };
|
||||
int
|
||||
main ()
|
||||
{
|
||||
int m = getchar ();
|
||||
struct s *p = malloc (offsetof (struct s, d)
|
||||
+ m * sizeof (double));
|
||||
p->d[0] = 0.0;
|
||||
return p->d != (double *) NULL;
|
||||
;
|
||||
return 0;
|
||||
}
|
||||
_ACEOF
|
||||
rm -f conftest.$ac_objext
|
||||
if { (ac_try="$ac_compile"
|
||||
case "(($ac_try" in
|
||||
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
|
||||
*) ac_try_echo=$ac_try;;
|
||||
esac
|
||||
eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
|
||||
$as_echo "$ac_try_echo") >&5
|
||||
(eval "$ac_compile") 2>conftest.er1
|
||||
ac_status=$?
|
||||
grep -v '^ *+' conftest.er1 >conftest.err
|
||||
rm -f conftest.er1
|
||||
cat conftest.err >&5
|
||||
$as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
||||
(exit $ac_status); } && {
|
||||
test -z "$ac_c_werror_flag" ||
|
||||
test ! -s conftest.err
|
||||
} && test -s conftest.$ac_objext; then
|
||||
ac_cv_c_flexmember=yes
|
||||
else
|
||||
$as_echo "$as_me: failed program was:" >&5
|
||||
sed 's/^/| /' conftest.$ac_ext >&5
|
||||
|
||||
ac_cv_c_flexmember=no
|
||||
fi
|
||||
|
||||
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
|
||||
fi
|
||||
{ $as_echo "$as_me:$LINENO: result: $ac_cv_c_flexmember" >&5
|
||||
$as_echo "$ac_cv_c_flexmember" >&6; }
|
||||
if test $ac_cv_c_flexmember = yes; then
|
||||
|
||||
cat >>confdefs.h <<\_ACEOF
|
||||
#define FLEXIBLE_ARRAY_MEMBER /**/
|
||||
_ACEOF
|
||||
|
||||
else
|
||||
cat >>confdefs.h <<\_ACEOF
|
||||
#define FLEXIBLE_ARRAY_MEMBER 1
|
||||
_ACEOF
|
||||
|
||||
fi
|
||||
|
||||
|
||||
#
|
||||
# Older versions of HP/UX don't define seteuid() and setegid()
|
||||
#
|
||||
|
||||
@@ -18,7 +18,7 @@ AC_DIVERT_PUSH(1)dnl
|
||||
esyscmd([sed "s/^/# /" COPYRIGHT])dnl
|
||||
AC_DIVERT_POP()dnl
|
||||
|
||||
AC_REVISION($Revision: 1.492 $)
|
||||
AC_REVISION($Revision: 1.493 $)
|
||||
|
||||
AC_INIT(lib/dns/name.c)
|
||||
AC_PREREQ(2.59)
|
||||
@@ -282,6 +282,7 @@ AC_C_CONST
|
||||
AC_C_INLINE
|
||||
AC_C_VOLATILE
|
||||
AC_CHECK_FUNC(sysctlbyname, AC_DEFINE(HAVE_SYSCTLBYNAME))
|
||||
AC_C_FLEXIBLE_ARRAY_MEMBER
|
||||
|
||||
#
|
||||
# Older versions of HP/UX don't define seteuid() and setegid()
|
||||
|
||||
@@ -14,10 +14,12 @@
|
||||
* PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
/* $Id: client.c,v 1.9 2010/04/14 22:08:47 jinmei Exp $ */
|
||||
/* $Id: client.c,v 1.10 2010/05/19 07:09:25 marka Exp $ */
|
||||
|
||||
#include <config.h>
|
||||
|
||||
#include <stddef.h>
|
||||
|
||||
#include <isc/app.h>
|
||||
#include <isc/mem.h>
|
||||
#include <isc/mutex.h>
|
||||
@@ -2878,7 +2880,7 @@ typedef struct {
|
||||
dns_rdata_t rdata;
|
||||
size_t size;
|
||||
isc_mem_t * mctx;
|
||||
unsigned char data[0];
|
||||
unsigned char data[FLEXIBLE_ARRAY_MEMBER];
|
||||
} dns_client_updaterec_t;
|
||||
|
||||
isc_result_t
|
||||
@@ -2888,9 +2890,8 @@ dns_client_updaterec(dns_client_updateop_t op, dns_name_t *owner,
|
||||
dns_rdataset_t *rdataset, dns_rdatalist_t *rdatalist,
|
||||
dns_rdata_t *rdata, isc_mem_t *mctx)
|
||||
{
|
||||
dns_client_updaterec_t *updaterec;
|
||||
size_t size = sizeof(dns_client_updaterec_t);
|
||||
isc_buffer_t *b = NULL;
|
||||
dns_client_updaterec_t *updaterec = NULL;
|
||||
size_t size = offsetof(dns_client_updaterec_t, data);
|
||||
|
||||
REQUIRE(op < updateop_max);
|
||||
REQUIRE(owner != NULL);
|
||||
@@ -2919,16 +2920,15 @@ dns_client_updaterec(dns_client_updateop_t op, dns_name_t *owner,
|
||||
dns_rdataset_init(rdataset);
|
||||
dns_rdatalist_init(&updaterec->rdatalist);
|
||||
dns_rdata_init(&updaterec->rdata);
|
||||
isc_buffer_init(b, b + 1,
|
||||
size - sizeof(dns_client_updaterec_t));
|
||||
dns_name_copy(owner, target, b);
|
||||
isc_buffer_init(&updaterec->buffer, updaterec->data,
|
||||
size - offsetof(dns_client_updaterec_t, data));
|
||||
dns_name_copy(owner, target, &updaterec->buffer);
|
||||
if (source != NULL) {
|
||||
isc_region_t r;
|
||||
dns_rdata_clone(source, rdata);
|
||||
dns_rdata_toregion(rdata, &r);
|
||||
rdata->data = isc_buffer_used(b);
|
||||
isc_buffer_copyregion(b, &r);
|
||||
|
||||
rdata->data = isc_buffer_used(&updaterec->buffer);
|
||||
isc_buffer_copyregion(&updaterec->buffer, &r);
|
||||
}
|
||||
updaterec->mctx = NULL;
|
||||
isc_mem_attach(mctx, &updaterec->mctx);
|
||||
@@ -2968,9 +2968,9 @@ dns_client_updaterec(dns_client_updateop_t op, dns_name_t *owner,
|
||||
ISC_LIST_APPEND(rdatalist->rdata, rdata, link);
|
||||
dns_rdatalist_tordataset(rdatalist, rdataset);
|
||||
ISC_LIST_APPEND(target->list, rdataset, link);
|
||||
if (b != NULL) {
|
||||
if (updaterec != NULL) {
|
||||
target->attributes |= DNS_NAMEATTR_HASUPDATEREC;
|
||||
dns_name_setbuffer(target, b);
|
||||
dns_name_setbuffer(target, &updaterec->buffer);
|
||||
}
|
||||
if (op == updateop_add || op == updateop_delete)
|
||||
target->attributes |= DNS_NAMEATTR_UPDATE;
|
||||
|
||||
Reference in New Issue
Block a user