Program: 152316
Project: 152316
Buggy source:
/** 
 * Execute command.
 */
public void execute(Connection connection,FtpRequest request,FtpSessionImpl session,FtpReplyOutput out) throws IOException, FtpException {
  try {
    session.resetState();
    FtpServerContext serverContext=connection.getServerContext();
    Ftplet ftpletContainer=serverContext.getFtpletContainer();
    FtpletEnum ftpletRet;
    try {
      ftpletRet=ftpletContainer.onUploadUniqueStart(session,request,out);
    }
 catch (    Exception e) {
      LOG.debug("String_Node_Str",e);
      ftpletRet=FtpletEnum.RET_DISCONNECT;
    }
    if (ftpletRet == FtpletEnum.RET_SKIP) {
      return;
    }
 else     if (ftpletRet == FtpletEnum.RET_DISCONNECT) {
      serverContext.getConnectionManager().closeConnection(connection);
      return;
    }
    String pathName=request.getArgument();
    FileObject file=null;
    try {
      String filePrefix;
      if (pathName == null) {
        filePrefix="String_Node_Str";
      }
 else {
        FileObject dir=session.getFileSystemView().getFileObject(pathName);
        if (dir.isDirectory()) {
          filePrefix=pathName + "String_Node_Str";
        }
 else {
          filePrefix=pathName;
        }
      }
      file=session.getFileSystemView().getFileObject(filePrefix);
      if (file != null) {
        file=getUniqueFile(connection,session,file);
      }
    }
 catch (    Exception ex) {
      LOG.debug("String_Node_Str",ex);
    }
    if (file == null) {
      out.write(FtpReplyUtil.translate(session,FtpReply.REPLY_550_REQUESTED_ACTION_NOT_TAKEN,"String_Node_Str",null));
      return;
    }
    String fileName=file.getFullName();
    if (!file.hasWritePermission()) {
      out.write(FtpReplyUtil.translate(session,FtpReply.REPLY_550_REQUESTED_ACTION_NOT_TAKEN,"String_Node_Str",fileName));
      return;
    }
    out.write(new DefaultFtpReply(FtpReply.REPLY_150_FILE_STATUS_OKAY,"String_Node_Str" + fileName));
    boolean failure=false;
    OutputStream os=null;
    DataConnection dataConnection;
    try {
      dataConnection=session.getDataConnection().openConnection();
    }
 catch (    Exception e) {
      LOG.debug("String_Node_Str",e);
      out.write(FtpReplyUtil.translate(session,FtpReply.REPLY_425_CANT_OPEN_DATA_CONNECTION,"String_Node_Str",fileName));
      return;
    }
    try {
      os=file.createOutputStream(0L);
      long transSz=dataConnection.transferFromClient(os);
      String userName=session.getUser().getName();
      LOG.info("String_Node_Str" + userName + "String_Node_Str"+ fileName);
      ServerFtpStatistics ftpStat=(ServerFtpStatistics)serverContext.getFtpStatistics();
      if (ftpStat != null) {
        ftpStat.setUpload(connection,file,transSz);
      }
    }
 catch (    SocketException ex) {
      LOG.debug("String_Node_Str",ex);
      failure=true;
      out.write(FtpReplyUtil.translate(session,FtpReply.REPLY_426_CONNECTION_CLOSED_TRANSFER_ABORTED,"String_Node_Str",fileName));
    }
catch (    IOException ex) {
      LOG.debug("String_Node_Str",ex);
      failure=true;
      out.write(FtpReplyUtil.translate(session,FtpReply.REPLY_551_REQUESTED_ACTION_ABORTED_PAGE_TYPE_UNKNOWN,"String_Node_Str",fileName));
    }
 finally {
      IoUtils.close(os);
    }
    if (!failure) {
      out.write(FtpReplyUtil.translate(session,FtpReply.REPLY_226_CLOSING_DATA_CONNECTION,"String_Node_Str",fileName));
      try {
        ftpletRet=ftpletContainer.onUploadUniqueEnd(session,request,out);
      }
 catch (      Exception e) {
        LOG.debug("String_Node_Str",e);
        ftpletRet=FtpletEnum.RET_DISCONNECT;
      }
      if (ftpletRet == FtpletEnum.RET_DISCONNECT) {
        serverContext.getConnectionManager().closeConnection(connection);
        return;
      }
    }
  }
  finally {
    session.getDataConnection().closeDataConnection();
  }
}

Fixed version (ground truth):
/** 
 * Execute command.
 */
