Program: 31336
Project: 31336
Buggy source:
/** 
 * Create a new user with all attributes from a String.  The format is: accountId | accountName | password | roles (comma separated) | unlocked | enabled | old password hashes (comma separated) | last host address | last password change time | last long time | last failed login time | expiration time | failed login count This method verifies the account name and password strength, creates a new CSRF token, then returns the newly created user.
 * @param line parameters to set as attributes for the new User.
 * @return the newly created User
 * @throws AuthenticationException
 */
private DefaultUser createUser(String line) throws AuthenticationException {
  String[] parts=line.split("String_Node_Str");
  String accountIdString=parts[0];
  long accountId=Long.parseLong(accountIdString);
  String accountName=parts[1];
  verifyAccountNameStrength(accountName);
  DefaultUser user=new DefaultUser(accountName);
  user.accountId=accountId;
  String password=parts[2];
  verifyPasswordStrength(null,password);
  setHashedPassword(user,password);
  String[] roles=parts[3].toLowerCase().split("String_Node_Str");
  for (  String role : roles) {
    if (!"String_Node_Str".equals(role)) {
      user.addRole(role);
    }
  }
  if (!"String_Node_Str".equalsIgnoreCase(parts[4])) {
    user.lock();
  }
  if ("String_Node_Str".equalsIgnoreCase(parts[5])) {
    user.enable();
  }
 else {
    user.disable();
  }
  user.resetCSRFToken();
  setOldPasswordHashes(user,Arrays.asList(parts[6].split("String_Node_Str")));
  user.setLastHostAddress("String_Node_Str".equals(parts[7]) ? null : parts[7]);
  user.setLastPasswordChangeTime(new Date(Long.parseLong(parts[8])));
  user.setLastLoginTime(new Date(Long.parseLong(parts[9])));
  user.setLastFailedLoginTime(new Date(Long.parseLong(parts[10])));
  user.setExpirationTime(new Date(Long.parseLong(parts[11])));
  user.setFailedLoginCount(Integer.parseInt(parts[12]));
  return user;
}

Fixed version (ground truth):
/** 
 * Create a new user with all attributes from a String.  The format is: accountId | accountName | password | roles (comma separated) | unlocked | enabled | old password hashes (comma separated) | last host address | last password change time | last long time | last failed login time | expiration time | failed login count This method verifies the account name and password strength, creates a new CSRF token, then returns the newly created user.
 * @param line parameters to set as attributes for the new User.
 * @return the newly created User
 * @throws AuthenticationException
 */
private DefaultUser createUser(String line) throws AuthenticationException {
  String[] parts=line.split("String_Node_Str");
  String accountIdString=parts[0];
  long accountId=Long.parseLong(accountIdString);
  String accountName=parts[1];
  verifyAccountNameStrength(accountName);
  DefaultUser user=new DefaultUser(accountName);
  user.accountId=accountId;
  String password=parts[2];
  verifyPasswordIsNotAccountName(accountName,password);
  verifyPasswordStrength(null,password);
  setHashedPassword(user,password);
  String[] roles=parts[3].toLowerCase().split("String_Node_Str");
  for (  String role : roles) {
    if (!"String_Node_Str".equals(role)) {
      user.addRole(role);
    }
  }
  if (!"String_Node_Str".equalsIgnoreCase(parts[4])) {
    user.lock();
  }
  if ("String_Node_Str".equalsIgnoreCase(parts[5])) {
    user.enable();
  }
 else {
    user.disable();
  }
  user.resetCSRFToken();
  setOldPasswordHashes(user,Arrays.asList(parts[6].split("String_Node_Str")));
  user.setLastHostAddress("String_Node_Str".equals(parts[7]) ? null : parts[7]);
  user.setLastPasswordChangeTime(new Date(Long.parseLong(parts[8])));
  user.setLastLoginTime(new Date(Long.parseLong(parts[9])));
  user.setLastFailedLoginTime(new Date(Long.parseLong(parts[10])));
  user.setExpirationTime(new Date(Long.parseLong(parts[11])));
  user.setFailedLoginCount(Integer.parseInt(parts[12]));
  return user;
}