Program: 21384
Project: 21384
Buggy source:
@Override public PluginStep doStep(PluginStep step,String parameter){
switch (step.getStep()) {
case PluginStep.STEP_DECRYPT:
    Vector<DownloadLink> decryptedLinks=new Vector<DownloadLink>();
  try {
    URL url=new URL(parameter);
    if (parameter.matches("String_Node_Str")) {
      RequestInfo reqinfo=getRequest(new URL("String_Node_Str"));
      if (reqinfo.getLocation() != null)       reqinfo=getRequest(new URL("String_Node_Str"));
      int cat=Integer.parseInt(parameter.replaceFirst("String_Node_Str","String_Node_Str").replaceFirst("String_Node_Str","String_Node_Str"));
      Pattern pattern=Pattern.compile("String_Node_Str",Pattern.CASE_INSENSITIVE);
      Matcher matcher=pattern.matcher(reqinfo.getHtmlCode());
      String name=null;
      while (matcher.find()) {
        if (Integer.parseInt(matcher.group(1)) == cat) {
          name=matcher.group(2).toLowerCase();
          break;
        }
      }
      if (name == null)       return null;
      reqinfo=getRequest(url,null,null,true);
      pattern=Pattern.compile("String_Node_Str" + name + "String_Node_Str",Pattern.CASE_INSENSITIVE);
      String bet=getFirstMatch(reqinfo.getHtmlCode(),pattern,1);
      pattern=Pattern.compile("String_Node_Str",Pattern.CASE_INSENSITIVE);
      matcher=pattern.matcher(bet);
      while (matcher.find()) {
        decryptedLinks.add(this.createDownloadlink(matcher.group(1)));
      }
      step.setParameter(decryptedLinks);
      return null;
    }
    String modifiedURL=url.toString();
    modifiedURL=modifiedURL.replaceAll("String_Node_Str","String_Node_Str");
    modifiedURL=modifiedURL.replaceAll("String_Node_Str","String_Node_Str");
    modifiedURL=modifiedURL.substring(modifiedURL.lastIndexOf("String_Node_Str"));
    patternCaptcha=Pattern.compile(String.format(dynamicCaptcha,new Object[]{modifiedURL}));
    logger.fine("String_Node_Str" + patternCaptcha);
    RequestInfo reqinfo=getRequest(url,null,null,true);
    if (reqinfo.getLocation() != null)     reqinfo=getRequest(url,null,null,true);
    String furl=getSimpleMatch(reqinfo.getHtmlCode(),"String_Node_Str" + modifiedURL + "String_Node_Str",0);
    if (furl != null) {
      url=new URL(furl + modifiedURL);
      logger.info("String_Node_Str" + furl + modifiedURL);
      reqinfo=getRequest(url,null,null,true);
      parameter=furl + modifiedURL;
    }
    Vector<Vector<String>> links;
    links=getAllSimpleMatches(reqinfo.getHtmlCode(),"String_Node_Str");
    Vector<String> helpvector=new Vector<String>();
    String helpstring="String_Node_Str";
    if (parameter.indexOf("String_Node_Str") >= 0 || parameter.indexOf("String_Node_Str") >= 0) {
      logger.info("String_Node_Str");
      progress.setRange(1);
      helpstring=EinzelLinks(parameter);
      progress.increase(1);
      decryptedLinks.add(this.createDownloadlink(helpstring));
    }
 else     if (parameter.indexOf("String_Node_Str") >= 0) {
      logger.info("String_Node_Str");
      progress.setRange(1);
      helpvector=ContainerLinks(parameter);
      progress.increase(1);
      for (int j=0; j < helpvector.size(); j++) {
        decryptedLinks.add(this.createDownloadlink(helpvector.get(j)));
      }
    }
 else     if (parameter.indexOf("String_Node_Str") >= 0) {
      logger.info("String_Node_Str");
      progress.setRange(1);
      helpvector=ContainerLinks(parameter);
      progress.increase(1);
      for (int j=0; j < helpvector.size(); j++) {
        decryptedLinks.add(this.createDownloadlink(helpvector.get(j)));
      }
    }
 else {
      logger.info("String_Node_Str");
      progress.setRange(links.size());
      for (int i=0; i < links.size(); i++) {
        progress.increase(1);
        if (links.get(i).get(0).indexOf("String_Node_Str") >= 0) {
          helpstring=EinzelLinks(links.get(i).get(0));
          decryptedLinks.add(this.createDownloadlink(helpstring));
        }
 else         if (links.get(i).get(0).indexOf("String_Node_Str") >= 0) {
          helpvector=ContainerLinks(links.get(i).get(0));
          for (int j=0; j < helpvector.size(); j++) {
            decryptedLinks.add(this.createDownloadlink(helpvector.get(j)));
          }
        }
 else {
          decryptedLinks.add(this.createDownloadlink(links.get(i).get(0)));
          decryptedLinks.add(this.createDownloadlink(links.get(i).get(0)));
        }
      }
    }
  }
 catch (  MalformedURLException e) {
    e.printStackTrace();
  }
catch (  IOException e) {
    e.printStackTrace();
  }
step.setParameter(decryptedLinks);
}
return null;
}