public void execute(Connection connection,FtpRequest request,FtpSessionImpl session,FtpReplyOutput out) throws IOException, FtpException {
  try {
    DataConnectionFactory connFactory=session.getDataConnection();
    if (connFactory instanceof IODataConnectionFactory) {
      InetAddress address=((IODataConnectionFactory)connFactory).getInetAddress();
      if (address == null) {
        out.write(new DefaultFtpReply(FtpReply.REPLY_503_BAD_SEQUENCE_OF_COMMANDS,"String_Node_Str"));
        return;
      }
    }
    session.resetState();
    FtpServerContext serverContext=connection.getServerContext();
    Ftplet ftpletContainer=serverContext.getFtpletContainer();
    FtpletEnum ftpletRet;
    try {
      ftpletRet=ftpletContainer.onUploadUniqueStart(session,request,out);
    }
 catch (    Exception e) {
      LOG.debug("String_Node_Str",e);
      ftpletRet=FtpletEnum.RET_DISCONNECT;
    }
    if (ftpletRet == FtpletEnum.RET_SKIP) {
      return;
    }
 else     if (ftpletRet == FtpletEnum.RET_DISCONNECT) {
      serverContext.getConnectionManager().closeConnection(connection);
      return;
    }
    String pathName=request.getArgument();
    FileObject file=null;
    try {
      String filePrefix;
      if (pathName == null) {
        filePrefix="String_Node_Str";
      }
 else {
        FileObject dir=session.getFileSystemView().getFileObject(pathName);
        if (dir.isDirectory()) {
          filePrefix=pathName + "String_Node_Str";
        }
 else {
          filePrefix=pathName;
        }
      }
      file=session.getFileSystemView().getFileObject(filePrefix);
      if (file != null) {
        file=getUniqueFile(connection,session,file);
      }
    }
 catch (    Exception ex) {
      LOG.debug("String_Node_Str",ex);
    }
    if (file == null) {
      out.write(FtpReplyUtil.translate(session,FtpReply.REPLY_550_REQUESTED_ACTION_NOT_TAKEN,"String_Node_Str",null));
      return;
    }
    String fileName=file.getFullName();
    if (!file.hasWritePermission()) {
      out.write(FtpReplyUtil.translate(session,FtpReply.REPLY_550_REQUESTED_ACTION_NOT_TAKEN,"String_Node_Str",fileName));
      return;
    }
    out.write(new DefaultFtpReply(FtpReply.REPLY_150_FILE_STATUS_OKAY,"String_Node_Str" + fileName));
    boolean failure=false;
    OutputStream os=null;
    DataConnection dataConnection;
    try {
      dataConnection=session.getDataConnection().openConnection();
    }
 catch (    Exception e) {
      LOG.debug("String_Node_Str",e);
      out.write(FtpReplyUtil.translate(session,FtpReply.REPLY_425_CANT_OPEN_DATA_CONNECTION,"String_Node_Str",fileName));
      return;
    }
    try {
      os=file.createOutputStream(0L);
      long transSz=dataConnection.transferFromClient(os);
      String userName=session.getUser().getName();
      LOG.info("String_Node_Str" + userName + "String_Node_Str"+ fileName);
      ServerFtpStatistics ftpStat=(ServerFtpStatistics)serverContext.getFtpStatistics();
      if (ftpStat != null) {
        ftpStat.setUpload(connection,file,transSz);
      }
    }
 catch (    SocketException ex) {
      LOG.debug("String_Node_Str",ex);
      failure=true;
      out.write(FtpReplyUtil.translate(session,FtpReply.REPLY_426_CONNECTION_CLOSED_TRANSFER_ABORTED,"String_Node_Str",fileName));
    }
catch (    IOException ex) {
      LOG.debug("String_Node_Str",ex);
      failure=true;
      out.write(FtpReplyUtil.translate(session,FtpReply.REPLY_551_REQUESTED_ACTION_ABORTED_PAGE_TYPE_UNKNOWN,"String_Node_Str",fileName));
    }
 finally {
      IoUtils.close(os);
    }
    if (!failure) {
      out.write(FtpReplyUtil.translate(session,FtpReply.REPLY_226_CLOSING_DATA_CONNECTION,"String_Node_Str",fileName));
      try {
        ftpletRet=ftpletContainer.onUploadUniqueEnd(session,request,out);
      }
 catch (      Exception e) {
        LOG.debug("String_Node_Str",e);
        ftpletRet=FtpletEnum.RET_DISCONNECT;
      }
      if (ftpletRet == FtpletEnum.RET_DISCONNECT) {
        serverContext.getConnectionManager().closeConnection(connection);
        return;
      }
    }
  }
  finally {
    session.getDataConnection().closeDataConnection();
  }
}