Program: 20842
Project: 20842
Buggy source:
public void doFree(DownloadLink downloadLink) throws Exception, PluginException {
  doSomething();
  if (brbefore.contains("String_Node_Str")) {
    logger.info("String_Node_Str" + downloadLink.getDownloadURL() + "String_Node_Str");
    throw new PluginException(LinkStatus.ERROR_TEMPORARILY_UNAVAILABLE,"String_Node_Str");
  }
  boolean resumable=true;
  int maxchunks=1;
  Form freeform=new Form();
  freeform.setMethod(MethodType.POST);
  freeform.put("String_Node_Str","String_Node_Str");
  freeform.put("String_Node_Str","String_Node_Str");
  freeform.put("String_Node_Str",downloadLink.getName());
  freeform.put("String_Node_Str",new Regex(downloadLink.getDownloadURL(),"String_Node_Str").getMatch(0));
  br.submitForm(freeform);
  doSomething();
  checkErrors(downloadLink);
  String md5hash=br.getRegex("String_Node_Str").getMatch(0);
  if (md5hash != null) {
    md5hash=md5hash.trim();
    logger.info("String_Node_Str" + md5hash);
    downloadLink.setMD5Hash(md5hash);
  }
  br.setFollowRedirects(false);
  Form DLForm=getTheForm(downloadLink);
  int tt=60;
  String ttt=br.getRegex("String_Node_Str").getMatch(0);
  if (ttt == null)   ttt=br.getRegex("String_Node_Str").getMatch(0);
  if (ttt != null && Integer.parseInt(ttt) < 180) {
    logger.info("String_Node_Str" + ttt.trim() + "String_Node_Str");
    tt=Integer.parseInt(ttt);
  }
  sleep(tt * 1001,downloadLink);
  String passCode=null;
  boolean password=false;
  boolean recaptcha=false;
  if (br.containsHTML("String_Node_Str")) {
    password=true;
    logger.info("String_Node_Str");
  }
  if (br.containsHTML("String_Node_Str") && !br.containsHTML("String_Node_Str")) {
    logger.info("String_Node_Str");
    String[][] letters=new Regex(Encoding.htmlDecode(br.toString()),"String_Node_Str").getMatches();
    if (letters == null || letters.length == 0) {
      logger.warning("String_Node_Str");
      throw new PluginException(LinkStatus.ERROR_PLUGIN_DEFECT);
    }
    SortedMap<Integer,String> capMap=new TreeMap<Integer,String>();
    for (    String[] letter : letters) {
      capMap.put(Integer.parseInt(letter[0]),letter[1]);
    }
    StringBuilder code=new StringBuilder();
    for (    String value : capMap.values()) {
      code.append(value);
    }
    DLForm.put("String_Node_Str",code.toString());
    logger.info("String_Node_Str" + code.toString() + "String_Node_Str");
  }
 else   if (br.containsHTML("String_Node_Str")) {
    logger.info("String_Node_Str");
    String[] sitelinks=HTMLParser.getHttpLinks(br.toString(),null);
    String captchaurl=null;
    if (sitelinks == null || sitelinks.length == 0) {
      logger.warning("String_Node_Str");
      throw new PluginException(LinkStatus.ERROR_PLUGIN_DEFECT);
    }
    for (    String link : sitelinks) {
      if (link.contains("String_Node_Str")) {
        captchaurl=link;
        break;
      }
    }
    if (captchaurl == null) {
      logger.warning("String_Node_Str");
      throw new PluginException(LinkStatus.ERROR_PLUGIN_DEFECT);
    }
    String code=getCaptchaCode(captchaurl,downloadLink);
    DLForm.put("String_Node_Str",code);
    logger.info("String_Node_Str" + code + "String_Node_Str");
  }
 else   if (br.containsHTML("String_Node_Str")) {
    String theId=new Regex(brbefore,"String_Node_Str").getMatch(0);
    if (theId == null) {
      logger.warning("String_Node_Str");
      throw new PluginException(LinkStatus.ERROR_PLUGIN_DEFECT);
    }
    logger.info("String_Node_Str");
    PluginForHost recplug=JDUtilities.getPluginForHost("String_Node_Str");
    jd.plugins.hoster.DirectHTTP.Recaptcha rc=((DirectHTTP)recplug).getReCaptcha(br);
    rc.setId(theId);
    rc.setForm(getTheForm(downloadLink));
    rc.load();
    File cf=rc.downloadCaptcha(getLocalCaptchaFile());
    String c=getCaptchaCode(cf,downloadLink);
    if (password == true) {
      if (downloadLink.getStringProperty("String_Node_Str",null) == null) {
        passCode=Plugin.getUserInput("String_Node_Str",downloadLink);
      }
 else {
        passCode=downloadLink.getStringProperty("String_Node_Str",null);
      }
      rc.getForm().put("String_Node_Str",passCode);
      logger.info("String_Node_Str" + passCode + "String_Node_Str");
      password=false;
    }
    rc.getForm().remove("String_Node_Str");
    rc.getForm().put("String_Node_Str","String_Node_Str");
    rc.getForm().put("String_Node_Str","String_Node_Str");
    rc.getForm().put("String_Node_Str",rc.getChallenge());
    rc.getForm().put("String_Node_Str",c);
    rc.getForm().put("String_Node_Str",downloadLink.getDownloadURL());
    Form lol=rc.getForm();
    recaptcha=true;
    br.submitForm(lol);
    logger.info("String_Node_Str" + c + "String_Node_Str");
  }
  doSomething();
  if (recaptcha == false) {
    if (password == true) {
      if (downloadLink.getStringProperty("String_Node_Str",null) == null) {
        passCode=Plugin.getUserInput("String_Node_Str",downloadLink);
      }
 else {
        passCode=downloadLink.getStringProperty("String_Node_Str",null);
      }
      DLForm.put("String_Node_Str",passCode);
      logger.info("String_Node_Str" + passCode + "String_Node_Str");
    }
    dl=jd.plugins.BrowserAdapter.openDownload(br,downloadLink,DLForm,resumable,maxchunks);
    logger.info("String_Node_Str");
  }
  boolean error=false;
  try {
    if (dl.getConnection().getContentType().contains("String_Node_Str"))     error=true;
  }
 catch (  Exception e) {
    error=true;
  }
  if (error) {
    br.followConnection();
    logger.info("String_Node_Str");
    doSomething();
    checkErrors(downloadLink);
    String dllink=br.getRedirectLocation();
    if (dllink == null) {
      if (brbefore.contains("String_Node_Str"))       throw new PluginException(LinkStatus.ERROR_IP_BLOCKED,null,10 * 60 * 1001l);
      if (br.containsHTML("String_Node_Str")) {
        logger.warning("String_Node_Str" + passCode + "String_Node_Str");
        downloadLink.setProperty("String_Node_Str",null);
        throw new PluginException(LinkStatus.ERROR_RETRY);
      }
      if (brbefore.contains("String_Node_Str")) {
        logger.warning("String_Node_Str");
        throw new PluginException(LinkStatus.ERROR_CAPTCHA);
      }
      dllink=getDllink();
    }
    if (dllink == null) {
      logger.warning("String_Node_Str");
      throw new PluginException(LinkStatus.ERROR_PLUGIN_DEFECT);
    }
    logger.info("String_Node_Str" + dllink + "String_Node_Str");
    dl=jd.plugins.BrowserAdapter.openDownload(br,downloadLink,dllink,resumable,maxchunks);
  }
  if (passCode != null) {
    downloadLink.setProperty("String_Node_Str",passCode);
  }
  if (dl.getConnection().getContentType().contains("String_Node_Str")) {
    logger.warning("String_Node_Str");
    br.followConnection();
    if (br.containsHTML("String_Node_Str")) {
      logger.warning("String_Node_Str");
      throw new PluginException(LinkStatus.ERROR_FILE_NOT_FOUND);
    }
    throw new PluginException(LinkStatus.ERROR_PLUGIN_DEFECT);
  }
  dl.startDownload();
}

