Last Msg First Msg
























method com.dmdirc.plugins.PluginManager__static_init










method void com.dmdirc.plugins.PluginManager()
presumptioninit'ed(com.dmdirc.actions.CoreActionType.CLIENT_ PREFS_CLOSED)
presumptioninit'ed(com.dmdirc.actions.CoreActionType.CLIENT_ PREFS_OPENED)
postjava.lang.StringBuilder:toString(...)._tainted == 0
postthis.knownPlugins == &new Hashtable(PluginManag er#1)
postthis.myDir == &java.lang.StringBuilder:toString (...)
postthis.services == &new HashMap(PluginManager#2)
postnew HashMap(PluginManager#2) num objects == 1
postnew Hashtable(PluginManager#1) num objects == 1









  method not available - call not analyzedInfocall on String com.dmdirc.Main:getConfigDir()










  method not available - call not analyzedInfocall on void com.dmdirc.actions.ActionManager:addLi stener(ActionListener, ActionType[])











method Service getService(String, String)
prethis.services != null
postinit'ed(return_value)
postnew ArrayList(Service#1) num objects == 0
postnew Service(getService#1*) num objects == 0
postnew Service(getService#3*) num objects == 0
postnot_init'ed(new Service(getService#1*).name)
postnot_init'ed(new Service(getService#3*).name)
postinit'ed(new Service(getService#1*).serviceproviders )
postnot_init'ed(new Service(getService#1*).type)
postnot_init'ed(new Service(getService#3*).type)
postnot_init'ed(new Service(getService#3*). serviceproviders)
unanalyzedcall on java.util.HashMap
unanalyzedcall on java.util.Map:containsKey
unanalyzedcall on java.util.Map:get
unanalyzedcall on java.util.ArrayList
unanalyzedcall on java.util.Map:put










method Service getService(String, String, bool)
prethis.services != null
presumptionjava.util.Map:get(...)@97 != null
postinit'ed(return_value)
postnew ArrayList(Service#1) num objects <= 1
postnew Service(getService#1) num objects <= 1
postnew Service(getService#1).name == name
postinit'ed(new Service(getService#1).name)
postinit'ed(new Service(getService#1).serviceproviders)
postnew Service(getService#1).type == type
postinit'ed(new Service(getService#1).type)
postnew Service(getService#3) num objects <= 1
postnew Service(getService#3).name == name
postinit'ed(new Service(getService#3).name)
postnew Service(getService#3).serviceproviders == &amp;new ArrayList(Service#1)
postnew Service(getService#3).type == type
postinit'ed(new Service(getService#3).type)
unanalyzedcall on java.util.ArrayList
test_vectorcreate: {0}, {1}
test_vectorjava.util.Map:containsKey(...)@96: {0}, {1}
test_vectorjava.util.Map:containsKey(...)@99: {0}, {1}










method ServiceProvider getServiceProvider(String, String)
prethis.services != null
postreturn_value != null
unanalyzedcall on java.util.HashMap
unanalyzedcall on java.util.Map:containsKey
unanalyzedcall on java.util.Map:get
unanalyzedcall on java.util.ArrayList
unanalyzedcall on java.util.Map:put
unanalyzedcall on java.lang.RuntimeException
unanalyzedcall on java.lang.Throwable:__curr_excep_obj
unanalyzedcall on updateProvides
unanalyzedcall on checkRequirements
unanalyzedcall on loadRequired
unanalyzedcall on onLoad
unanalyzedcall on getName
unanalyzedcall on java.lang.Throwable:getMessage
unanalyzedcall on addError
unanalyzedcall on unloadPlugin
unanalyzedcall on getMainClass
unanalyzedcall on loadClass
unanalyzedcall on com.dmdirc.actions.ActionManager:processEve nt
unanalyzedcall on loadPlugin
unanalyzedcall on java.util.List:iterator
unanalyzedcall on isActive
unanalyzedcall on activateServices









Prev Msg Next Msg
  conditional throw
Medium Prob.
check that service != null
  conditional throw
Medium Prob.
check that provider != null
Prev Msg Next Msg











method ServiceProvider getServiceProvider(String, List, bool)
prenames != null
pre(soft) fallback == 1
pre(soft) this.services != null
presumptionjava.util.List:get(...)@164 != null
presumptionjava.util.List:size(...)@163 >= 1
postreturn_value != null
unanalyzedcall on java.util.HashMap
unanalyzedcall on java.util.Map:values
unanalyzedcall on java.util.ArrayList
unanalyzedcall on java.util.Map:containsKey
unanalyzedcall on java.util.Map:get
unanalyzedcall on java.util.Map:put
unanalyzedcall on java.lang.RuntimeException
unanalyzedcall on java.lang.Throwable:__curr_excep_obj
unanalyzedcall on updateProvides
unanalyzedcall on checkRequirements
unanalyzedcall on loadRequired
unanalyzedcall on onLoad
unanalyzedcall on getName
unanalyzedcall on java.lang.Throwable:getMessage
unanalyzedcall on addError
unanalyzedcall on unloadPlugin
unanalyzedcall on getMainClass
unanalyzedcall on loadClass
unanalyzedcall on com.dmdirc.actions.ActionManager:processEve nt
unanalyzedcall on loadPlugin
unanalyzedcall on getService
unanalyzedcall on java.util.List:iterator
unanalyzedcall on isActive
unanalyzedcall on activateServices
test_vectorjava.util.Iterator:hasNext(...)@154: {0}, {1}









Prev Msg Next Msg
  test always goes same way
Low Prob.
Test predetermined because provider != null
Prev Msg Next Msg










Prev Msg Next Msg
  dead code
Low Prob.
Dead code here because provider != null
Prev Msg Next Msg











method ExportedService getExportedService(String)
prethis.services != null
pre(soft) com/dmdirc/plugins/GlobalClassLoader.me != null
presumptiongetServiceProvider(...).exports@181 != null
postinit'ed(com/dmdirc/plugins/GlobalClassLoader.me)
postreturn_value == One-of{&amp;new ExportedService(get ExportedService#1*), &amp;new ExportedService(getEx portedService#2*)}
postreturn_value in Addr_Set{&amp;new ExportedService(g etExportedService#1*),&amp;new ExportedService(getE xportedService#2*),&amp;new ExportedService(getExpo rtedService#1*)}
postnew ExportedService(getExportedService#1*) num objects <= 1
postinit'ed(new ExportedService(getExportedService#1*). myMethod)
postinit'ed(new ExportedService(getExportedService#1*). myObject)
postnew ExportedService(getExportedService#1*). myObject == null
postnew ExportedService(getExportedService#2*) num objects <= 1
postinit'ed(new ExportedService(getExportedService#2*). myMethod)
postnew ExportedService(getExportedService#2*). myObject == null
postnew GlobalClassLoader(getGlobalClassLoader#1) num objects == 0
postinit'ed(new GlobalClassLoader(getGlobalClassLoader# 1).resourcesList)
postnew HashMap(GlobalClassLoader#1) num objects == 0
unanalyzedcall on java.util.HashMap
unanalyzedcall on java.util.Map:containsKey
unanalyzedcall on java.util.Map:get
unanalyzedcall on java.util.ArrayList
unanalyzedcall on java.util.Map:put
unanalyzedcall on java.lang.RuntimeException
unanalyzedcall on getPluginInfos
unanalyzedcall on java.lang.Throwable:__curr_excep_obj
unanalyzedcall on updateProvides
unanalyzedcall on checkRequirements
unanalyzedcall on loadRequired
unanalyzedcall on onLoad
unanalyzedcall on getName
unanalyzedcall on java.lang.Throwable:getMessage
unanalyzedcall on addError
unanalyzedcall on unloadPlugin
unanalyzedcall on getMainClass
unanalyzedcall on loadClass
unanalyzedcall on com.dmdirc.actions.ActionManager:processEve nt
unanalyzedcall on loadPlugin
unanalyzedcall on com.dmdirc.util.ConfigFile:isKeyDomain
unanalyzedcall on com.dmdirc.util.ConfigFile:getKeyDomain
unanalyzedcall on com.dmdirc.util.ConfigFile:isFlatDomain
unanalyzedcall on com.dmdirc.util.ConfigFile:getFlatDomain
unanalyzedcall on java.util.List:contains
unanalyzedcall on getPluginManager
unanalyzedcall on java.util.List:iterator
unanalyzedcall on java.net.URL:getPath
unanalyzedcall on getFullFilename
unanalyzedcall on getService
unanalyzedcall on isActive
unanalyzedcall on activateServices
unanalyzedcall on getPluginClassLoader
unanalyzedcall on java.lang.String:equals
unanalyzedcall on getPluginObject
unanalyzedcall on java.lang.Class:getDeclaredMethods
unanalyzedcall on java.lang.reflect.Method:getName
unanalyzedcall on getResourceManager
unanalyzedcall on com.dmdirc.plugins.PluginClassLoader:findLo adedClass
unanalyzedcall on java.lang.ClassLoader
unanalyzedcall on com.dmdirc.plugins.GlobalClassLoader:findLo adedClass
unanalyzedcall on com.dmdirc.plugins.PluginClassLoader:getPar ent
unanalyzedcall on java.lang.String:replace
unanalyzedcall on isPersistent
unanalyzedcall on com.dmdirc.util.resourcemanager. ResourceManager:resourceExists
unanalyzedcall on com.dmdirc.util.resourcemanager. ResourceManager:getResourceManager
unanalyzedcall on com.dmdirc.util.resourcemanager. ResourceManager:getResourceBytes
unanalyzedcall on com.dmdirc.plugins.GlobalClassLoader:define Class
unanalyzedcall on java.lang.ClassLoader:loadClass
unanalyzedcall on java.util.Collection:iterator
unanalyzedcall on getClassList
unanalyzedcall on getPersistentClasses
unanalyzedcall on java.lang.NoClassDefFoundError:getMessage
unanalyzedcall on java.lang.ClassNotFoundException
unanalyzedcall on com.dmdirc.plugins.PluginClassLoader:define Class
unanalyzedcall on com.dmdirc.plugins.PluginClassLoader:resolv eClass
unanalyzedcall on java.util.List:add
unanalyzedcall on java.lang.String:matches
unanalyzedcall on java.util.Timer
unanalyzedcall on java.util.TimerTask
unanalyzedcall on java.util.Timer:schedule
unanalyzedcall on com.dmdirc.util.resourcemanager. ResourceManager:getResourcesStartingWith
unanalyzedcall on java.lang.String:replaceAll










method List getServicesByType(String)
prethis.services != null
presumptionjava.util.Map:get(...)@193 != null
postreturn_value in Addr_Set{&amp;new ArrayList(getServ icesByType#2),&amp;new ArrayList(getServicesByType# 1)}
postnew ArrayList(getServicesByType#1) num objects <= 1
postnew ArrayList(getServicesByType#2) num objects <= 1
test_vectorjava.util.Map:containsKey(...)@192: {0}, {1}










method List getAllServices()
prethis.services != null
presumptionjava.util.Iterator:next(...)@208 != null
presumptionjava.util.Map:values(...)@208 != null
postreturn_value == &amp;new ArrayList(getAllServices#1 )
postnew ArrayList(getAllServices#1) num objects == 1
test_vectorjava.util.Iterator:hasNext(...)@208: {0}, {1}










method void doAutoLoad()
pre(soft) this.knownPlugins != null
presumptioncom.dmdirc.config.ConfigManager:getOptionList(... )@219 != null
presumptioncom.dmdirc.config.IdentityManager:getGlobalConfig(. ..)@219 != null
presumptionjava.util.Iterator:next(...)@219 != null
presumptionjava.util.Map:get(...)@348 != null
unanalyzedcall on java.util.Map:get
unanalyzedcall on java.lang.String:toLowerCase
test_vectorjava.lang.String:charAt(...)@221: {35}, {0..34, 36..216-1}
test_vectorjava.lang.String:isEmpty(...)@221: {1}, {0}
test_vectorjava.util.Iterator:hasNext(...)@219: {0}, {1}
test_vectorjava.util.Map:get(...)@348: Addr_Set{null}, Inverse{null}









  method not available - call not analyzedInfocall on ConfigManager com.dmdirc.config. IdentityManager:getGlobalConfig()
  method not available - call not analyzedInfocall on List com.dmdirc.config.ConfigManager:getOpt ionList(String, String)










  call too complex - analysis skippedInfocall on void loadPlugin()











method PluginManager getPluginManager()
preinit'ed(me)
postjava.lang.StringBuilder:toString(...)._tainted == 0
postme == One-of{old me, &amp;new PluginManager(getPlug inManager#1)}
postme != null
postreturn_value == me
postnew HashMap(PluginManager#2) num objects <= 1
postnew Hashtable(PluginManager#1) num objects <= 1
postnew PluginClassLoader(getSubClassLoader#1) num objects == undefined
postnew PluginClassLoader(getSubClassLoader#1) num objects == 0, if init'ed
postnew PluginClassLoader(getSubClassLoader#1). pluginInfo == undefined
postnew PluginClassLoader(getSubClassLoader#1). pluginInfo == null
postnew PluginManager(getPluginManager#1) num objects <= 1
postnew PluginManager(getPluginManager#1).knownPlugins == &amp;new Hashtable(PluginManager#1)
postnew PluginManager(getPluginManager#1).myDir == &amp;java.lang.StringBuilder:toString(...)
postnew PluginManager(getPluginManager#1).services == &amp;new HashMap(PluginManager#2)
unanalyzedcall on java.util.Hashtable
unanalyzedcall on java.util.HashMap
unanalyzedcall on java.lang.System:getProperty
unanalyzedcall on com.dmdirc.Main:getConfigDir
unanalyzedcall on com.dmdirc.actions.ActionManager:addListene r
test_vectorme: Inverse{null}, Addr_Set{null}









  call too complex - analysis skippedInfocall on List getPossiblePluginInfos(bool)











method bool addPlugin(String)
prefilename != null
prethis.knownPlugins != null
pre(soft) com.dmdirc.logger.ErrorManager__static_init. new Class[](ErrorManager__static_init#2)[...] != null
pre(soft) init'ed(com.dmdirc.logger.ErrorManager__ static_init.new ErrorManager(ErrorManager__static_i nit#1).logReports)
pre(soft) com.dmdirc.logger.ErrorManager__static_init. new ErrorManager(ErrorManager__static_init#1). nextErrorID != null
pre(soft) init'ed(com.dmdirc.logger.ErrorManager__ static_init.new ErrorManager(ErrorManager__static_i nit#1).sendReports)
pre(soft) init'ed(com.dmdirc.ui.FatalErrorDialog$4__ static_init.new int[](FatalErrorDialog$4__static_in it#1)[...])
pre(soft) init'ed(com.dmdirc.logger.ErrorManager__ static_init.new ErrorManager(ErrorManager__static_i nit#1).reportThread)
pre(soft) init'ed(com/dmdirc/logger/ProgramError. errorDir)
presumptionjava.lang.String:isEmpty(...)@273 == 1
presumptionpluginInfo.requirementsError@270 != null
postcom/dmdirc/logger/ProgramError.errorDir == One-of{old com/dmdirc/logger/ProgramError. errorDir, &amp;new File(getErrorFile#1)}
postinit'ed(com/dmdirc/logger/ProgramError.errorDir)
postinit'ed(return_value)
postcom.dmdirc.logger.ErrorManager__static_init.new ErrorManager(ErrorManager__static_init#1). reportThread == old com.dmdirc.logger. ErrorManager__static_init.new ErrorManager(ErrorMan ager__static_init#1).reportThread
postinit'ed(com.dmdirc.logger.ErrorManager__static_ init.new ErrorManager(ErrorManager__static_init#1). reportThread)
postnew ErrorReportingThread(sendError#1) num objects == 0
postinit'ed(new ErrorReportingThread(sendError#1). queue)
postnew File(getErrorFile#1) num objects <= 1
unanalyzedcall on java.util.Map:values
unanalyzedcall on java.util.ArrayList
unanalyzedcall on java.util.Collection:iterator
unanalyzedcall on getErrorManager
unanalyzedcall on addError
unanalyzedcall on com.dmdirc.util.ConfigFile:isKeyDomain
unanalyzedcall on com.dmdirc.util.ConfigFile:getKeyDomain
unanalyzedcall on java.util.Map:containsKey
unanalyzedcall on java.util.Map:get
unanalyzedcall on com.dmdirc.plugins.PluginInfo
unanalyzedcall on java.lang.Exception
unanalyzedcall on java.lang.String:equalsIgnoreCase
unanalyzedcall on java.lang.Throwable:__curr_excep_obj
unanalyzedcall on java.util.concurrent.atomic. AtomicLong:getAndIncrement
unanalyzedcall on java.util.Date
unanalyzedcall on java.lang.IllegalArgumentException
unanalyzedcall on java.lang.String:isEmpty
unanalyzedcall on java.util.Arrays:copyOf
unanalyzedcall on java.util.Date:clone
unanalyzedcall on java.util.List:contains
unanalyzedcall on java.util.List:add
unanalyzedcall on com.dmdirc.logger.ErrorReportStatus:equals
unanalyzedcall on fireErrorStatusChanged
unanalyzedcall on java.lang.Object:notifyAll
unanalyzedcall on java.util.concurrent.BlockingQueue:add
unanalyzedcall on java.lang.Thread:isAlive
unanalyzedcall on java.lang.Thread
unanalyzedcall on com.dmdirc.logger.ErrorReportingThread:setD aemon
unanalyzedcall on java.lang.Thread:start
unanalyzedcall on java.awt.GraphicsEnvironment:isHeadless
unanalyzedcall on java.io.PrintStream:println
unanalyzedcall on javax.swing.SwingUtilities:invokeLater
unanalyzedcall on java.util.concurrent.Semaphore
unanalyzedcall on java.util.concurrent.Semaphore:acquireUnint erruptibly
unanalyzedcall on java.lang.Object:wait
unanalyzedcall on com.dmdirc.util.ListenerList:get
unanalyzedcall on java.util.List:iterator
unanalyzedcall on isReady
unanalyzedcall on errorAdded
unanalyzedcall on com.dmdirc.logger.ErrorFixedStatus:equals
unanalyzedcall on java.lang.String:startsWith
unanalyzedcall on java.io.File:exists
unanalyzedcall on com.dmdirc.Main:getConfigDir
unanalyzedcall on java.io.File
unanalyzedcall on java.io.File:mkdirs
unanalyzedcall on java.util.Date:getTime
unanalyzedcall on java.io.File:renameTo
unanalyzedcall on java.io.File:createNewFile
unanalyzedcall on java.io.FileOutputStream
unanalyzedcall on java.util.concurrent.Semaphore:release
unanalyzedcall on java.io.IOException:printStackTrace
unanalyzedcall on java.io.OutputStream
unanalyzedcall on java.io.PrintWriter
unanalyzedcall on java.io.PrintWriter:println
unanalyzedcall on java.io.PrintWriter:close
unanalyzedcall on java.lang.Throwable:getStackTrace
unanalyzedcall on java.lang.Throwable:toString
unanalyzedcall on java.lang.StackTraceElement:toString
unanalyzedcall on java.lang.Throwable:getCause
unanalyzedcall on getTrace
unanalyzedcall on java.lang.Object:getClass
unanalyzedcall on java.lang.Object:equals
unanalyzedcall on com.dmdirc.logger.ErrorReportStatus:ordinal
unanalyzedcall on javax.swing.JButton:setText
unanalyzedcall on javax.swing.JButton:setEnabled
unanalyzedcall on equals
unanalyzedcall on getReportStatus
unanalyzedcall on errorStatusChanged
unanalyzedcall on java.lang.String:equals
unanalyzedcall on java.util.Arrays:equals
test_vectorjava.io.File:exists(...)@258: {1}, {0}
test_vectorjava.util.Map:containsKey(...)@254: {0}, {1}









  method not available - call not analyzedInfocall on void com.dmdirc.updater.components. PluginComponent(PluginInfo)










  method not available - call not analyzedInfocall on String com.dmdirc.plugins.PluginException:g etMessage()











method bool delPlugin(String)
prefilename != null
prethis.knownPlugins != null
presumptionjava.util.Map:get(...)@348 != null
presumptionpluginInfo.children@300 != null
presumptionpluginInfo.plugin@300 != null
presumptionpluginInfo.provides@300 != null
postinit'ed(java.lang.StringBuilder:toString(...)._ tainted)
postpossibly_updated(java.lang.StringBuilder:toString(. ..)._tainted)
postinit'ed(return_value)
postinit'ed(new PluginClassLoader(getSubClassLoader#1) num objects)
postpossibly_updated(new PluginClassLoader(getSubClassL oader#1).pluginInfo)
unanalyzedcall on java.util.Map:get
unanalyzedcall on java.lang.String:toLowerCase
unanalyzedcall on java.lang.Throwable:__curr_excep_obj
unanalyzedcall on addError
unanalyzedcall on com.dmdirc.actions.ActionManager:processEve nt
unanalyzedcall on com.dmdirc.util.ConfigFile:isKeyDomain
unanalyzedcall on com.dmdirc.util.ConfigFile:getKeyDomain
unanalyzedcall on java.util.Map:containsKey
unanalyzedcall on java.lang.String:isEmpty
unanalyzedcall on java.util.List:remove
unanalyzedcall on com.dmdirc.util.ConfigFile:isFlatDomain
unanalyzedcall on com.dmdirc.util.ConfigFile:getFlatDomain
unanalyzedcall on java.util.List:contains
unanalyzedcall on getPluginManager
unanalyzedcall on getPluginInfoByName
unanalyzedcall on java.util.List:iterator
unanalyzedcall on java.lang.ClassLoader
unanalyzedcall on java.lang.String:equalsIgnoreCase
unanalyzedcall on unloadPlugin
unanalyzedcall on delProvider
unanalyzedcall on java.util.List:clear
unanalyzedcall on isUnloadable
unanalyzedcall on onUnload
unanalyzedcall on java.lang.Exception:getMessage
unanalyzedcall on java.lang.Exception:printStackTrace
test_vectorjava.util.Map:containsKey(...)@296: {1}, {0}










method bool reloadPlugin(String)
prefilename != null
prethis.knownPlugins != null
pre(soft) init'ed(com.dmdirc.logger.ErrorManager__ static_init.new ErrorManager(ErrorManager__static_i nit#1).reportThread)
pre(soft) init'ed(com/dmdirc/logger/ProgramError. errorDir)
presumptionjava.util.Map:get(...)@348 != null
postcom/dmdirc/logger/ProgramError.errorDir == old com/dmdirc/logger/ProgramError.errorDir
postinit'ed(java.lang.StringBuilder:toString(...)._ tainted)
postpossibly_updated(java.lang.StringBuilder:toString(. ..)._tainted)
postinit'ed(return_value)
postcom.dmdirc.logger.ErrorManager__static_init.new ErrorManager(ErrorManager__static_init#1). reportThread == old com.dmdirc.logger. ErrorManager__static_init.new ErrorManager(ErrorMan ager__static_init#1).reportThread
postnew ErrorReportingThread(sendError#1) num objects == undefined
postnew ErrorReportingThread(sendError#1) num objects == 0, if init'ed
postnew File(getErrorFile#1) num objects == new ErrorReportingThread(sendError#1) num objects
postnew ErrorReportingThread(sendError#1).queue == undefined
postnew ErrorReportingThread(sendError#1).queue == null
postinit'ed(new PluginClassLoader(getSubClassLoader#1) num objects)
postpossibly_updated(new PluginClassLoader(getSubClassL oader#1).pluginInfo)
unanalyzedcall on java.util.Map:containsKey
unanalyzedcall on java.util.Map:get
unanalyzedcall on java.lang.String:toLowerCase
unanalyzedcall on java.lang.Throwable:__curr_excep_obj
unanalyzedcall on addError
unanalyzedcall on com.dmdirc.actions.ActionManager:processEve nt
unanalyzedcall on com.dmdirc.util.ConfigFile:isKeyDomain
unanalyzedcall on com.dmdirc.util.ConfigFile:getKeyDomain
unanalyzedcall on java.lang.String:isEmpty
unanalyzedcall on java.util.List:remove
unanalyzedcall on com.dmdirc.util.ConfigFile:isFlatDomain
unanalyzedcall on com.dmdirc.util.ConfigFile:getFlatDomain
unanalyzedcall on java.util.List:contains
unanalyzedcall on getPluginManager
unanalyzedcall on getPluginInfoByName
unanalyzedcall on java.util.List:iterator
unanalyzedcall on java.lang.ClassLoader
unanalyzedcall on java.lang.String:equalsIgnoreCase
unanalyzedcall on unloadPlugin
unanalyzedcall on delProvider
unanalyzedcall on java.util.List:clear
unanalyzedcall on isUnloadable
unanalyzedcall on onUnload
unanalyzedcall on java.lang.Exception:getMessage
unanalyzedcall on java.lang.Exception:printStackTrace
unanalyzedcall on java.util.Map:remove
test_vectoraddPlugin(...)@322: {0}, {1}
test_vectorjava.util.Map:containsKey(...)@316: {1}, {0}









  call too complex - analysis skippedInfocall on bool addPlugin(String)










  call too complex - analysis skippedInfocall on void loadPlugin()











method void reloadAllPlugins()
prethis.knownPlugins != null
presumptionjava.util.Iterator:next(...)@336 != null
postjava.lang.StringBuilder:toString(...)._tainted == 0
postnew PluginClassLoader(getSubClassLoader#1) num objects == undefined
postnew PluginClassLoader(getSubClassLoader#1) num objects == 0, if init'ed
postnew PluginClassLoader(getSubClassLoader#1). pluginInfo == undefined
postnew PluginClassLoader(getSubClassLoader#1). pluginInfo == null
unanalyzedcall on java.util.Map:values
unanalyzedcall on java.util.ArrayList
test_vectorjava.util.Iterator:hasNext(...)@336: {0}, {1}









  call too complex - analysis skippedInfocall on bool reloadPlugin(String)











method PluginInfo getPluginInfo(String)
prefilename != null
prethis.knownPlugins != null
postinit'ed(return_value)










method PluginInfo getPluginInfoByName(String)
prethis.knownPlugins != null
presumptionjava.util.Iterator:next(...)@358 != null
postinit'ed(return_value)
unanalyzedcall on java.util.Map:values
unanalyzedcall on java.util.ArrayList
unanalyzedcall on com.dmdirc.util.ConfigFile:isKeyDomain
unanalyzedcall on com.dmdirc.util.ConfigFile:getKeyDomain
unanalyzedcall on java.util.Map:containsKey
unanalyzedcall on java.util.Map:get
test_vectorjava.lang.String:equalsIgnoreCase(...)@359: {0}, {1}
test_vectorjava.util.Iterator:hasNext(...)@358: {0}, {1}









Prev Msg Next Msg
  null dereference
Medium Prob.
check that getName(...) != null
Prev Msg Next Msg











method String getDirectory()
postreturn_value == this.myDir
postinit'ed(return_value)










method List getPossiblePluginInfos(bool)
pre(soft) com.dmdirc.logger.ErrorManager__static_init. new Class[](ErrorManager__static_init#2)[...] != null
pre(soft) init'ed(com.dmdirc.logger.ErrorManager__ static_init.new ErrorManager(ErrorManager__static_i nit#1).logReports)
pre(soft) com.dmdirc.logger.ErrorManager__static_init. new ErrorManager(ErrorManager__static_init#1). nextErrorID != null
pre(soft) init'ed(com.dmdirc.logger.ErrorManager__ static_init.new ErrorManager(ErrorManager__static_i nit#1).sendReports)
pre(soft) init'ed(com.dmdirc.ui.FatalErrorDialog$4__ static_init.new int[](FatalErrorDialog$4__static_in it#1)[...])
pre(soft) init'ed(com.dmdirc.logger.ErrorManager__ static_init.new ErrorManager(ErrorManager__static_i nit#1).reportThread)
pre(soft) init'ed(com/dmdirc/logger/ProgramError. errorDir)
pre(soft) this.knownPlugins != null
pre(soft) this.myDir != null
presumptionarr$.length@394 <= 232-1
presumptionjava.io.File:getName(...)@397 != null
presumptionjava.io.File:getPath(...)@398 != null
presumptionjava.io.File:listFiles(...)@394 != null
presumptionjava.util.Iterator:next(...)@416 != null
presumptionjava.util.LinkedList:pop(...)@392 != null
presumptionjava.util.Map:values(...)@416 != null
presumptionpi.filename@416 != null
presumptionpi.url@416 != null
postinit'ed(com/dmdirc/logger/ProgramError.errorDir)
postinit'ed(java.lang.StringBuilder:toString(...)._ tainted)
postpossibly_updated(java.lang.StringBuilder:toString(. ..)._tainted)
postreturn_value == &amp;new LinkedList(getPossiblePlug inInfos#10)
postinit'ed(com.dmdirc.logger.ErrorManager__static_ init.new ErrorManager(ErrorManager__static_init#1). reportThread)
postinit'ed(new ErrorReportingThread(sendError#1) num objects)
postnew ErrorReportingThread(sendError#1) num objects == undefined
postnew ErrorReportingThread(sendError#1) num objects == 0, if init'ed
postnew File(getErrorFile#1) num objects == new ErrorReportingThread(sendError#1) num objects
postinit'ed(new ErrorReportingThread(sendError#1). queue)
postnew ErrorReportingThread(sendError#1).queue == undefined
postnew ErrorReportingThread(sendError#1).queue == null
postinit'ed(new File(getErrorFile#1) num objects)
postnew LinkedList(getPossiblePluginInfos#10) num objects == 1
postinit'ed(new PluginClassLoader(getSubClassLoader#1) num objects)
postinit'ed(new PluginClassLoader(getSubClassLoader#1). pluginInfo)
unanalyzedcall on java.util.Map:containsKey
unanalyzedcall on java.util.Map:get
unanalyzedcall on java.lang.String:toLowerCase
unanalyzedcall on java.lang.Throwable:__curr_excep_obj
unanalyzedcall on getErrorManager
unanalyzedcall on addError
unanalyzedcall on com.dmdirc.actions.ActionManager:processEve nt
unanalyzedcall on com.dmdirc.util.ConfigFile:isKeyDomain
unanalyzedcall on com.dmdirc.util.ConfigFile:getKeyDomain
unanalyzedcall on java.lang.String:isEmpty
unanalyzedcall on java.util.List:remove
unanalyzedcall on com.dmdirc.util.ConfigFile:isFlatDomain
unanalyzedcall on com.dmdirc.util.ConfigFile:getFlatDomain
unanalyzedcall on java.util.List:contains
unanalyzedcall on getPluginManager
unanalyzedcall on getPluginInfoByName
unanalyzedcall on java.util.List:iterator
unanalyzedcall on java.lang.ClassLoader
unanalyzedcall on java.lang.String:equalsIgnoreCase
unanalyzedcall on unloadPlugin
unanalyzedcall on delProvider
unanalyzedcall on java.util.List:clear
unanalyzedcall on isUnloadable
unanalyzedcall on onUnload
unanalyzedcall on java.lang.Exception:getMessage
unanalyzedcall on java.lang.Exception:printStackTrace
unanalyzedcall on java.net.URL:getPath
unanalyzedcall on java.util.Map:remove
unanalyzedcall on java.util.concurrent.atomic. AtomicLong:getAndIncrement
unanalyzedcall on java.util.Date
unanalyzedcall on java.lang.IllegalArgumentException
unanalyzedcall on java.util.Arrays:copyOf
unanalyzedcall on java.util.Date:clone
unanalyzedcall on java.util.List:add
unanalyzedcall on com.dmdirc.logger.ErrorReportStatus:equals
unanalyzedcall on fireErrorStatusChanged
unanalyzedcall on java.lang.Object:notifyAll
unanalyzedcall on java.util.concurrent.BlockingQueue:add
unanalyzedcall on java.lang.Thread:isAlive
unanalyzedcall on java.lang.Thread
unanalyzedcall on com.dmdirc.logger.ErrorReportingThread:setD aemon
unanalyzedcall on java.lang.Thread:start
unanalyzedcall on java.awt.GraphicsEnvironment:isHeadless
unanalyzedcall on java.io.PrintStream:println
unanalyzedcall on javax.swing.SwingUtilities:invokeLater
unanalyzedcall on java.util.concurrent.Semaphore
unanalyzedcall on java.util.concurrent.Semaphore:acquireUnint erruptibly
unanalyzedcall on java.lang.Object:wait
unanalyzedcall on com.dmdirc.util.ListenerList:get
unanalyzedcall on isReady
unanalyzedcall on errorAdded
unanalyzedcall on com.dmdirc.logger.ErrorFixedStatus:equals
unanalyzedcall on java.lang.String:startsWith
unanalyzedcall on java.io.File:exists
unanalyzedcall on com.dmdirc.Main:getConfigDir
unanalyzedcall on java.io.File
unanalyzedcall on java.io.File:mkdirs
unanalyzedcall on java.util.Date:getTime
unanalyzedcall on java.io.File:renameTo
unanalyzedcall on java.io.File:createNewFile
unanalyzedcall on java.io.FileOutputStream
unanalyzedcall on java.util.concurrent.Semaphore:release
unanalyzedcall on java.io.IOException:printStackTrace
unanalyzedcall on java.io.OutputStream
unanalyzedcall on java.io.PrintWriter
unanalyzedcall on java.io.PrintWriter:println
unanalyzedcall on java.io.PrintWriter:close
unanalyzedcall on java.lang.Throwable:getStackTrace
unanalyzedcall on java.lang.Throwable:toString
unanalyzedcall on java.lang.StackTraceElement:toString
unanalyzedcall on java.lang.Throwable:getCause
unanalyzedcall on getTrace
unanalyzedcall on java.lang.Object:getClass
unanalyzedcall on java.lang.Object:equals
unanalyzedcall on com.dmdirc.logger.ErrorReportStatus:ordinal
unanalyzedcall on javax.swing.JButton:setText
unanalyzedcall on javax.swing.JButton:setEnabled
unanalyzedcall on equals
unanalyzedcall on getReportStatus
unanalyzedcall on errorStatusChanged
unanalyzedcall on java.lang.String:equals
unanalyzedcall on java.util.Arrays:equals
test_vectoraddPlugins: {0}, {1}
test_vectorjava.io.File:exists(...)@417: {1}, {0}
test_vectorjava.io.File:isDirectory(...)@393: {0}, {1}
test_vectorjava.io.File:isFile(...)@397: {0}, {1}
test_vectorjava.lang.String:endsWith(...)@397: {0}, {1}
test_vectorjava.util.Iterator:hasNext(...)@416: {0}, {1}
test_vectorjava.util.LinkedList:isEmpty(...)@391: {1}, {0}









  call too complex - analysis skippedInfocall on bool addPlugin(String)










  call too complex - analysis skippedInfocall on void com.dmdirc.plugins.PluginInfo(URL, bool)











method void updateAutoLoad(PluginInfo)
preplugin != null
preinit'ed(plugin.plugin)
pre(soft) init'ed(plugin.tempLoaded)
presumptioncom.dmdirc.config.ConfigManager:getOptionList(... )@433 != null
presumptioncom.dmdirc.config.IdentityManager:getConfigIdentity (...)@442 != null
presumptioncom.dmdirc.config.IdentityManager:getGlobalConfig(. ..)@433 != null
test_vector!(plugin.plugin == null) &amp; plugin.tempLoaded == 0: {0}, {1}
test_vectorjava.util.List:contains(...)@436: {1}, {0}
test_vectorjava.util.List:contains(...)@438: {0}, {1}









  method not available - call not analyzedInfocall on ConfigManager com.dmdirc.config. IdentityManager:getGlobalConfig()
  method not available - call not analyzedInfocall on List com.dmdirc.config.ConfigManager:getOpt ionList(String, String)










  call too complex - analysis skippedInfocall on String getRelativeFilename()










  method not available - call not analyzedInfocall on Identity com.dmdirc.config.IdentityManager: getConfigIdentity()
  method not available - call not analyzedInfocall on void com.dmdirc.config.Identity:setOption(S tring, String, List)











method Collection getPluginInfos()
prethis.knownPlugins != null
postreturn_value == &amp;new ArrayList(getPluginInfos#1 )
postnew ArrayList(getPluginInfos#1) num objects == 1










method void processEvent(ActionType, StringBuffer, Object[])
pretype != null
pre(soft) arguments != null
pre(soft) arguments.length >= 1
pre(soft) init'ed(arguments[0])
pre(soft) com.dmdirc.logger.ErrorManager__static_init. new Class[](ErrorManager__static_init#2)[...] != null
pre(soft) init'ed(com.dmdirc.logger.ErrorManager__ static_init.new ErrorManager(ErrorManager__static_i nit#1).logReports)
pre(soft) com.dmdirc.logger.ErrorManager__static_init. new ErrorManager(ErrorManager__static_init#1). nextErrorID != null
pre(soft) init'ed(com.dmdirc.logger.ErrorManager__ static_init.new ErrorManager(ErrorManager__static_i nit#1).sendReports)
pre(soft) init'ed(com.dmdirc.ui.FatalErrorDialog$4__ static_init.new int[](FatalErrorDialog$4__static_in it#1)[...])
pre(soft) init'ed(com.dmdirc.logger.ErrorManager__ static_init.new ErrorManager(ErrorManager__static_i nit#1).reportThread)
pre(soft) init'ed(com/dmdirc/logger/ProgramError. errorDir)
pre(soft) this.knownPlugins != null
presumptioninit'ed(com.dmdirc.actions.CoreActionType.CLIENT_ PREFS_CLOSED)
presumptioninit'ed(com.dmdirc.actions.CoreActionType.CLIENT_ PREFS_OPENED)
presumptionjava.util.Iterator:next(...)@458 != null
presumptionjava.util.Iterator:next(...)@471 != null
presumptionpi.children@471 != null
presumptionpi.provides@471 != null
postinit'ed(com/dmdirc/logger/ProgramError.errorDir)
postinit'ed(java.lang.StringBuilder:toString(...)._ tainted)
postpossibly_updated(java.lang.StringBuilder:toString(. ..)._tainted)
postinit'ed(com.dmdirc.logger.ErrorManager__static_ init.new ErrorManager(ErrorManager__static_init#1). reportThread)
postinit'ed(new ErrorReportingThread(sendError#1) num objects)
postinit'ed(new ErrorReportingThread(sendError#1). queue)
postinit'ed(new File(getErrorFile#1) num objects)
postinit'ed(new PluginClassLoader(getSubClassLoader#1) num objects)
postinit'ed(new PluginClassLoader(getSubClassLoader#1). pluginInfo)
unanalyzedcall on java.util.Map:values
unanalyzedcall on java.util.ArrayList
unanalyzedcall on java.lang.Throwable:__curr_excep_obj
unanalyzedcall on updateProvides
unanalyzedcall on checkRequirements
unanalyzedcall on loadRequired
unanalyzedcall on onLoad
unanalyzedcall on getName
unanalyzedcall on java.lang.Throwable:getMessage
unanalyzedcall on getErrorManager
unanalyzedcall on addError
unanalyzedcall on unloadPlugin
unanalyzedcall on getMainClass
unanalyzedcall on loadClass
unanalyzedcall on com.dmdirc.actions.ActionManager:processEve nt
unanalyzedcall on loadPlugin
unanalyzedcall on com.dmdirc.util.ConfigFile:isKeyDomain
unanalyzedcall on com.dmdirc.util.ConfigFile:getKeyDomain
unanalyzedcall on java.util.Map:containsKey
unanalyzedcall on java.util.Map:get
unanalyzedcall on java.lang.String:isEmpty
unanalyzedcall on java.util.List:remove
unanalyzedcall on com.dmdirc.util.ConfigFile:isFlatDomain
unanalyzedcall on com.dmdirc.util.ConfigFile:getFlatDomain
unanalyzedcall on java.util.List:contains
unanalyzedcall on getPluginManager
unanalyzedcall on getPluginInfoByName
unanalyzedcall on java.util.List:iterator
unanalyzedcall on java.lang.ClassLoader
unanalyzedcall on java.lang.String:equalsIgnoreCase
unanalyzedcall on delProvider
unanalyzedcall on java.util.List:clear
unanalyzedcall on isUnloadable
unanalyzedcall on onUnload
unanalyzedcall on java.lang.Exception:getMessage
unanalyzedcall on java.lang.Exception:printStackTrace
unanalyzedcall on java.util.concurrent.atomic. AtomicLong:getAndIncrement
unanalyzedcall on java.util.Date
unanalyzedcall on java.lang.IllegalArgumentException
unanalyzedcall on java.util.Arrays:copyOf
unanalyzedcall on java.util.Date:clone
unanalyzedcall on java.util.List:add
unanalyzedcall on com.dmdirc.logger.ErrorReportStatus:equals
unanalyzedcall on fireErrorStatusChanged
unanalyzedcall on java.lang.Object:notifyAll
unanalyzedcall on java.util.concurrent.BlockingQueue:add
unanalyzedcall on java.lang.Thread:isAlive
unanalyzedcall on java.lang.Thread
unanalyzedcall on com.dmdirc.logger.ErrorReportingThread:setD aemon
unanalyzedcall on java.lang.Thread:start
unanalyzedcall on java.awt.GraphicsEnvironment:isHeadless
unanalyzedcall on java.io.PrintStream:println
unanalyzedcall on javax.swing.SwingUtilities:invokeLater
unanalyzedcall on java.util.concurrent.Semaphore
unanalyzedcall on java.util.concurrent.Semaphore:acquireUnint erruptibly
unanalyzedcall on java.lang.Object:wait
unanalyzedcall on com.dmdirc.util.ListenerList:get
unanalyzedcall on isReady
unanalyzedcall on errorAdded
unanalyzedcall on com.dmdirc.logger.ErrorFixedStatus:equals
unanalyzedcall on java.lang.String:startsWith
unanalyzedcall on java.io.File:exists
unanalyzedcall on com.dmdirc.Main:getConfigDir
unanalyzedcall on java.io.File
unanalyzedcall on java.io.File:mkdirs
unanalyzedcall on java.util.Date:getTime
unanalyzedcall on java.io.File:renameTo
unanalyzedcall on java.io.File:createNewFile
unanalyzedcall on java.io.FileOutputStream
unanalyzedcall on java.util.concurrent.Semaphore:release
unanalyzedcall on java.io.IOException:printStackTrace
unanalyzedcall on java.io.OutputStream
unanalyzedcall on java.io.PrintWriter
unanalyzedcall on java.io.PrintWriter:println
unanalyzedcall on java.io.PrintWriter:close
unanalyzedcall on java.lang.Throwable:getStackTrace
unanalyzedcall on java.lang.Throwable:toString
unanalyzedcall on java.lang.StackTraceElement:toString
unanalyzedcall on java.lang.Throwable:getCause
unanalyzedcall on getTrace
unanalyzedcall on java.lang.Object:getClass
unanalyzedcall on java.lang.Object:equals
unanalyzedcall on com.dmdirc.logger.ErrorReportStatus:ordinal
unanalyzedcall on javax.swing.JButton:setText
unanalyzedcall on javax.swing.JButton:setEnabled
unanalyzedcall on equals
unanalyzedcall on getReportStatus
unanalyzedcall on errorStatusChanged
unanalyzedcall on java.lang.String:equals
unanalyzedcall on java.util.Arrays:equals
test_vectorjava.lang.Object:equals(...)@457: {0}, {1}
test_vectorjava.lang.Object:equals(...)@470: {0}, {1}
test_vectorjava.util.Iterator:hasNext(...)@471: {0}, {1}
test_vectorpi.tempLoaded@458: {0}, {1}