Changeset 458

Show
Ignore:
Timestamp:
04/01/06 17:37:12 (3 years ago)
Author:
common
Message:

shellcode-signatures
- fix one byte leak in sch_namespace_linkxor
- unregister and delete all shellcodehandlers loaded from signature file

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • nepenthes/trunk/modules/shellcode-signatures/sch_namespace_linkxor.cpp

    r445 r458  
    124124                        case sc_key: 
    125125                                logSpam("sc_key %i\n",matchSize); 
     126                                keyMatch = match; 
    126127                                byteKey = *(byte *)match; 
    127128                                break; 
  • nepenthes/trunk/modules/shellcode-signatures/shellcode-signatures.cpp

    r448 r458  
    7979        m_ModuleManager         = m_Nepenthes->getModuleMgr(); 
    8080 
    81 g_Nepenthes->getShellcodeMgr()->registerShellcodeHandler(new EngineUnicode()); 
     81       g_Nepenthes->getShellcodeMgr()->registerShellcodeHandler(new EngineUnicode()); 
    8282        return loadSignaturesFromFile(string("var/cache/nepenthes/signatures/shellcode-signatures.sc")); 
    8383} 
     
    8585bool SignatureShellcodeHandler::Exit() 
    8686{ 
     87        logPF(); 
    8788        list <ShellcodeHandler *>::iterator handler; 
    8889        for (handler = m_ShellcodeHandlers.begin(); handler != m_ShellcodeHandlers.end(); handler++) 
     
    9192                { 
    9293                        logCrit("ERROR %s\n",__PRETTY_FUNCTION__); 
    93                         return false; 
    9494                } 
    9595                m_Nepenthes->getShellcodeMgr()->unregisterShellcodeHandler((*handler)); 
    96         } 
     96                delete *handler; 
     97        } 
     98        m_ShellcodeHandlers.clear(); 
    9799        return true; 
    98100} 
     
    183185                        }else 
    184186                        { 
    185                                 g_Nepenthes->getShellcodeMgr()->registerShellcodeHandler(sch); 
     187                                m_ShellcodeHandlers.push_front(sch); 
    186188                        } 
    187189                } 
     
    193195 
    194196        logSpam("Free'd %i shellcodes\n",freed_shellcode);  
     197 
     198 
     199        list <ShellcodeHandler *>::iterator it; 
     200 
     201        for (it = m_ShellcodeHandlers.begin(); it != m_ShellcodeHandlers.end(); it++) 
     202        { 
     203                g_Nepenthes->getShellcodeMgr()->registerShellcodeHandler(*it); 
     204        } 
    195205 
    196206        return load_success;