You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@activemq.apache.org by "Justin Bertram (JIRA)" <ji...@apache.org> on 2018/01/23 17:11:00 UTC

[jira] [Resolved] (ARTEMIS-1414) Coverity: Resource leak on an exceptional path in ArtemisCreatePlugin.java

     [ https://issues.apache.org/jira/browse/ARTEMIS-1414?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Justin Bertram resolved ARTEMIS-1414.
-------------------------------------
       Resolution: Fixed
    Fix Version/s: 2.5.0

> Coverity: Resource leak on an exceptional path in ArtemisCreatePlugin.java
> --------------------------------------------------------------------------
>
>                 Key: ARTEMIS-1414
>                 URL: https://issues.apache.org/jira/browse/ARTEMIS-1414
>             Project: ActiveMQ Artemis
>          Issue Type: Bug
>          Components: Broker
>    Affects Versions: 2.4.0
>            Reporter: Jiri Daněk
>            Assignee: Justin Bertram
>            Priority: Trivial
>             Fix For: 2.5.0
>
>
> {noformat}
> 147   @Override
> 148   protected void doExecute() throws MojoExecutionException, MojoFailureException {
> 149      getLog().info("Local " + localRepository);
>    	CID 1418665: DLS: Dead local store (FB.DLS_DEAD_LOCAL_STORE) [select issue]
> 150      MavenProject project = (MavenProject) getPluginContext().get("project");
> 151
>    	1. Condition !isArtemisHome(home.toPath()), taking true branch.
> 152      if (!isArtemisHome(home.toPath())) {
>    	2. Condition isArtemisHome(alternateHome.toPath()), taking true branch.
> 153         if (isArtemisHome(alternateHome.toPath())) {
> 154            home = alternateHome;
>    	3. Falling through to end of if statement.
> 155         } else {
> 156            getLog().error("********************************************************************************************");
> 157            getLog().error("Could not locate suitable Artemis.home on either " + home + " or " + alternateHome);
> 158            getLog().error("Use the binary distribution or build the distribution before running the examples");
> 159            getLog().error("********************************************************************************************");
> 160
> 161            throw new MojoExecutionException("Couldn't find artemis.home");
> 162         }
> 163      }
> 164
> 165      Map properties = getPluginContext();
> 166
> 167      Set<Map.Entry> entries = properties.entrySet();
> 168
> 169      getLog().info("Entries.size " + entries.size());
>    	4. Iterating over another element of entries.
>    	6. No elements left in entries, leaving loop.
> 170      for (Map.Entry entry : entries) {
> 171         getLog().info("... key=" + entry.getKey() + " = " + entry.getValue());
>    	5. Jumping back to the beginning of the loop.
> 172      }
> 173
> 174      ArrayList<String> listCommands = new ArrayList<>();
> 175
> 176      add(listCommands, "create", "--allow-anonymous", "--silent", "--force", "--no-web", "--user", user, "--password", password, "--role", role, "--port-offset", "" + portOffset, "--data", dataFolder);
> 177
>    	7. Condition allowAnonymous, taking true branch.
> 178      if (allowAnonymous) {
> 179         add(listCommands, "--allow-anonymous");
>    	8. Falling through to end of if statement.
> 180      } else {
> 181         add(listCommands, "--require-login");
> 182      }
> 183
>    	9. Condition !javaOptions.isEmpty(), taking false branch.
> 184      if (!javaOptions.isEmpty()) {
> 185         add(listCommands, "--java-options", javaOptions);
> 186      }
> 187
>    	10. Condition slave, taking true branch.
> 188      if (slave) {
> 189         add(listCommands, "--slave");
> 190      }
> 191
>    	11. Condition replicated, taking true branch.
> 192      if (replicated) {
> 193         add(listCommands, "--replicated");
> 194      }
> 195
>    	12. Condition sharedStore, taking true branch.
> 196      if (sharedStore) {
> 197         add(listCommands, "--shared-store");
> 198      }
> 199
>    	13. Condition clustered, taking true branch.
> 200      if (clustered) {
> 201         add(listCommands, "--clustered");
> 202         add(listCommands, "--message-load-balancing", messageLoadBalancing);
> 203      }
> 204
>    	14. Condition failoverOnShutdown, taking true branch.
> 205      if (failoverOnShutdown) {
> 206         add(listCommands, "--failover-on-shutdown");
> 207      }
> 208
>    	15. Condition noAutoTune, taking true branch.
> 209      if (noAutoTune) {
> 210         add(listCommands, "--no-autotune");
> 211      }
> 212
> 213      add(listCommands, "--verbose");
> 214
>    	16. Condition "Linux".equals(java.lang.System.getProperty("os.name")), taking false branch.
> 215      if ("Linux".equals(System.getProperty("os.name"))) {
> 216         add(listCommands, "--aio");
> 217      }
> 218
>    	17. Iterating over another element of args.
>    	19. No elements left in args, leaving loop.
> 219      for (String str : args) {
> 220         add(listCommands, str);
>    	18. Jumping back to the beginning of the loop.
> 221      }
> 222
> 223      add(listCommands, instance.getAbsolutePath());
> 224
> 225      getLog().debug("***** Server created at " + instance + " with home=" + home + " *****");
> 226
> 227      File commandLine = new File(instance.getParentFile(), "create-" + instance.getName() + ".sh");
> 228      FileOutputStream outputStream;
> 229      try {
>    	20. new_resource: new java.io.FileOutputStream(commandLine) creates a new resource.
>    	21. var_assign: Assigning: outputStream = resource returned from new java.io.FileOutputStream(commandLine).
> 230         outputStream = new FileOutputStream(commandLine);
>    	22. Falling through to end of try statement.
> 231      } catch (Exception e) {
> 232         e.printStackTrace();
> 233         throw new MojoExecutionException(e.getMessage(), e);
> 234      }
> 235
>    	CID 1418823: Dm: Dubious method used (FB.DM_DEFAULT_ENCODING) [select issue]
>    	23. var_assign: Assigning: commandLineStream = resource returned from new java.io.PrintStream(outputStream).
> 236      PrintStream commandLineStream = new PrintStream(outputStream);
>    	24. noescape: Resource commandLineStream is not closed or saved in println.
> 237      commandLineStream.println("# These are the commands used to create " + instance.getName());
>    	25. noescape: Resource commandLineStream is not closed or saved in println.
> 238      commandLineStream.println(getCommandline(listCommands));
> 239
> 240      try {
> 241         Artemis.execute(home, null, listCommands);
> 242
>    	26. Condition configuration != null, taking true branch.
> 243         if (configuration != null) {
> 244            String[] list = configuration.list();
> 245
>    	27. Condition list != null, taking false branch.
> 246            if (list != null) {
> 247               getLog().debug("************************************************");
> 248               getLog().debug("Copying configuration files:");
> 249
> 250               copyConfigurationFiles(list, configuration.toPath(), instance.toPath().resolve("etc"), commandLineStream);
> 251            }
> 252         }
> 253
>    	28. throw: Throwing org.eclipse.aether.collection.DependencyCollectionException (or subclass) from call to resolveDependencies. [show details]
> 254         Set<File> files = resolveDependencies(libListWithDeps, libList);
> 255
> 256         if (!files.isEmpty()) {
> 257            commandLineStream.println();
> 258            commandLineStream.println("# This is a list of files that need to be installed under ./lib.");
> 259            commandLineStream.println("# We are copying them from your maven lib home");
> 260            for (File file : files) {
> 261               copyToLib(file, commandLineStream);
> 262            }
> 263         }
> 264
> 265         commandLineStream.close();
> 266
> 267         FileUtil.makeExec(commandLine);
> 268
> 269         getLog().info("###################################################################################################");
> 270         getLog().info(commandLine.getName() + " created with commands to reproduce " + instance.getName());
> 271         getLog().info("under " + commandLine.getParent());
> 272         getLog().info("###################################################################################################");
> 273
>    	29. Catching exception.
> 274      } catch (Throwable e) {
> 275         getLog().error(e);
>    	30. Throwing org.apache.maven.plugin.MojoFailureException; exiting method with uncaught exception.
>    	31. leaked_resource: Variable commandLineStream going out of scope leaks the resource it refers to.
>    	
> CID 1409614 (#1 of 1): Resource leak on an exceptional path (RESOURCE_LEAK)
> 32. leaked_resource: Variable outputStream going out of scope leaks the resource it refers to.
> 276         throw new MojoFailureException(e.getMessage());
> 277      }
> 278   }
> {noformat}



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)