From: David Vossel Date: Wed, 9 Jun 2010 15:09:25 +0000 (+0000) Subject: fixes crash in moh when cachertclasses flag is used X-Git-Tag: 11.0.0-beta1~2865 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=e98835e43780e92cced22ad1ae8a66e7f4b7672e;p=thirdparty%2Fasterisk.git fixes crash in moh when cachertclasses flag is used The result for moh_register was not verified to guarantee the mohclass as added to the container. (closes issue #16993) Reported by: dmitri Patches: res_musiconhold_rtclass2.patch uploaded by dmitri (license 1001) moh_crash2.diff uploaded by dvossel (license 671) Tested by: dmitri git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@269271 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- diff --git a/res/res_musiconhold.c b/res/res_musiconhold.c index 4d2c9ec49a..3f28227570 100644 --- a/res/res_musiconhold.c +++ b/res/res_musiconhold.c @@ -1373,7 +1373,10 @@ static int local_ast_moh_start(struct ast_channel *chan, const char *mclass, con * has a pointer to a freed mohclass, so any operations involving the mohclass container would result in reading * invalid memory. */ - moh_register(mohclass, 0, DONT_UNREF); + if (moh_register(mohclass, 0, DONT_UNREF) == -1) { + mohclass = mohclass_unref(mohclass, "unreffing mohclass failed to register"); + return -1; + } } else { /* We don't register RT moh class, so let's init it manualy */