diff options
author | Stefan Metzmacher <metze@samba.org> | 2009-07-02 10:48:24 +0200 |
---|---|---|
committer | Andrew Tridgell <tridge@samba.org> | 2009-07-02 23:18:42 +1000 |
commit | f1dbd58a99a5dc47065f3ad6d248150600586ac7 (patch) | |
tree | eb14759e5bd563068ed8ad3749bef887ceb2823e /lib/talloc | |
parent | 0fcd465340a190578723ffa8597e2b8df1400b30 (diff) | |
download | samba-f1dbd58a99a5dc47065f3ad6d248150600586ac7.tar.gz samba-f1dbd58a99a5dc47065f3ad6d248150600586ac7.tar.bz2 samba-f1dbd58a99a5dc47065f3ad6d248150600586ac7.zip |
talloc: change TALLOC_MAGIC for version 2.0.0
metze
Diffstat (limited to 'lib/talloc')
-rw-r--r-- | lib/talloc/talloc.c | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/lib/talloc/talloc.c b/lib/talloc/talloc.c index e68b6539dc..a23df38b56 100644 --- a/lib/talloc/talloc.c +++ b/lib/talloc/talloc.c @@ -57,7 +57,9 @@ #define MAX_TALLOC_SIZE 0x10000000 -#define TALLOC_MAGIC 0xe814ec70 +#define TALLOC_MAGIC_V1 0xe814ec70 +#define TALLOC_MAGIC_V2 0xe814ec80 +#define TALLOC_MAGIC TALLOC_MAGIC_V2 #define TALLOC_FLAG_FREE 0x01 #define TALLOC_FLAG_LOOP 0x02 #define TALLOC_FLAG_POOL 0x04 /* This is a talloc pool */ @@ -155,6 +157,11 @@ static void talloc_abort(const char *reason) talloc_abort_fn(reason); } +static void talloc_abort_magic_v1(void) +{ + talloc_abort("Bad talloc magic value - old magic v1 used"); +} + static void talloc_abort_double_free(void) { talloc_abort("Bad talloc magic value - double free"); @@ -171,6 +178,10 @@ static inline struct talloc_chunk *talloc_chunk_from_ptr(const void *ptr) const char *pp = (const char *)ptr; struct talloc_chunk *tc = discard_const_p(struct talloc_chunk, pp - TC_HDR_SIZE); if (unlikely((tc->flags & (TALLOC_FLAG_FREE | ~0xF)) != TALLOC_MAGIC)) { + if ((tc->flags & (~0xF)) == TALLOC_MAGIC_V1) { + talloc_abort_magic_v1(); + } + if (tc->flags & TALLOC_FLAG_FREE) { talloc_abort_double_free(); } else { |