Program: 152228
Project: 152228
Buggy source:
/** 
 * Execute command.
 */
public void execute(final FtpIoSession session,final FtpServerContext context,final FtpRequest request) throws IOException {
  session.resetState();
  boolean isMMD5=false;
  if ("String_Node_Str".equals(request.getCommand())) {
    isMMD5=true;
  }
  String argument=request.getArgument();
  if (argument == null || argument.trim().length() == 0) {
    session.write(LocalizedFtpReply.translate(session,request,context,FtpReply.REPLY_504_COMMAND_NOT_IMPLEMENTED_FOR_THAT_PARAMETER,"String_Node_Str",null));
    return;
  }
  String[] fileNames=null;
  if (isMMD5) {
    fileNames=argument.split("String_Node_Str");
  }
 else {
    fileNames=new String[]{argument};
  }
  StringBuffer sb=new StringBuffer();
  for (int i=0; i < fileNames.length; i++) {
    String fileName=fileNames[i].trim();
    FtpFile file=null;
    try {
      file=session.getFileSystemView().getFile(fileName);
    }
 catch (    Exception ex) {
      LOG.debug("String_Node_Str" + fileName,ex);
    }
    if (file == null) {
      session.write(LocalizedFtpReply.translate(session,request,context,FtpReply.REPLY_504_COMMAND_NOT_IMPLEMENTED_FOR_THAT_PARAMETER,"String_Node_Str",fileName));
      return;
    }
    if (!file.isFile()) {
      session.write(LocalizedFtpReply.translate(session,request,context,FtpReply.REPLY_504_COMMAND_NOT_IMPLEMENTED_FOR_THAT_PARAMETER,"String_Node_Str",fileName));
      return;
    }
    InputStream is=null;
    try {
      is=file.createInputStream(0);
      String md5Hash=md5(is);
      if (i > 0) {
        sb.append("String_Node_Str");
      }
      sb.append(fileName);
      sb.append(' ');
      sb.append(md5Hash);
    }
 catch (    NoSuchAlgorithmException e) {
      LOG.debug("String_Node_Str",e);
      session.write(LocalizedFtpReply.translate(session,request,context,FtpReply.REPLY_502_COMMAND_NOT_IMPLEMENTED,"String_Node_Str",null));
    }
 finally {
      IoUtils.close(is);
    }
  }
  if (isMMD5) {
    session.write(LocalizedFtpReply.translate(session,request,context,252,"String_Node_Str",sb.toString()));
  }
 else {
    session.write(LocalizedFtpReply.translate(session,request,context,251,"String_Node_Str",sb.toString()));
  }
}

Fixed version (ground truth):
/** 
 * Execute command.
 */
public void execute(final FtpIoSession session,final FtpServerContext context,final FtpRequest request) throws IOException {
  session.resetState();
  boolean isMMD5=false;
  if ("String_Node_Str".equals(request.getCommand())) {
    isMMD5=true;
  }
  String argument=request.getArgument();
  if (argument == null || argument.trim().length() == 0) {
    session.write(LocalizedFtpReply.translate(session,request,context,FtpReply.REPLY_504_COMMAND_NOT_IMPLEMENTED_FOR_THAT_PARAMETER,"String_Node_Str",null));
    return;
  }
  String[] fileNames=null;
  if (isMMD5) {
    fileNames=argument.split("String_Node_Str");
  }
 else {
    fileNames=new String[]{argument};
  }
  StringBuffer sb=new StringBuffer();
  for (int i=0; i < fileNames.length; i++) {
    String fileName=fileNames[i].trim();
    FtpFile file=null;
    try {
      file=session.getFileSystemView().getFile(fileName);
    }
 catch (    Exception ex) {
      LOG.debug("String_Node_Str" + fileName,ex);
    }
    if (file == null) {
      session.write(LocalizedFtpReply.translate(session,request,context,FtpReply.REPLY_504_COMMAND_NOT_IMPLEMENTED_FOR_THAT_PARAMETER,"String_Node_Str",fileName));
      return;
    }
    if (!file.isFile()) {
      session.write(LocalizedFtpReply.translate(session,request,context,FtpReply.REPLY_504_COMMAND_NOT_IMPLEMENTED_FOR_THAT_PARAMETER,"String_Node_Str",fileName));
      return;
    }
    InputStream is=null;
    try {
      is=file.createInputStream(0);
      String md5Hash=md5(is);
      if (i > 0) {
        sb.append("String_Node_Str");
      }
      boolean nameHasSpaces=fileName.indexOf(' ') >= 0;
      if (nameHasSpaces) {
        sb.append('"');
      }
      sb.append(fileName);
      if (nameHasSpaces) {
        sb.append('"');
      }
      sb.append(' ');
      sb.append(md5Hash);
    }
 catch (    NoSuchAlgorithmException e) {
      LOG.debug("String_Node_Str",e);
      session.write(LocalizedFtpReply.translate(session,request,context,FtpReply.REPLY_502_COMMAND_NOT_IMPLEMENTED,"String_Node_Str",null));
    }
 finally {
      IoUtils.close(is);
    }
  }
  if (isMMD5) {
    session.write(LocalizedFtpReply.translate(session,request,context,252,"String_Node_Str",sb.toString()));
  }
 else {
    session.write(LocalizedFtpReply.translate(session,request,context,251,"String_Node_Str",sb.toString()));
  }
}