Program: 21172
Project: 21172
Buggy source:
@Override public ArrayList<DownloadLink> decryptIt(CryptedLink param,ProgressController progress) throws Exception {
  ArrayList<DownloadLink> decryptedLinks=new ArrayList<DownloadLink>();
  String parameter=param.toString();
  br.setCookiesExclusive(true);
  br.setReadTimeout(5 * 60 * 1000);
  br.setConnectTimeout(5 * 60 * 1000);
  for (int retry=1; retry <= 10; retry++) {
    try {
      br.clearCookies(this.getHost());
      br.getPage(parameter);
      String pass=br.getRegex(Pattern.compile("String_Node_Str",Pattern.CASE_INSENSITIVE | Pattern.DOTALL)).getMatch(0);
      Vector<String> passwords=new Vector<String>();
      passwords.add("String_Node_Str");
      if (pass != null && !pass.equals("String_Node_Str")) {
        passwords.add(pass);
      }
      Form form=br.getForm(1);
      if (form != null && form.containsHTML("String_Node_Str")) {
        File file;
        int i=10;
        while (true) {
          i--;
          if (i <= 0) {
            logger.severe("String_Node_Str");
            return null;
          }
          file=this.getLocalCaptchaFile(this);
          Browser.download(file,br.cloneBrowser().openGetConnection("String_Node_Str"));
          try {
            File f=convert(file);
            if (f == null || !f.exists())             continue;
            file=f;
            break;
          }
 catch (          Exception e) {
            continue;
          }
        }
        String captcha=getCaptchaCode(file,this,param);
        form.put("String_Node_Str",captcha);
        br.submitForm(form);
        if (br.containsHTML("String_Node_Str"))         continue;
      }
      Form[] forms=br.getForms();
      progress.setRange(forms.length);
      DDLWarez_Linkgrabber DDLWarez_Linkgrabbers[]=new DDLWarez_Linkgrabber[forms.length];
      for (int i=0; i < forms.length; ++i) {
synchronized (Worker_Delay) {
          Thread.sleep(Worker_Delay);
        }
        DDLWarez_Linkgrabbers[i]=new DDLWarez_Linkgrabber(progress,i,br.cloneBrowser());
        DDLWarez_Linkgrabbers[i].setjob(forms[i]);
        DDLWarez_Linkgrabbers[i].start();
      }
      for (int i=0; i < forms.length; ++i) {
        try {
          DDLWarez_Linkgrabbers[i].join();
          if (DDLWarez_Linkgrabbers[i].status() == DDLWarez_Linkgrabber.THREADPASS) {
            DownloadLink link=createDownloadlink(DDLWarez_Linkgrabbers[i].getlink());
            link.setSourcePluginPasswords(passwords);
            decryptedLinks.add(link);
          }
        }
 catch (        InterruptedException e) {
          e.printStackTrace();
        }
      }
      return decryptedLinks;
    }
 catch (    DecrypterException e2) {
      throw e2;
    }
catch (    Exception e) {
      e.printStackTrace();
      logger.finest("String_Node_Str");
    }
  }
  return null;
}

Fixed version (ground truth):
@Override public ArrayList<DownloadLink> decryptIt(CryptedLink param,ProgressController progress) throws Exception {
  ArrayList<DownloadLink> decryptedLinks=new ArrayList<DownloadLink>();
  String parameter=param.toString();
  br.setCookiesExclusive(true);
  br.setReadTimeout(5 * 60 * 1000);
  br.setConnectTimeout(5 * 60 * 1000);
  for (int retry=1; retry <= 10; retry++) {
    try {
      br.clearCookies(this.getHost());
      br.getPage(parameter);
      String pass=br.getRegex(Pattern.compile("String_Node_Str",Pattern.CASE_INSENSITIVE | Pattern.DOTALL)).getMatch(0);
      Vector<String> passwords=new Vector<String>();
      passwords.add("String_Node_Str");
      if (pass != null && !pass.equals("String_Node_Str")) {
        passwords.add(pass);
      }
      Form form=br.getForm(1);
      if (form != null && form.containsHTML("String_Node_Str")) {
        File file;
        int i=10;
        while (true) {
          i--;
          if (i <= 0) {
            logger.severe("String_Node_Str");
            return null;
          }
          file=this.getLocalCaptchaFile(this);
          Browser.download(file,br.cloneBrowser().openGetConnection("String_Node_Str" + br.getHost() + "String_Node_Str"+ br.getRegex("String_Node_Str").getMatch(0)));
          try {
            File f=convert(file);
            if (f == null || !f.exists())             continue;
            file=f;
            break;
          }
 catch (          Exception e) {
            continue;
          }
        }
        String captcha=getCaptchaCode(file,this,param);
        form.put("String_Node_Str",captcha);
        br.submitForm(form);
        if (br.containsHTML("String_Node_Str"))         continue;
      }
      Form[] forms=br.getForms();
      progress.setRange(forms.length);
      DDLWarez_Linkgrabber DDLWarez_Linkgrabbers[]=new DDLWarez_Linkgrabber[forms.length];
      for (int i=0; i < forms.length; ++i) {
synchronized (Worker_Delay) {
          Thread.sleep(Worker_Delay);
        }
        DDLWarez_Linkgrabbers[i]=new DDLWarez_Linkgrabber(progress,i,br.cloneBrowser());
        DDLWarez_Linkgrabbers[i].setjob(forms[i]);
        DDLWarez_Linkgrabbers[i].start();
      }
      for (int i=0; i < forms.length; ++i) {
        try {
          DDLWarez_Linkgrabbers[i].join();
          if (DDLWarez_Linkgrabbers[i].status() == DDLWarez_Linkgrabber.THREADPASS) {
            DownloadLink link=createDownloadlink(DDLWarez_Linkgrabbers[i].getlink());
            link.setSourcePluginPasswords(passwords);
            decryptedLinks.add(link);
          }
        }
 catch (        InterruptedException e) {
          e.printStackTrace();
        }
      }
      return decryptedLinks;
    }
 catch (    DecrypterException e2) {
      throw e2;
    }
catch (    Exception e) {
      e.printStackTrace();
      logger.finest("String_Node_Str");
    }
  }
  return null;
}