Program: 115867
Project: 115867
Buggy source:
@Override public int run(String[] args){
  boolean loaded=loadRequiredProperties();
  if (!loaded) {
    return CliConstants.ERROR_CODE;
  }
  String[] remainingArgs=null;
  String action=null;
  String usernameInput=null;
  String passwordInput=null;
  if (args != null && args.length > 0) {
    if (logger.isDebugEnabled()) {
      logger.debug("String_Node_Str");
      for (      String arg : args) {
        logger.debug(arg);
      }
    }
    final CommandLineParser parser=new GnuParser();
    CommandLine commandLine;
    try {
      Options allCommandOptions=new Options();
      for (      Command<StratosCommandContext> command : commands.values()) {
        Options commandOptions=command.getOptions();
        if (commandOptions != null) {
          Collection<?> allOptions=commandOptions.getOptions();
          for (          Object o : allOptions) {
            allCommandOptions.addOption((Option)o);
          }
        }
      }
      Collection<?> allOptions=options.getOptions();
      for (      Object o : allOptions) {
        allCommandOptions.addOption((Option)o);
      }
      commandLine=parser.parse(options,args,true);
      remainingArgs=commandLine.getArgs();
      if (remainingArgs != null && remainingArgs.length > 0) {
        action=remainingArgs[0];
      }
      setLoggerLevel(commandLine.hasOption(CliConstants.TRACE_OPTION),commandLine.hasOption(CliConstants.DEBUG_OPTION));
      if (commandLine.hasOption(CliConstants.USERNAME_OPTION)) {
        if (logger.isTraceEnabled()) {
          logger.trace("String_Node_Str");
        }
        usernameInput=commandLine.getOptionValue(CliConstants.USERNAME_OPTION);
      }
      if (commandLine.hasOption(CliConstants.PASSWORD_OPTION)) {
        if (logger.isTraceEnabled()) {
          logger.trace("String_Node_Str");
        }
        passwordInput=commandLine.getOptionValue(CliConstants.PASSWORD_OPTION);
      }
      if (commandLine.hasOption(CliConstants.HELP_ACTION)) {
        printHelp();
        return CliConstants.COMMAND_SUCCESSFULL;
      }
    }
 catch (    ParseException e) {
      if (logger.isErrorEnabled()) {
        logger.error("String_Node_Str",e);
      }
      System.out.println(e.getMessage());
      return CliConstants.COMMAND_FAILED;
    }
  }
  if (StringUtils.isNotBlank(action)) {
    if (logger.isDebugEnabled()) {
      logger.debug("String_Node_Str",action);
    }
    Command<StratosCommandContext> command=commands.get(action);
    if (command == null) {
      printHelp();
      return CliConstants.COMMAND_FAILED;
    }
    boolean loginRequired=!CliConstants.HELP_ACTION.equals(action);
    if (loginRequired && logger.isDebugEnabled()) {
      logger.debug("String_Node_Str");
    }
    if (loginRequired && !login(usernameInput,passwordInput,false)) {
      if (logger.isDebugEnabled()) {
        logger.debug("String_Node_Str",action);
      }
      return CliConstants.ERROR_CODE;
    }
    try {
      String[] actionArgs=Arrays.copyOfRange(remainingArgs,1,remainingArgs.length);
      if (logger.isDebugEnabled()) {
        logger.debug("String_Node_Str",action,Arrays.asList(actionArgs));
      }
      int returnCode=command.execute(context,actionArgs);
      if (logger.isDebugEnabled()) {
        logger.debug("String_Node_Str",returnCode,action);
      }
      System.exit(returnCode);
    }
 catch (    CommandException e) {
      if (logger.isErrorEnabled()) {
        logger.error("String_Node_Str" + action,e);
      }
      return CliConstants.ERROR_CODE;
    }
  }
 else {
    if (login(usernameInput,passwordInput,true)) {
      System.out.println("String_Node_Str");
    }
 else {
      return CliConstants.ERROR_CODE;
    }
    promptLoop();
  }
  return CliConstants.COMMAND_SUCCESSFULL;
}

