From f2c0fc1cb5887e85f4b3baf17e2b9cde42aa951a Mon Sep 17 00:00:00 2001 From: Richard Mudgett Date: Wed, 23 Jan 2013 00:19:40 +0000 Subject: [PATCH] Attempt to be more helpful when using a bad ao2 object pointer. Backport of -r360626 with some enhancements. Put the external obj pointer in the message instead of the internal version. git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@379963 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- main/astobj2.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/main/astobj2.c b/main/astobj2.c index 02fff97f22..c390198686 100644 --- a/main/astobj2.c +++ b/main/astobj2.c @@ -117,9 +117,16 @@ static inline struct astobj2 *INTERNAL_OBJ(void *user_data) } p = (struct astobj2 *) ((char *) user_data - sizeof(*p)); - if (AO2_MAGIC != (p->priv_data.magic) ) { - ast_log(LOG_ERROR, "bad magic number 0x%x for %p\n", p->priv_data.magic, p); - p = NULL; + if (AO2_MAGIC != p->priv_data.magic) { + if (p->priv_data.magic) { + ast_log(LOG_ERROR, "bad magic number 0x%x for object %p\n", + p->priv_data.magic, user_data); + } else { + ast_log(LOG_ERROR, + "bad magic number for object %p. Object is likely destroyed.\n", + user_data); + } + return NULL; } return p;