Program: 21099
Project: 21099
Buggy source:
/** 
 * Startet das abwarbeiten der extractqueue
 */
private void addToQueue(final DownloadLink link){
  if (getPluginConfig().getStringProperty(JDUnrarConstants.UNRAR_HASH,null) == null) {
    logger.warning("String_Node_Str");
    return;
  }
  if (!new File(link.getFileOutput()).exists())   return;
  link.getLinkStatus().removeStatus(LinkStatus.ERROR_POST_PROCESS);
  link.getLinkStatus().setErrorMessage(null);
  File dl=this.getExtractToPath(link);
  if (link.getHost().equals(DUMMY_HOSTER)) {
    ProgressController progress=new ProgressController(JDLocale.LF("String_Node_Str","String_Node_Str",link.getFileOutput()),100);
    link.setProperty("String_Node_Str",progress);
  }
  UnrarWrapper wrapper=new UnrarWrapper(link);
  wrapper.addUnrarListener(this);
  wrapper.setExtractTo(dl);
  wrapper.setRemoveAfterExtract(this.getPluginConfig().getBooleanProperty(JDUnrarConstants.CONFIG_KEY_REMVE_AFTER_EXTRACT,false));
  wrapper.setMoveFilesToBaseDirAfterExtraction(this.getPluginConfig().getBooleanProperty(JDUnrarConstants.CONFIG_KEY_COPY_FILES_TO_BASE_DIR_AFTER_EXTRACT,false));
  wrapper.setOverwrite(this.getPluginConfig().getBooleanProperty(JDUnrarConstants.CONFIG_KEY_OVERWRITE,true));
  wrapper.setUnrarCommand(getPluginConfig().getStringProperty(JDUnrarConstants.CONFIG_KEY_UNRARCOMMAND));
  ArrayList<String> pwList=new ArrayList<String>();
  String[] linkPws=JDUtilities.passwordStringToArray(link.getFilePackage().getPassword());
  for (  String pw : linkPws) {
    pwList.add(pw);
  }
  pwList.addAll(PasswordListController.getInstance().getPasswordList());
  pwList.add(this.getArchiveName(link));
  pwList.add(new File(link.getFileOutput()).getName());
  wrapper.setPasswordList(pwList.toArray(new String[]{}));
  queue.add(wrapper);
  queue.start();
  ArrayList<DownloadLink> list=this.getArchiveList(link);
  for (  DownloadLink l : list) {
    if (l == null)     continue;
    l.setProperty(JDUnrarConstants.DOWNLOADLINK_KEY_EXTRACTEDPATH,dl.getAbsolutePath());
  }
}

Fixed version (ground truth):
/** 
 * Startet das abwarbeiten der extractqueue
 */
private void addToQueue(final DownloadLink link){
  if (getPluginConfig().getStringProperty(JDUnrarConstants.UNRAR_HASH,null) == null) {
    logger.warning("String_Node_Str");
    return;
  }
  if (!new File(link.getFileOutput()).exists())   return;
  link.getLinkStatus().removeStatus(LinkStatus.ERROR_POST_PROCESS);
  link.getLinkStatus().setErrorMessage(null);
  File dl=this.getExtractToPath(link);
  if (link.getHost().equals(DUMMY_HOSTER)) {
    ProgressController progress=new ProgressController(JDLocale.LF("String_Node_Str","String_Node_Str",link.getFileOutput()),100);
    link.setProperty("String_Node_Str",progress);
  }
  UnrarWrapper wrapper=new UnrarWrapper(link);
  wrapper.addUnrarListener(this);
  wrapper.setExtractTo(dl);
  wrapper.setRemoveAfterExtract(this.getPluginConfig().getBooleanProperty(JDUnrarConstants.CONFIG_KEY_REMVE_AFTER_EXTRACT,false));
  wrapper.setOverwrite(this.getPluginConfig().getBooleanProperty(JDUnrarConstants.CONFIG_KEY_OVERWRITE,true));
  wrapper.setUnrarCommand(getPluginConfig().getStringProperty(JDUnrarConstants.CONFIG_KEY_UNRARCOMMAND));
  ArrayList<String> pwList=new ArrayList<String>();
  String[] linkPws=JDUtilities.passwordStringToArray(link.getFilePackage().getPassword());
  for (  String pw : linkPws) {
    pwList.add(pw);
  }
  pwList.addAll(PasswordListController.getInstance().getPasswordList());
  pwList.add(this.getArchiveName(link));
  pwList.add(new File(link.getFileOutput()).getName());
  wrapper.setPasswordList(pwList.toArray(new String[]{}));
  queue.add(wrapper);
  queue.start();
  ArrayList<DownloadLink> list=this.getArchiveList(link);
  for (  DownloadLink l : list) {
    if (l == null)     continue;
    l.setProperty(JDUnrarConstants.DOWNLOADLINK_KEY_EXTRACTEDPATH,dl.getAbsolutePath());
  }
}