Program: 20894
Project: 20894
Buggy source:
@Override public void handleFree(DownloadLink downloadLink) throws Exception {
  setBrowserExclusive();
  br.forceDebug(true);
  requestFileInformation(downloadLink);
  String link=downloadLink.getDownloadURL();
  br.getPage(link);
  if (br.getRedirectLocation() != null) {
    link=br.getRedirectLocation().replaceAll("String_Node_Str","String_Node_Str");
    br.getPage(link);
  }
  checkErrors();
  String dllink=br.getRegex("String_Node_Str").getMatch(0);
  if (dllink != null) {
    dl=jd.plugins.BrowserAdapter.openDownload(br,downloadLink,dllink,true,1);
    URLConnectionAdapter con=dl.getConnection();
    if (Plugin.getFileNameFromHeader(con) == null || Plugin.getFileNameFromHeader(con).indexOf("String_Node_Str") >= 0) {
      con.disconnect();
      throw new PluginException(LinkStatus.ERROR_RETRY);
    }
    if (!con.isContentDisposition()) {
      con.disconnect();
      throw new PluginException(LinkStatus.ERROR_TEMPORARILY_UNAVAILABLE,10 * 60 * 1000l);
    }
    dl.startDownload();
  }
 else {
    Form form=br.getFormBySubmitvalue("String_Node_Str");
    if (form == null)     throw new PluginException(LinkStatus.ERROR_PLUGIN_DEFECT);
    br.submitForm(form);
    checkErrors();
    if (br.getRedirectLocation() != null && br.getRedirectLocation().indexOf("String_Node_Str") > 0) {
      throw new PluginException(LinkStatus.ERROR_RETRY);
    }
    dllink=br.getRegex("String_Node_Str").getMatch(0);
    String icid=br.getRegex("String_Node_Str").getMatch(0);
    if (dllink == null && icid != null) {
      Form cap=new Form();
      cap.setAction(link);
      cap.setMethod(Form.MethodType.POST);
      cap.put("String_Node_Str",icid);
      String captcha=getCaptchaCode("String_Node_Str" + icid,downloadLink);
      cap.put("String_Node_Str",captcha);
      br.submitForm(cap);
      dllink=br.getRegex("String_Node_Str").getMatch(0);
      if (dllink == null) {
        if (br.containsHTML("String_Node_Str"))         throw new PluginException(LinkStatus.ERROR_CAPTCHA);
        dllink=br.getRegex("String_Node_Str").getMatch(0);
      }
    }
    if (dllink == null)     throw new PluginException(LinkStatus.ERROR_PLUGIN_DEFECT);
    dl=jd.plugins.BrowserAdapter.openDownload(br,downloadLink,dllink,true,1);
    URLConnectionAdapter con=dl.getConnection();
    if (Plugin.getFileNameFromHeader(con) == null || Plugin.getFileNameFromHeader(con).indexOf("String_Node_Str") >= 0) {
      con.disconnect();
      throw new PluginException(LinkStatus.ERROR_RETRY);
    }
    if (!con.isContentDisposition()) {
      con.disconnect();
      throw new PluginException(LinkStatus.ERROR_TEMPORARILY_UNAVAILABLE,10 * 60 * 1000l);
    }
    dl.startDownload();
  }
}

Fixed version (ground truth):
@Override public void handleFree(DownloadLink downloadLink) throws Exception {
  setBrowserExclusive();
  br.forceDebug(true);
  requestFileInformation(downloadLink);
  String link=downloadLink.getDownloadURL();
  br.getPage(link);
  if (br.getRedirectLocation() != null) {
    link=br.getRedirectLocation().replaceAll("String_Node_Str","String_Node_Str");
    br.getPage(link);
    if (br.getRedirectLocation() != null)     br.getPage(br.getRedirectLocation());
  }
  checkErrors();
  String dllink=br.getRegex("String_Node_Str").getMatch(0);
  if (dllink != null && !dllink.equals("String_Node_Str")) {
    dl=jd.plugins.BrowserAdapter.openDownload(br,downloadLink,dllink,true,1);
    URLConnectionAdapter con=dl.getConnection();
    if (Plugin.getFileNameFromHeader(con) == null || Plugin.getFileNameFromHeader(con).indexOf("String_Node_Str") >= 0) {
      con.disconnect();
      throw new PluginException(LinkStatus.ERROR_RETRY);
    }
    if (!con.isContentDisposition()) {
      con.disconnect();
      throw new PluginException(LinkStatus.ERROR_TEMPORARILY_UNAVAILABLE,10 * 60 * 1000l);
    }
    dl.startDownload();
  }
 else {
    logger.info("String_Node_Str");
    Form form=br.getFormBySubmitvalue("String_Node_Str");
    if (form == null) {
      logger.warning("String_Node_Str");
      throw new PluginException(LinkStatus.ERROR_PLUGIN_DEFECT);
    }
    br.submitForm(form);
    checkErrors();
    if (br.getRedirectLocation() != null && br.getRedirectLocation().indexOf("String_Node_Str") > 0) {
      throw new PluginException(LinkStatus.ERROR_RETRY);
    }
    dllink=br.getRegex("String_Node_Str").getMatch(0);
    String icid=br.getRegex("String_Node_Str").getMatch(0);
    if ((dllink == null || dllink.equals("String_Node_Str")) && icid != null) {
      Form cap=new Form();
      cap.setAction(link);
      cap.setMethod(Form.MethodType.POST);
      cap.put("String_Node_Str",icid);
      String captcha=getCaptchaCode("String_Node_Str" + icid,downloadLink);
      cap.put("String_Node_Str",captcha);
      br.submitForm(cap);
      dllink=br.getRegex("String_Node_Str").getMatch(0);
      if (dllink == null) {
        if (br.containsHTML("String_Node_Str"))         throw new PluginException(LinkStatus.ERROR_CAPTCHA);
        dllink=br.getRegex("String_Node_Str").getMatch(0);
      }
    }
    if (dllink == null || dllink.equals("String_Node_Str"))     throw new PluginException(LinkStatus.ERROR_PLUGIN_DEFECT);
    dl=jd.plugins.BrowserAdapter.openDownload(br,downloadLink,dllink,true,1);
    URLConnectionAdapter con=dl.getConnection();
    if (Plugin.getFileNameFromHeader(con) == null || Plugin.getFileNameFromHeader(con).indexOf("String_Node_Str") >= 0) {
      con.disconnect();
      throw new PluginException(LinkStatus.ERROR_RETRY);
    }
    if (!con.isContentDisposition()) {
      con.disconnect();
      throw new PluginException(LinkStatus.ERROR_TEMPORARILY_UNAVAILABLE,10 * 60 * 1000l);
    }
    dl.startDownload();
  }
}