From: David Vossel Date: Wed, 9 Jun 2010 15:13:55 +0000 (+0000) Subject: Merged revisions 269271 via svnmerge from X-Git-Tag: 1.6.2.10-rc1~54 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a68ca47ae26c4c718a4e05423ff660839afe3b7c;p=thirdparty%2Fasterisk.git Merged revisions 269271 via svnmerge from https://origsvn.digium.com/svn/asterisk/trunk ........ r269271 | dvossel | 2010-06-09 10:09:25 -0500 (Wed, 09 Jun 2010) | 15 lines 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/branches/1.6.2@269272 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- diff --git a/res/res_musiconhold.c b/res/res_musiconhold.c index 8af2b76b88..e530744cd5 100644 --- a/res/res_musiconhold.c +++ b/res/res_musiconhold.c @@ -1347,7 +1347,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 */