Fixed version (ground truth):
@Override public PluginStep doStep(PluginStep step,String parameter){
switch (step.getStep()) {
case PluginStep.STEP_DECRYPT:
    Vector<DownloadLink> decryptedLinks=new Vector<DownloadLink>();
  try {
    URL url=new URL(parameter);
    if (parameter.matches("String_Node_Str")) {
      RequestInfo reqinfo=getRequest(new URL("String_Node_Str"));
      if (reqinfo.getLocation() != null)       reqinfo=getRequest(new URL("String_Node_Str"));
      int cat=Integer.parseInt(parameter.replaceFirst("String_Node_Str","String_Node_Str").replaceFirst("String_Node_Str","String_Node_Str"));
      Pattern pattern=Pattern.compile("String_Node_Str",Pattern.CASE_INSENSITIVE);
      Matcher matcher=pattern.matcher(reqinfo.getHtmlCode());
      String name=null;
      while (matcher.find()) {
        if (Integer.parseInt(matcher.group(1)) == cat) {
          name=matcher.group(2).toLowerCase();
          break;
        }
      }
      if (name == null)       return null;
      reqinfo=getRequest(url,null,null,true);
      name+="String_Node_Str";
      String bet=null;
      while (bet == null) {
        name=name.substring(0,name.length() - 1);
        if (name.length() == 0)         return null;
        pattern=Pattern.compile("String_Node_Str" + name + "String_Node_Str",Pattern.CASE_INSENSITIVE);
        bet=getFirstMatch(reqinfo.getHtmlCode(),pattern,1);
      }
      pattern=Pattern.compile("String_Node_Str",Pattern.CASE_INSENSITIVE);
      matcher=pattern.matcher(bet);
      while (matcher.find()) {
        decryptedLinks.add(this.createDownloadlink(matcher.group(1)));
      }
      step.setParameter(decryptedLinks);
      return null;
    }
    String modifiedURL=url.toString();
    modifiedURL=modifiedURL.replaceAll("String_Node_Str","String_Node_Str");
    modifiedURL=modifiedURL.replaceAll("String_Node_Str","String_Node_Str");
    modifiedURL=modifiedURL.substring(modifiedURL.lastIndexOf("String_Node_Str"));
    patternCaptcha=Pattern.compile(String.format(dynamicCaptcha,new Object[]{modifiedURL}));
    logger.fine("String_Node_Str" + patternCaptcha);
    RequestInfo reqinfo=getRequest(url,null,null,true);
    if (reqinfo.getLocation() != null)     reqinfo=getRequest(url,null,null,true);
    String furl=getSimpleMatch(reqinfo.getHtmlCode(),"String_Node_Str" + modifiedURL + "String_Node_Str",0);
    if (furl != null) {
      url=new URL(furl + modifiedURL);
      logger.info("String_Node_Str" + furl + modifiedURL);
      reqinfo=getRequest(url,null,null,true);
      parameter=furl + modifiedURL;
    }
    Vector<Vector<String>> links;
    links=getAllSimpleMatches(reqinfo.getHtmlCode(),"String_Node_Str");
    Vector<String> helpvector=new Vector<String>();
    String helpstring="String_Node_Str";
    if (parameter.indexOf("String_Node_Str") >= 0 || parameter.indexOf("String_Node_Str") >= 0) {
      logger.info("String_Node_Str");
      progress.setRange(1);
      helpstring=EinzelLinks(parameter);
      progress.increase(1);
      decryptedLinks.add(this.createDownloadlink(helpstring));
    }
 else     if (parameter.indexOf("String_Node_Str") >= 0) {
      logger.info("String_Node_Str");
      progress.setRange(1);
      helpvector=ContainerLinks(parameter);
      progress.increase(1);
      for (int j=0; j < helpvector.size(); j++) {
        decryptedLinks.add(this.createDownloadlink(helpvector.get(j)));
      }
    }
 else     if (parameter.indexOf("String_Node_Str") >= 0) {
      logger.info("String_Node_Str");
      progress.setRange(1);
      helpvector=ContainerLinks(parameter);
      progress.increase(1);
      for (int j=0; j < helpvector.size(); j++) {
        decryptedLinks.add(this.createDownloadlink(helpvector.get(j)));
      }
    }
 else {
      logger.info("String_Node_Str");
      progress.setRange(links.size());
      for (int i=0; i < links.size(); i++) {
        progress.increase(1);
        if (links.get(i).get(0).indexOf("String_Node_Str") >= 0) {
          helpstring=EinzelLinks(links.get(i).get(0));
          decryptedLinks.add(this.createDownloadlink(helpstring));
        }
 else         if (links.get(i).get(0).indexOf("String_Node_Str") >= 0) {
          helpvector=ContainerLinks(links.get(i).get(0));
          for (int j=0; j < helpvector.size(); j++) {
            decryptedLinks.add(this.createDownloadlink(helpvector.get(j)));
          }
        }
 else {
          decryptedLinks.add(this.createDownloadlink(links.get(i).get(0)));
          decryptedLinks.add(this.createDownloadlink(links.get(i).get(0)));
        }
      }
    }
  }
 catch (  MalformedURLException e) {
    e.printStackTrace();
  }
catch (  IOException e) {
    e.printStackTrace();
  }
step.setParameter(decryptedLinks);
}
return null;
}