From: <ps...@us...> - 2009-11-16 18:12:06
|
Revision: 1663 http://znc.svn.sourceforge.net/znc/?rev=1663&view=rev Author: psychon Date: 2009-11-16 18:11:53 +0000 (Mon, 16 Nov 2009) Log Message: ----------- CModules::OpenModule(): Check the version number first At the time that OpenModule() verified that the module's version number matched the version of the currently running ZNC, it had already called two of the functions exported from the module. Reorder this so that we don't do *any* other calls if we get a version mismatch. Thanks to KiNgMaR for noticing this. Modified Paths: -------------- trunk/Modules.cpp Modified: trunk/Modules.cpp =================================================================== --- trunk/Modules.cpp 2009-11-15 18:47:28 UTC (rev 1662) +++ trunk/Modules.cpp 2009-11-16 18:11:53 UTC (rev 1663) @@ -1013,6 +1013,12 @@ ModHandle CModules::OpenModule(const CString& sModule, const CString& sModPath, bool &bVersionMismatch, bool &bIsGlobal, CString& sDesc, CString& sRetMsg) { + // Some sane defaults in case anything errors out below + bVersionMismatch = false; + bIsGlobal = false; + sDesc.clear(); + sRetMsg.clear(); + for (unsigned int a = 0; a < sModule.length(); a++) { if (((sModule[a] < '0') || (sModule[a] > '9')) && ((sModule[a] < 'a') || (sModule[a] > 'z')) && ((sModule[a] < 'A') || (sModule[a] > 'Z')) && (sModule[a] != '_')) { sRetMsg = "Module names can only contain letters, numbers and underscores, [" + sModule + "] is invalid."; @@ -1054,15 +1060,14 @@ return false; } - bIsGlobal = IsGlobal(); - sDesc = GetDesc(); - if (CModule::GetCoreVersion() != Version()) { bVersionMismatch = true; sRetMsg = "Version mismatch, recompile this module."; } else { sRetMsg = ""; bVersionMismatch = false; + bIsGlobal = IsGlobal(); + sDesc = GetDesc(); } return p; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |