262 lines
9.4 KiB
Diff
262 lines
9.4 KiB
Diff
|
Index: lib/isc/mem.c
|
||
|
===================================================================
|
||
|
RCS file: /var/snap/bind9/lib/isc/mem.c,v
|
||
|
retrieving revision 1.145
|
||
|
retrieving revision 1.145.120.4
|
||
|
diff -u -p -r1.145 -r1.145.120.4
|
||
|
--- lib/isc/mem.c 2 Apr 2008 02:37:42 -0000 1.145
|
||
|
+++ lib/isc/mem.c 16 Feb 2009 03:17:05 -0000 1.145.120.4
|
||
|
@@ -1,5 +1,5 @@
|
||
|
/*
|
||
|
- * Copyright (C) 2004-2008 Internet Systems Consortium, Inc. ("ISC")
|
||
|
+ * Copyright (C) 2004-2009 Internet Systems Consortium, Inc. ("ISC")
|
||
|
* Copyright (C) 1997-2003 Internet Software Consortium.
|
||
|
*
|
||
|
* Permission to use, copy, modify, and/or distribute this software for any
|
||
|
@@ -15,7 +15,7 @@
|
||
|
* PERFORMANCE OF THIS SOFTWARE.
|
||
|
*/
|
||
|
|
||
|
-/* $Id: bind-96-realloc.patch,v 1.1 2009/03/04 09:27:48 atkac Exp $ */
|
||
|
+/* $Id: bind-96-realloc.patch,v 1.1 2009/03/04 09:27:48 atkac Exp $ */
|
||
|
|
||
|
/*! \file */
|
||
|
|
||
|
@@ -52,7 +52,7 @@ LIBISC_EXTERNAL_DATA unsigned int isc_me
|
||
|
|
||
|
#define DEF_MAX_SIZE 1100
|
||
|
#define DEF_MEM_TARGET 4096
|
||
|
-#define ALIGNMENT_SIZE 8 /*%< must be a power of 2 */
|
||
|
+#define ALIGNMENT_SIZE 8U /*%< must be a power of 2 */
|
||
|
#define NUM_BASIC_BLOCKS 64 /*%< must be > 1 */
|
||
|
#define TABLE_INCREMENT 1024
|
||
|
#define DEBUGLIST_COUNT 1024
|
||
|
@@ -1191,7 +1191,7 @@ print_active(isc_mem_t *mctx, FILE *out)
|
||
|
const char *format;
|
||
|
isc_boolean_t found;
|
||
|
|
||
|
- fprintf(out, isc_msgcat_get(isc_msgcat, ISC_MSGSET_MEM,
|
||
|
+ fprintf(out, "%s", isc_msgcat_get(isc_msgcat, ISC_MSGSET_MEM,
|
||
|
ISC_MSG_DUMPALLOC,
|
||
|
"Dump of all outstanding "
|
||
|
"memory allocations:\n"));
|
||
|
@@ -1217,7 +1217,7 @@ print_active(isc_mem_t *mctx, FILE *out)
|
||
|
}
|
||
|
}
|
||
|
if (!found)
|
||
|
- fprintf(out, isc_msgcat_get(isc_msgcat, ISC_MSGSET_MEM,
|
||
|
+ fprintf(out, "%s", isc_msgcat_get(isc_msgcat, ISC_MSGSET_MEM,
|
||
|
ISC_MSG_NONE, "\tNone.\n"));
|
||
|
}
|
||
|
}
|
||
|
@@ -1259,7 +1259,7 @@ isc_mem_stats(isc_mem_t *ctx, FILE *out)
|
||
|
*/
|
||
|
pool = ISC_LIST_HEAD(ctx->pools);
|
||
|
if (pool != NULL) {
|
||
|
- fprintf(out, isc_msgcat_get(isc_msgcat, ISC_MSGSET_MEM,
|
||
|
+ fprintf(out, "%s", isc_msgcat_get(isc_msgcat, ISC_MSGSET_MEM,
|
||
|
ISC_MSG_POOLSTATS,
|
||
|
"[Pool statistics]\n"));
|
||
|
fprintf(out, "%15s %10s %10s %10s %10s %10s %10s %10s %1s\n",
|
||
|
@@ -1365,6 +1365,40 @@ isc__mem_allocate(isc_mem_t *ctx, size_t
|
||
|
return (si);
|
||
|
}
|
||
|
|
||
|
+void *
|
||
|
+isc__mem_reallocate(isc_mem_t *ctx, void *ptr, size_t size FLARG) {
|
||
|
+ void *new_ptr = NULL;
|
||
|
+ size_t oldsize, copysize;
|
||
|
+
|
||
|
+ REQUIRE(VALID_CONTEXT(ctx));
|
||
|
+
|
||
|
+ /*
|
||
|
+ * This function emulates the realloc(3) standard library function:
|
||
|
+ * - if size > 0, allocate new memory; and if ptr is non NULL, copy
|
||
|
+ * as much of the old contents to the new buffer and free the old one.
|
||
|
+ * Note that when allocation fails the original pointer is intact;
|
||
|
+ * the caller must free it.
|
||
|
+ * - if size is 0 and ptr is non NULL, simply free the given ptr.
|
||
|
+ * - this function returns:
|
||
|
+ * pointer to the newly allocated memory, or
|
||
|
+ * NULL if allocation fails or doesn't happen.
|
||
|
+ */
|
||
|
+ if (size > 0U) {
|
||
|
+ new_ptr = isc__mem_allocate(ctx, size FLARG_PASS);
|
||
|
+ if (new_ptr != NULL && ptr != NULL) {
|
||
|
+ oldsize = (((size_info *)ptr)[-1]).u.size;
|
||
|
+ INSIST(oldsize >= ALIGNMENT_SIZE);
|
||
|
+ oldsize -= ALIGNMENT_SIZE;
|
||
|
+ copysize = oldsize > size ? size : oldsize;
|
||
|
+ memcpy(new_ptr, ptr, copysize);
|
||
|
+ isc__mem_free(ctx, ptr FLARG_PASS);
|
||
|
+ }
|
||
|
+ } else if (ptr != NULL)
|
||
|
+ isc__mem_free(ctx, ptr FLARG_PASS);
|
||
|
+
|
||
|
+ return (new_ptr);
|
||
|
+}
|
||
|
+
|
||
|
void
|
||
|
isc__mem_free(isc_mem_t *ctx, void *ptr FLARG) {
|
||
|
size_info *si;
|
||
|
Index: lib/isc/include/isc/mem.h
|
||
|
===================================================================
|
||
|
RCS file: /var/snap/bind9/lib/isc/include/isc/mem.h,v
|
||
|
retrieving revision 1.78
|
||
|
retrieving revision 1.78.120.3
|
||
|
diff -u -p -r1.78 -r1.78.120.3
|
||
|
--- lib/isc/include/isc/mem.h 31 Mar 2008 05:00:30 -0000 1.78
|
||
|
+++ lib/isc/include/isc/mem.h 11 Feb 2009 03:07:01 -0000 1.78.120.3
|
||
|
@@ -1,5 +1,5 @@
|
||
|
/*
|
||
|
- * Copyright (C) 2004-2008 Internet Systems Consortium, Inc. ("ISC")
|
||
|
+ * Copyright (C) 2004-2009 Internet Systems Consortium, Inc. ("ISC")
|
||
|
* Copyright (C) 1997-2001 Internet Software Consortium.
|
||
|
*
|
||
|
* Permission to use, copy, modify, and/or distribute this software for any
|
||
|
@@ -15,7 +15,7 @@
|
||
|
* PERFORMANCE OF THIS SOFTWARE.
|
||
|
*/
|
||
|
|
||
|
-/* $Id: bind-96-realloc.patch,v 1.1 2009/03/04 09:27:48 atkac Exp $ */
|
||
|
+/* $Id: bind-96-realloc.patch,v 1.1 2009/03/04 09:27:48 atkac Exp $ */
|
||
|
|
||
|
#ifndef ISC_MEM_H
|
||
|
#define ISC_MEM_H 1
|
||
|
@@ -94,7 +94,7 @@ LIBISC_EXTERNAL_DATA extern unsigned int
|
||
|
/*!<
|
||
|
* The variable isc_mem_debugging holds a set of flags for
|
||
|
* turning certain memory debugging options on or off at
|
||
|
- * runtime. Its is intialized to the value ISC_MEM_DEGBUGGING,
|
||
|
+ * runtime. It is initialized to the value ISC_MEM_DEGBUGGING,
|
||
|
* which is 0 by default but may be overridden at compile time.
|
||
|
* The following flags can be specified:
|
||
|
*
|
||
|
@@ -106,7 +106,7 @@ LIBISC_EXTERNAL_DATA extern unsigned int
|
||
|
* Crash if a free doesn't match an allocation.
|
||
|
*
|
||
|
* \li #ISC_MEM_DEBUGUSAGE
|
||
|
- * If a hi_water mark is set, print the maximium inuse memory
|
||
|
+ * If a hi_water mark is set, print the maximum inuse memory
|
||
|
* every time it is raised once it exceeds the hi_water mark.
|
||
|
*
|
||
|
* \li #ISC_MEM_DEBUGSIZE
|
||
|
@@ -154,11 +154,12 @@ LIBISC_EXTERNAL_DATA extern unsigned int
|
||
|
|
||
|
#define isc_mem_get(c, s) isc__mem_get((c), (s) _ISC_MEM_FILELINE)
|
||
|
#define isc_mem_allocate(c, s) isc__mem_allocate((c), (s) _ISC_MEM_FILELINE)
|
||
|
+#define isc_mem_reallocate(c, p, s) isc__mem_reallocate((c), (p), (s) _ISC_MEM_FILELINE)
|
||
|
#define isc_mem_strdup(c, p) isc__mem_strdup((c), (p) _ISC_MEM_FILELINE)
|
||
|
#define isc_mempool_get(c) isc__mempool_get((c) _ISC_MEM_FILELINE)
|
||
|
|
||
|
/*%
|
||
|
- * isc_mem_putanddetach() is a convienence function for use where you
|
||
|
+ * isc_mem_putanddetach() is a convenience function for use where you
|
||
|
* have a structure with an attached memory context.
|
||
|
*
|
||
|
* Given:
|
||
|
@@ -341,12 +342,12 @@ isc_mem_setwater(isc_mem_t *mctx, isc_me
|
||
|
*
|
||
|
* When the memory usage of 'mctx' exceeds 'hiwater',
|
||
|
* '(water)(water_arg, #ISC_MEM_HIWATER)' will be called. 'water' needs to
|
||
|
- * call isc_mem_waterack() with #ISC_MEM_HIWATER to acknowlege the state
|
||
|
+ * call isc_mem_waterack() with #ISC_MEM_HIWATER to acknowledge the state
|
||
|
* change. 'water' may be called multiple times.
|
||
|
*
|
||
|
* When the usage drops below 'lowater', 'water' will again be called, this
|
||
|
* time with #ISC_MEM_LOWATER. 'water' need to calls isc_mem_waterack() with
|
||
|
- * #ISC_MEM_LOWATER to acknowlege the change.
|
||
|
+ * #ISC_MEM_LOWATER to acknowledge the change.
|
||
|
*
|
||
|
* static void
|
||
|
* water(void *arg, int mark) {
|
||
|
@@ -373,7 +374,7 @@ isc_mem_setwater(isc_mem_t *mctx, isc_me
|
||
|
void
|
||
|
isc_mem_waterack(isc_mem_t *ctx, int mark);
|
||
|
/*%<
|
||
|
- * Called to acknowledge changes in signalled by calls to 'water'.
|
||
|
+ * Called to acknowledge changes in signaled by calls to 'water'.
|
||
|
*/
|
||
|
|
||
|
void
|
||
|
@@ -512,7 +513,7 @@ isc_mempool_associatelock(isc_mempool_t
|
||
|
* and it is also used to set or get internal state via the isc_mempool_get*()
|
||
|
* and isc_mempool_set*() set of functions.
|
||
|
*
|
||
|
- * Mutiple pools can each share a single lock. For instance, if "manager"
|
||
|
+ * Multiple pools can each share a single lock. For instance, if "manager"
|
||
|
* type object contained pools for various sizes of events, and each of
|
||
|
* these pools used a common lock. Note that this lock must NEVER be used
|
||
|
* by other than mempool routines once it is given to a pool, since that can
|
||
|
@@ -612,6 +613,8 @@ void
|
||
|
isc__mem_put(isc_mem_t *, void *, size_t _ISC_MEM_FLARG);
|
||
|
void *
|
||
|
isc__mem_allocate(isc_mem_t *, size_t _ISC_MEM_FLARG);
|
||
|
+void *
|
||
|
+isc__mem_reallocate(isc_mem_t *, void *, size_t _ISC_MEM_FLARG);
|
||
|
void
|
||
|
isc__mem_free(isc_mem_t *, void * _ISC_MEM_FLARG);
|
||
|
char *
|
||
|
Index: lib/dns/openssl_link.c
|
||
|
===================================================================
|
||
|
RCS file: /var/snap/bind9/lib/dns/openssl_link.c,v
|
||
|
retrieving revision 1.22
|
||
|
retrieving revision 1.22.112.3
|
||
|
diff -u -p -r1.22 -r1.22.112.3
|
||
|
--- lib/dns/openssl_link.c 5 Apr 2008 23:47:11 -0000 1.22
|
||
|
+++ lib/dns/openssl_link.c 11 Feb 2009 03:07:01 -0000 1.22.112.3
|
||
|
@@ -1,5 +1,5 @@
|
||
|
/*
|
||
|
- * Portions Copyright (C) 2004-2008 Internet Systems Consortium, Inc. ("ISC")
|
||
|
+ * Portions Copyright (C) 2004-2009 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
|
||
|
@@ -31,7 +31,7 @@
|
||
|
|
||
|
/*
|
||
|
* Principal Author: Brian Wellington
|
||
|
- * $Id: bind-96-realloc.patch,v 1.1 2009/03/04 09:27:48 atkac Exp $
|
||
|
+ * $Id: bind-96-realloc.patch,v 1.1 2009/03/04 09:27:48 atkac Exp $
|
||
|
*/
|
||
|
#ifdef OPENSSL
|
||
|
|
||
|
@@ -148,18 +148,8 @@ mem_free(void *ptr) {
|
||
|
|
||
|
static void *
|
||
|
mem_realloc(void *ptr, size_t size) {
|
||
|
- void *p;
|
||
|
-
|
||
|
INSIST(dst__memory_pool != NULL);
|
||
|
- p = NULL;
|
||
|
- if (size > 0U) {
|
||
|
- p = mem_alloc(size);
|
||
|
- if (p != NULL && ptr != NULL)
|
||
|
- memcpy(p, ptr, size);
|
||
|
- }
|
||
|
- if (ptr != NULL)
|
||
|
- mem_free(ptr);
|
||
|
- return (p);
|
||
|
+ return (isc_mem_reallocate(dst__memory_pool, ptr, size));
|
||
|
}
|
||
|
|
||
|
isc_result_t
|
||
|
@@ -252,7 +242,7 @@ dst__openssl_init() {
|
||
|
for (e = ENGINE_get_first(); e != NULL; e = ENGINE_get_next(e)) {
|
||
|
|
||
|
/*
|
||
|
- * Something wierd here. If we call ENGINE_finish()
|
||
|
+ * Something weird here. If we call ENGINE_finish()
|
||
|
* ENGINE_get_default_RAND() will fail.
|
||
|
*/
|
||
|
if (ENGINE_init(e)) {
|
||
|
@@ -386,7 +376,7 @@ dst__openssl_setdefault(const char *name
|
||
|
*
|
||
|
* 'engine_id' is the openssl engine name.
|
||
|
*
|
||
|
- * pre_cmds and post_cmds a sequence if command arguement pairs
|
||
|
+ * pre_cmds and post_cmds a sequence if command argument pairs
|
||
|
* pre_num and post_num are a count of those pairs.
|
||
|
*
|
||
|
* "SO_PATH", PKCS11_SO_PATH ("/usr/local/lib/engines/engine_pkcs11.so")
|