Fixed version (ground truth):
public void doFree(DownloadLink downloadLink) throws Exception, PluginException {
  doSomething();
  if (brbefore.contains("String_Node_Str")) {
    logger.info("String_Node_Str" + downloadLink.getDownloadURL() + "String_Node_Str");
    throw new PluginException(LinkStatus.ERROR_TEMPORARILY_UNAVAILABLE,"String_Node_Str");
  }
  boolean resumable=true;
  int maxchunks=1;
  Form freeform=new Form();
  freeform.setMethod(MethodType.POST);
  freeform.put("String_Node_Str","String_Node_Str");
  freeform.put("String_Node_Str","String_Node_Str");
  freeform.put("String_Node_Str",downloadLink.getName());
  freeform.put("String_Node_Str",new Regex(downloadLink.getDownloadURL(),"String_Node_Str").getMatch(0));
  br.submitForm(freeform);
  doSomething();
  checkErrors(downloadLink);
  String md5hash=br.getRegex("String_Node_Str").getMatch(0);
  if (md5hash != null) {
    md5hash=md5hash.trim();
    logger.info("String_Node_Str" + md5hash);
    downloadLink.setMD5Hash(md5hash);
  }
  br.setFollowRedirects(false);
  Form DLForm=getTheForm(downloadLink);
  int tt=60;
  String ttt=br.getRegex("String_Node_Str").getMatch(0);
  if (ttt == null)   ttt=br.getRegex("String_Node_Str").getMatch(0);
  if (ttt != null && Integer.parseInt(ttt) < 180) {
    logger.info("String_Node_Str" + ttt.trim() + "String_Node_Str");
    tt=Integer.parseInt(ttt);
  }
  sleep((tt + 2) * 1001,downloadLink);
  String passCode=null;
  boolean password=false;
  boolean recaptcha=false;
  if (br.containsHTML("String_Node_Str")) {
    password=true;
    logger.info("String_Node_Str");
  }
  if (br.containsHTML("String_Node_Str") && !br.containsHTML("String_Node_Str")) {
    logger.info("String_Node_Str");
    String[][] letters=new Regex(Encoding.htmlDecode(br.toString()),"String_Node_Str").getMatches();
    if (letters == null || letters.length == 0) {
      logger.warning("String_Node_Str");
      throw new PluginException(LinkStatus.ERROR_PLUGIN_DEFECT);
    }
    SortedMap<Integer,String> capMap=new TreeMap<Integer,String>();
    for (    String[] letter : letters) {
      capMap.put(Integer.parseInt(letter[0]),letter[1]);
    }
    StringBuilder code=new StringBuilder();
    for (    String value : capMap.values()) {
      code.append(value);
    }
    DLForm.put("String_Node_Str",code.toString());
    logger.info("String_Node_Str" + code.toString() + "String_Node_Str");
  }
 else   if (br.containsHTML("String_Node_Str")) {
    logger.info("String_Node_Str");
    String[] sitelinks=HTMLParser.getHttpLinks(br.toString(),null);
    String captchaurl=null;
    if (sitelinks == null || sitelinks.length == 0) {
      logger.warning("String_Node_Str");
      throw new PluginException(LinkStatus.ERROR_PLUGIN_DEFECT);
    }
    for (    String link : sitelinks) {
      if (link.contains("String_Node_Str")) {
        captchaurl=link;
        break;
      }
    }
    if (captchaurl == null) {
      logger.warning("String_Node_Str");
      throw new PluginException(LinkStatus.ERROR_PLUGIN_DEFECT);
    }
    String code=getCaptchaCode(captchaurl,downloadLink);
    DLForm.put("String_Node_Str",code);
    logger.info("String_Node_Str" + code + "String_Node_Str");
  }
 else   if (br.containsHTML("String_Node_Str")) {
    String theId=new Regex(brbefore,"String_Node_Str").getMatch(0);
    if (theId == null) {
      logger.warning("String_Node_Str");
      throw new PluginException(LinkStatus.ERROR_PLUGIN_DEFECT);
    }
    logger.info("String_Node_Str");
    PluginForHost recplug=JDUtilities.getPluginForHost("String_Node_Str");
    jd.plugins.hoster.DirectHTTP.Recaptcha rc=((DirectHTTP)recplug).getReCaptcha(br);
    rc.setId(theId);
    rc.setForm(getTheForm(downloadLink));
    rc.load();
    File cf=rc.downloadCaptcha(getLocalCaptchaFile());
    String c=getCaptchaCode(cf,downloadLink);
    if (password == true) {
      if (downloadLink.getStringProperty("String_Node_Str",null) == null) {
        passCode=Plugin.getUserInput("String_Node_Str",downloadLink);
      }
 else {
        passCode=downloadLink.getStringProperty("String_Node_Str",null);
      }
      rc.getForm().put("String_Node_Str",passCode);
      logger.info("String_Node_Str" + passCode + "String_Node_Str");
      password=false;
    }
    rc.getForm().remove("String_Node_Str");
    rc.getForm().put("String_Node_Str","String_Node_Str");
    rc.getForm().put("String_Node_Str","String_Node_Str");
    rc.getForm().put("String_Node_Str",rc.getChallenge());
    rc.getForm().put("String_Node_Str",c);
    rc.getForm().put("String_Node_Str",downloadLink.getDownloadURL());
    Form lol=rc.getForm();
    recaptcha=true;
    br.submitForm(lol);
    logger.info("String_Node_Str" + c + "String_Node_Str");
  }
  doSomething();
  if (recaptcha == false) {
    if (password == true) {
      if (downloadLink.getStringProperty("String_Node_Str",null) == null) {
        passCode=Plugin.getUserInput("String_Node_Str",downloadLink);
      }
 else {
        passCode=downloadLink.getStringProperty("String_Node_Str",null);
      }
      DLForm.put("String_Node_Str",passCode);
      logger.info("String_Node_Str" + passCode + "String_Node_Str");
    }
    dl=jd.plugins.BrowserAdapter.openDownload(br,downloadLink,DLForm,resumable,maxchunks);
    logger.info("String_Node_Str");
  }
  boolean error=false;
  try {
    if (dl.getConnection().getContentType().contains("String_Node_Str"))     error=true;
  }
 catch (  Exception e) {
    error=true;
  }
  if (error) {
    br.followConnection();
    logger.info("String_Node_Str");
    doSomething();
    checkErrors(downloadLink);
    String dllink=br.getRedirectLocation();
    if (dllink == null) {
      if (brbefore.contains("String_Node_Str"))       throw new PluginException(LinkStatus.ERROR_IP_BLOCKED,null,10 * 60 * 1001l);
      if (br.containsHTML("String_Node_Str")) {
        logger.warning("String_Node_Str" + passCode + "String_Node_Str");
        downloadLink.setProperty("String_Node_Str",null);
        throw new PluginException(LinkStatus.ERROR_RETRY);
      }
      if (brbefore.contains("String_Node_Str")) {
        logger.warning("String_Node_Str");
        throw new PluginException(LinkStatus.ERROR_CAPTCHA);
      }
      dllink=getDllink();
    }
    if (dllink == null) {
      logger.warning("String_Node_Str");
      throw new PluginException(LinkStatus.ERROR_PLUGIN_DEFECT);
    }
    logger.info("String_Node_Str" + dllink + "String_Node_Str");
    dl=jd.plugins.BrowserAdapter.openDownload(br,downloadLink,dllink,resumable,maxchunks);
  }
  if (passCode != null) {
    downloadLink.setProperty("String_Node_Str",passCode);
  }
  if (dl.getConnection().getContentType().contains("String_Node_Str")) {
    logger.warning("String_Node_Str");
    br.followConnection();
    if (br.containsHTML("String_Node_Str")) {
      logger.warning("String_Node_Str");
      throw new PluginException(LinkStatus.ERROR_FILE_NOT_FOUND);
    }
    throw new PluginException(LinkStatus.ERROR_PLUGIN_DEFECT);
  }
  dl.startDownload();
}