Fixed version (ground truth):
@Override public int run(String[] args){
  boolean loaded=loadRequiredProperties();
  if (!loaded) {
    return CliConstants.ERROR_CODE;
  }
  String[] remainingArgs=null;
  String action=null;
  Option[] actionOptions=null;
  String usernameInput=null;
  String passwordInput=null;
  if (args != null && args.length > 0) {
    if (logger.isDebugEnabled()) {
      logger.debug("String_Node_Str");
      for (      String arg : args) {
        logger.debug(arg);
      }
    }
    final CommandLineParser parser=new GnuParser();
    CommandLine commandLine;
    try {
      Options allCommandOptions=new Options();
      for (      Command<StratosCommandContext> command : commands.values()) {
        Options commandOptions=command.getOptions();
        if (commandOptions != null) {
          Collection<?> allOptions=commandOptions.getOptions();
          for (          Object o : allOptions) {
            allCommandOptions.addOption((Option)o);
          }
        }
      }
      Collection<?> allOptions=options.getOptions();
      for (      Object o : allOptions) {
        allCommandOptions.addOption((Option)o);
      }
      commandLine=parser.parse(options,args,true);
      remainingArgs=commandLine.getArgs();
      actionOptions=commandLine.getOptions();
      if (remainingArgs != null && remainingArgs.length > 0) {
        action=remainingArgs[0];
      }
      setLoggerLevel(commandLine.hasOption(CliConstants.TRACE_OPTION),commandLine.hasOption(CliConstants.DEBUG_OPTION));
      if (commandLine.hasOption(CliConstants.USERNAME_OPTION)) {
        if (logger.isTraceEnabled()) {
          logger.trace("String_Node_Str");
        }
        usernameInput=commandLine.getOptionValue(CliConstants.USERNAME_OPTION);
      }
      if (commandLine.hasOption(CliConstants.PASSWORD_OPTION)) {
        if (logger.isTraceEnabled()) {
          logger.trace("String_Node_Str");
        }
        passwordInput=commandLine.getOptionValue(CliConstants.PASSWORD_OPTION);
      }
      if (commandLine.hasOption(CliConstants.HELP_ACTION)) {
        printHelp();
        return CliConstants.COMMAND_SUCCESSFULL;
      }
    }
 catch (    ParseException e) {
      if (logger.isErrorEnabled()) {
        logger.error("String_Node_Str",e);
      }
      System.out.println(e.getMessage());
      return CliConstants.COMMAND_FAILED;
    }
  }
  if (StringUtils.isNotBlank(action)) {
    if (logger.isDebugEnabled()) {
      logger.debug("String_Node_Str",action);
    }
    Command<StratosCommandContext> command=commands.get(action);
    if (command == null) {
      printHelp();
      return CliConstants.COMMAND_FAILED;
    }
    boolean loginRequired=!CliConstants.HELP_ACTION.equals(action);
    if (loginRequired && logger.isDebugEnabled()) {
      logger.debug("String_Node_Str");
    }
    if (loginRequired && !login(usernameInput,passwordInput,false)) {
      if (logger.isDebugEnabled()) {
        logger.debug("String_Node_Str",action);
      }
      return CliConstants.ERROR_CODE;
    }
    try {
      String[] actionArgs=Arrays.copyOfRange(remainingArgs,1,remainingArgs.length);
      if (logger.isDebugEnabled()) {
        logger.debug("String_Node_Str",action,Arrays.asList(actionArgs));
      }
      int returnCode=command.execute(context,actionArgs,actionOptions);
      if (logger.isDebugEnabled()) {
        logger.debug("String_Node_Str",returnCode,action);
      }
      System.exit(returnCode);
    }
 catch (    CommandException e) {
      if (logger.isErrorEnabled()) {
        logger.error("String_Node_Str" + action,e);
      }
      return CliConstants.ERROR_CODE;
    }
  }
 else {
    if (login(usernameInput,passwordInput,true)) {
      System.out.println("String_Node_Str");
    }
 else {
      return CliConstants.ERROR_CODE;
    }
    promptLoop();
  }
  return CliConstants.COMMAND_SUCCESSFULL;
}