output: #fixed code
                                  public MakefileHolder createMakefileFromArtifacts( File outputDir, Set<Artifact> artifacts,
                                                                String ndkArchitecture,
                                                                boolean useHeaderArchives )
              throws IOException, MojoExecutionException
      {
  
          final StringBuilder makeFile = new StringBuilder( "# Generated by Android Maven Plugin\n" );
          final List<File> includeDirectories = new ArrayList<File>();
  
          // Add now output - allows us to somewhat intelligently determine the include paths to use for the header
          // archive
          makeFile.append( "$(shell echo \"LOCAL_C_INCLUDES=$(LOCAL_C_INCLUDES)\" > $(" + MAKEFILE_CAPTURE_FILE + "))" );
          makeFile.append( '\n' );
          makeFile.append( "$(shell echo \"LOCAL_PATH=$(LOCAL_PATH)\" >> $(" + MAKEFILE_CAPTURE_FILE + "))" );
          makeFile.append( '\n' );
          makeFile.append( "$(shell echo \"LOCAL_MODULE_FILENAME=$(LOCAL_MODULE_FILENAME)\" >> $("
                  + MAKEFILE_CAPTURE_FILE + "))" );
          makeFile.append( '\n' );
          makeFile.append( "$(shell echo \"LOCAL_MODULE=$(LOCAL_MODULE)\" >> $(" + MAKEFILE_CAPTURE_FILE + "))" );
          makeFile.append( '\n' );
          makeFile.append( "$(shell echo \"LOCAL_CFLAGS=$(LOCAL_CFLAGS)\" >> $(" + MAKEFILE_CAPTURE_FILE + "))" );
          makeFile.append( '\n' );
  
          if ( ! artifacts.isEmpty() )
          {
              for ( Artifact artifact : artifacts )
              {
                  if ( !NativeHelper.isMatchinArchitecture( ndkArchitecture, artifact ) )
                  {
                      continue;
                  }
  
                  makeFile.append( "#\n" );
                  makeFile.append( "# Group ID: " );
                  makeFile.append( artifact.getGroupId() );
                  makeFile.append( '\n' );
                  makeFile.append( "# Artifact ID: " );
                  makeFile.append( artifact.getArtifactId() );
                  makeFile.append( '\n' );
                  makeFile.append( "# Artifact Type: " );
                  makeFile.append( artifact.getType() );
                  makeFile.append( '\n' );
                  makeFile.append( "# Version: " );
                  makeFile.append( artifact.getVersion() );
                  makeFile.append( '\n' );
                  makeFile.append( "include $(CLEAR_VARS)" );
                  makeFile.append( '\n' );
                  makeFile.append( "LOCAL_MODULE    := " );
                  makeFile.append( artifact.getArtifactId() );
                  makeFile.append( '\n' );
  
                  final boolean apklibStatic = addLibraryDetails( makeFile, outputDir, artifact, ndkArchitecture );
  
                  if ( useHeaderArchives )
                  {
                      try
                      {
                          Artifact harArtifact = new DefaultArtifact( artifact.getGroupId(), artifact.getArtifactId(),
                                  artifact.getVersion(), artifact.getScope(), "har", artifact.getClassifier(),
                                  artifact.getArtifactHandler() );
                          final Artifact resolvedHarArtifact = AetherHelper
                                  .resolveArtifact( harArtifact, repoSystem, repoSession, projectRepos );
  
                          File includeDir = new File( System.getProperty( "java.io.tmpdir" ),
                                  "android_maven_plugin_native_includes" + System.currentTimeMillis() + "_"
                                          + resolvedHarArtifact.getArtifactId() );
                          includeDir.deleteOnExit();
                          includeDirectories.add( includeDir );
  
                          JarHelper.unjar( new JarFile( resolvedHarArtifact.getFile() ), includeDir,
                                  new JarHelper.UnjarListener()
                                  {
                                      @Override
                                      public boolean include( JarEntry jarEntry )
                                      {
                                          return ! jarEntry.getName().startsWith( "META-INF" );
                                      }
                                  } );
  
                          makeFile.append( "LOCAL_EXPORT_C_INCLUDES := " );
                          final String str = includeDir.getAbsolutePath();
                          makeFile.append( str );
                          makeFile.append( '\n' );
                          
                          if ( log.isDebugEnabled() )
                          {
                              Collection<File> includes = FileUtils.listFiles( includeDir,
                                      TrueFileFilter.INSTANCE, TrueFileFilter.INSTANCE );
                              log.debug( "Listing LOCAL_EXPORT_C_INCLUDES for " + artifact.getId() + ": " + includes );
                          }
                      }
                      catch ( Exception e )
                      {
                          throw new MojoExecutionException(
                                  "Error while resolving header archive file for: " + artifact.getArtifactId(), e );
                      }
                  }
                  if ( "a".equals( artifact.getType() ) || apklibStatic )
                  {
                      makeFile.append( "include $(PREBUILT_STATIC_LIBRARY)\n" );
                  }
                  else
                  {
                      makeFile.append( "include $(PREBUILT_SHARED_LIBRARY)\n" );
                  }
              }
          }
          
          return new MakefileHolder( includeDirectories, makeFile.toString() );
      }
