[asterisk-commits] gtjoseph: branch 12 r424447 - /branches/12/main/sorcery.c
SVN commits to the Asterisk project
asterisk-commits at lists.digium.com
Fri Oct 3 10:54:05 CDT 2014
Author: gtjoseph
Date: Fri Oct 3 10:53:59 2014
New Revision: 424447
URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=424447
Log:
sorcery: Prevent SEGV in sorcery_wizard_create when there's no create function
When you call ast_sorcery_create() you don't necessarily know which wizard is
going to be invoked. If it happens to be a wizard like 'config' that doesn't
have a 'create' virtual function you get a segfault in the
sorcery_wizard_create callback. This patch catches the null function pointer,
does an ast_assert, and logs an error.
Review: https://reviewboard.asterisk.org/r/4044/
Modified:
branches/12/main/sorcery.c
Modified: branches/12/main/sorcery.c
URL: http://svnview.digium.com/svn/asterisk/branches/12/main/sorcery.c?view=diff&rev=424447&r1=424446&r2=424447
==============================================================================
--- branches/12/main/sorcery.c (original)
+++ branches/12/main/sorcery.c Fri Oct 3 10:53:59 2014
@@ -1574,6 +1574,12 @@
const struct ast_sorcery_object_wizard *object_wizard = obj;
const struct sorcery_details *details = arg;
+ if (!object_wizard->wizard->create) {
+ ast_assert(0);
+ ast_log(LOG_ERROR, "Sorcery wizard '%s' doesn't contain a 'create' virtual function.\n",
+ object_wizard->wizard->name);
+ return 0;
+ }
return (!object_wizard->caching && !object_wizard->wizard->create(details->sorcery, object_wizard->data, details->obj)) ? CMP_MATCH | CMP_STOP : 0;
}
More information about the asterisk-commits
mailing list