fixed bug #1616267 - System plugin crash with parenthesis in filename

git-svn-id: https://svn.code.sf.net/p/nsis/code/NSIS/trunk@4844 212acab6-be3b-0410-9dea-997c60f758d6
This commit is contained in:
kichik 2006-12-15 11:52:11 +00:00
parent ae3373311e
commit 2cda34fbec

View file

@ -139,6 +139,12 @@ PLUGINFUNCTION(Debug)
PLUGINFUNCTION(Get) PLUGINFUNCTION(Get)
{ {
SystemProc *proc = PrepareProc(FALSE); SystemProc *proc = PrepareProc(FALSE);
if (proc == NULL)
{
pushstring("error");
return;
}
SYSTEM_LOG_ADD("Get "); SYSTEM_LOG_ADD("Get ");
SYSTEM_LOG_ADD(proc->DllName); SYSTEM_LOG_ADD(proc->DllName);
SYSTEM_LOG_ADD("::"); SYSTEM_LOG_ADD("::");
@ -169,6 +175,9 @@ PLUGINFUNCTION(Call)
{ {
// Prepare input // Prepare input
SystemProc *proc = PrepareProc(TRUE); SystemProc *proc = PrepareProc(TRUE);
if (proc == NULL)
return;
SYSTEM_LOG_ADD("Call "); SYSTEM_LOG_ADD("Call ");
SYSTEM_LOG_ADD(proc->DllName); SYSTEM_LOG_ADD(proc->DllName);
SYSTEM_LOG_ADD("::"); SYSTEM_LOG_ADD("::");
@ -320,6 +329,13 @@ SystemProc *PrepareProc(BOOL NeedForCall)
// Check for Section Change // Check for Section Change
BOOL changed = TRUE; BOOL changed = TRUE;
ChangesDone = SectionType; ChangesDone = SectionType;
if (SectionType != PST_PROC && proc == NULL)
// no proc after PST_PROC is done means something is wrong with
// the call syntax and we'll get a crash because everything needs
// proc from here on.
break;
switch (*ib) switch (*ib)
{ {
case 0x0: SectionType = -1; break; case 0x0: SectionType = -1; break;
@ -640,7 +656,7 @@ SystemProc *PrepareProc(BOOL NeedForCall)
GlobalFree(sbuf); GlobalFree(sbuf);
// Ok, the final step: check proc for existance // Ok, the final step: check proc for existance
if (proc->Proc == NULL) if (proc != NULL && proc->Proc == NULL)
{ {
switch (proc->ProcType) switch (proc->ProcType)
{ {