input: #vulnerable code 
                                  public MakefileHolder createMakefileFromArtifacts( File outputDir, Set<Artifact> artifacts,
                                                                String ndkArchitecture,
                                                                boolean useHeaderArchives )
              throws IOException, MojoExecutionException
      {
  
          final StringBuilder makeFile = new StringBuilder( "# Generated by Android Maven Plugin\n" );
          final List<File> includeDirectories = new ArrayList<File>();
  
          // Add now output - allows us to somewhat intelligently determine the include paths to use for the header
          // archive
          makeFile.append( "$(shell echo \"LOCAL_C_INCLUDES=$(LOCAL_C_INCLUDES)\" > $(" + MAKEFILE_CAPTURE_FILE + "))" );
          makeFile.append( '\n' );
          makeFile.append( "$(shell echo \"LOCAL_PATH=$(LOCAL_PATH)\" >> $(" + MAKEFILE_CAPTURE_FILE + "))" );
          makeFile.append( '\n' );
          makeFile.append( "$(shell echo \"LOCAL_MODULE_FILENAME=$(LOCAL_MODULE_FILENAME)\" >> $("
                  + MAKEFILE_CAPTURE_FILE + "))" );
          makeFile.append( '\n' );
          makeFile.append( "$(shell echo \"LOCAL_MODULE=$(LOCAL_MODULE)\" >> $(" + MAKEFILE_CAPTURE_FILE + "))" );
          makeFile.append( '\n' );
          makeFile.append( "$(shell echo \"LOCAL_CFLAGS=$(LOCAL_CFLAGS)\" >> $(" + MAKEFILE_CAPTURE_FILE + "))" );
          makeFile.append( '\n' );
  
          if ( ! artifacts.isEmpty() )
          {
              for ( Artifact artifact : artifacts )
              {
                  boolean apklibStatic = false;
  
                  makeFile.append( "#\n" );
                  makeFile.append( "# Group ID: " );
                  makeFile.append( artifact.getGroupId() );
                  makeFile.append( '\n' );
                  makeFile.append( "# Artifact ID: " );
                  makeFile.append( artifact.getArtifactId() );
                  makeFile.append( '\n' );
                  makeFile.append( "# Artifact Type: " );
                  makeFile.append( artifact.getType() );
                  makeFile.append( '\n' );
                  makeFile.append( "# Version: " );
                  makeFile.append( artifact.getVersion() );
                  makeFile.append( '\n' );
                  makeFile.append( "include $(CLEAR_VARS)" );
                  makeFile.append( '\n' );
                  makeFile.append( "LOCAL_MODULE    := " );
                  makeFile.append( artifact.getArtifactId() );
                  makeFile.append( '\n' );
                  apklibStatic = addLibraryDetails( makeFile, outputDir, artifact, ndkArchitecture );
                  if ( useHeaderArchives )
                  {
                      try
                      {
                          Artifact harArtifact = new DefaultArtifact( artifact.getGroupId(), artifact.getArtifactId(),
                                  artifact.getVersion(), artifact.getScope(), "har", artifact.getClassifier(),
                                  artifact.getArtifactHandler() );
                          final Artifact resolvedHarArtifact = AetherHelper
                                  .resolveArtifact( harArtifact, repoSystem, repoSession, projectRepos );
  
                          File includeDir = new File( System.getProperty( "java.io.tmpdir" ),
                                  "android_maven_plugin_native_includes" + System.currentTimeMillis() + "_"
                                          + resolvedHarArtifact.getArtifactId() );
                          includeDir.deleteOnExit();
                          includeDirectories.add( includeDir );
  
                          JarHelper.unjar( new JarFile( resolvedHarArtifact.getFile() ), includeDir,
                                  new JarHelper.UnjarListener()
                                  {
                                      @Override
                                      public boolean include( JarEntry jarEntry )
                                      {
                                          return ! jarEntry.getName().startsWith( "META-INF" );
                                      }
                                  } );
  
                          makeFile.append( "LOCAL_EXPORT_C_INCLUDES := " );
                          final String str = includeDir.getAbsolutePath();
                          makeFile.append( str );
                          makeFile.append( '\n' );
                          
                          if ( log.isDebugEnabled() )
                          {
                              Collection<File> includes = FileUtils.listFiles( includeDir,
                                      TrueFileFilter.INSTANCE, TrueFileFilter.INSTANCE );
                              log.debug( "Listing LOCAL_EXPORT_C_INCLUDES for " + artifact.getId() + ": " + includes );
                          }
                      }
                      catch ( Exception e )
                      {
                          throw new MojoExecutionException(
                                  "Error while resolving header archive file for: " + artifact.getArtifactId(), e );
                      }
                  }
                  if ( "a".equals( artifact.getType() ) || apklibStatic )
                  {
                      makeFile.append( "include $(PREBUILT_STATIC_LIBRARY)\n" );
                  }
                  else
                  {
                      makeFile.append( "include $(PREBUILT_SHARED_LIBRARY)\n" );
                  }
              }
          }
          
          return new MakefileHolder( includeDirectories, makeFile.toString() );
      } 
                              #location 65 
                              #vulnerability type RESOURCE_LEAK