Program: 179007
Project: 179007
Buggy source:
public void Ban(String[] args,User user){
  if (args.length < 1 || args.length > 2) {
    user.sendMessage(ChatColor.YELLOW + "String_Node_Str");
    return;
  }
  PermissionUser puser2;
  if ((puser2=PermissionUser.matchUser(args[0])) == null) {
    user.sendMessage(ChatColor.RED + "String_Node_Str");
    return;
  }
  if (puser2.isBanned() != null) {
    user.sendMessage(ChatColor.RED + "String_Node_Str");
    return;
  }
  long duration=-1;
  TimeType durationType;
  if (args.length == 2) {
    if (args[1].endsWith("String_Node_Str")) {
      durationType=TimeType.SECOND;
    }
 else     if (args[1].endsWith("String_Node_Str")) {
      durationType=TimeType.MINUTE;
    }
 else     if (args[1].endsWith("String_Node_Str")) {
      durationType=TimeType.HOUR;
    }
 else     if (args[1].endsWith("String_Node_Str")) {
      durationType=TimeType.DAY;
    }
 else {
      user.sendMessage(ChatColor.YELLOW + "String_Node_Str");
      return;
    }
    args[1]=args[1].substring(0,args[1].length() - 1);
    try {
      duration=Long.parseLong(args[1]);
    }
 catch (    NumberFormatException e) {
      user.sendMessage(ChatColor.YELLOW + "String_Node_Str");
      return;
    }
    duration*=getValue(durationType);
  }
  if (duration == -1 && !user.hasPerm("String_Node_Str")) {
    user.sendMessage(ChatColor.RED + "String_Node_Str");
    BenCmd.getPlugin().logPermFail();
    return;
  }
  if (duration == -1) {
    BenCmd.getPermissionManager().getActionLog().log(new ActionLogEntry(ActionLogType.BAN_PERM,puser2.getName(),user.getName()));
  }
 else {
    BenCmd.getPermissionManager().getActionLog().log(new ActionLogEntry(ActionLogType.BAN_TEMP,puser2.getName(),user.getName(),duration));
  }
  BenCmd.getPermissionManager().getActionFile().addAction(puser2.getName(),ActionType.BAN,duration);
  User user2;
  if ((user2=User.matchUser(args[0])) != null) {
    user2.kick("String_Node_Str");
  }
  user.sendMessage(ChatColor.RED + "String_Node_Str");
}

Fixed version (ground truth):
public void Ban(String[] args,User user){
  if (args.length < 1 || args.length > 2) {
    user.sendMessage(ChatColor.YELLOW + "String_Node_Str");
    return;
  }
  PermissionUser puser2;
  if ((puser2=PermissionUser.matchUserIgnoreCase(args[0])) == null) {
    user.sendMessage(ChatColor.RED + "String_Node_Str");
    return;
  }
  if (puser2.isBanned() != null) {
    user.sendMessage(ChatColor.RED + "String_Node_Str");
    return;
  }
  long duration=-1;
  TimeType durationType;
  if (args.length == 2) {
    if (args[1].endsWith("String_Node_Str")) {
      durationType=TimeType.SECOND;
    }
 else     if (args[1].endsWith("String_Node_Str")) {
      durationType=TimeType.MINUTE;
    }
 else     if (args[1].endsWith("String_Node_Str")) {
      durationType=TimeType.HOUR;
    }
 else     if (args[1].endsWith("String_Node_Str")) {
      durationType=TimeType.DAY;
    }
 else {
      user.sendMessage(ChatColor.YELLOW + "String_Node_Str");
      return;
    }
    args[1]=args[1].substring(0,args[1].length() - 1);
    try {
      duration=Long.parseLong(args[1]);
    }
 catch (    NumberFormatException e) {
      user.sendMessage(ChatColor.YELLOW + "String_Node_Str");
      return;
    }
    duration*=getValue(durationType);
  }
  if (duration == -1 && !user.hasPerm("String_Node_Str")) {
    user.sendMessage(ChatColor.RED + "String_Node_Str");
    BenCmd.getPlugin().logPermFail();
    return;
  }
  if (duration == -1) {
    BenCmd.getPermissionManager().getActionLog().log(new ActionLogEntry(ActionLogType.BAN_PERM,puser2.getName(),user.getName()));
  }
 else {
    BenCmd.getPermissionManager().getActionLog().log(new ActionLogEntry(ActionLogType.BAN_TEMP,puser2.getName(),user.getName(),duration));
  }
  BenCmd.getPermissionManager().getActionFile().addAction(puser2.getName(),ActionType.BAN,duration);
  User user2;
  if ((user2=User.matchUser(args[0])) != null) {
    user2.kick("String_Node_Str");
  }
  user.sendMessage(ChatColor.RED + "String_Node_Str");
}