From cde39b13fa99d2526c5a9d022ce8b80f4c2442ed Mon Sep 17 00:00:00 2001
From: rpatil <unknown>
Date: Sat, 25 Feb 2017 09:50:28 +0530
Subject: [PATCH] 8170222: Better transfers of files Reviewed-by: dfuchs,
 chegar, vtewari

---
 .../classes/sun/net/ftp/impl/FtpClient.java   | 19 +++++++++++++++----
 1 file changed, 15 insertions(+), 4 deletions(-)

diff --git a/src/share/classes/sun/net/ftp/impl/FtpClient.java b/src/share/classes/sun/net/ftp/impl/FtpClient.java
index 0f4bf3fdf..36273c438 100644
--- a/src/share/classes/sun/net/ftp/impl/FtpClient.java
+++ b/src/share/classes/sun/net/ftp/impl/FtpClient.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2009, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2009, 2017, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -517,7 +517,8 @@ public class FtpClient extends sun.net.ftp.FtpClient {
      * @return <code>true</code> if the command was successful
      * @throws IOException
      */
-    private boolean issueCommand(String cmd) throws IOException {
+    private boolean issueCommand(String cmd) throws IOException,
+            sun.net.ftp.FtpProtocolException {
         if (!isConnected()) {
             throw new IllegalStateException("Not connected");
         }
@@ -528,6 +529,12 @@ public class FtpClient extends sun.net.ftp.FtpClient {
                 // ignore...
             }
         }
+        if (cmd.indexOf('\n') != -1) {
+            sun.net.ftp.FtpProtocolException ex
+                    = new sun.net.ftp.FtpProtocolException("Illegal FTP command");
+            ex.initCause(new IllegalArgumentException("Illegal carriage return"));
+            throw ex;
+        }
         sendServer(cmd + "\r\n");
         return readReply();
     }
@@ -1120,7 +1127,10 @@ public class FtpClient extends sun.net.ftp.FtpClient {
      */
     public void close() throws IOException {
         if (isConnected()) {
-            issueCommand("QUIT");
+            try {
+                issueCommand("QUIT");
+            } catch (FtpProtocolException e) {
+            }
             loggedIn = false;
         }
         disconnect();
@@ -1898,7 +1908,8 @@ public class FtpClient extends sun.net.ftp.FtpClient {
         return null;
     }
 
-    private boolean sendSecurityData(byte[] buf) throws IOException {
+    private boolean sendSecurityData(byte[] buf) throws IOException,
+            sun.net.ftp.FtpProtocolException {
         BASE64Encoder encoder = new BASE64Encoder();
         String s = encoder.encode(buf);
         return issueCommand("ADAT " + s);
-- 
GitLab