Bug 442712 - ftp case directive botches mget when mixed case filenames exit
ftp case directive botches mget when mixed case filenames exit
Status: CLOSED ERRATA
Product: Red Hat Enterprise Linux 5
Classification: Red Hat
Component: ftp (Show other bugs)
5.1
All Linux
medium Severity medium
: rc
: ---
Assigned To: Jiri Skala
Ben Levenson
: Patch
Depends On:
Blocks: 391501 442716
  Show dependency treegraph
 
Reported: 2008-04-16 08:21 EDT by ritz
Modified: 2014-11-09 17:31 EST (History)
4 users (show)

See Also:
Fixed In Version: RHBA-2008-0610
Doc Type: Bug Fix
Doc Text:
When the "case" command was used to turn on the remote computer file name case mapping, using the "mget" command to download remote files may have caused the ftp client to overwrite the files on the client machine with the wrong content, or fail when mixed-case file names were used. For example, downloading multiple files may have resulted in a single file, that contained the content of a different file. This has been fixed, and all files are now transferred with their original content as expected.
Story Points: ---
Clone Of:
Environment:
Last Closed: 2008-07-23 08:59:14 EDT
Type: ---
Regression: ---
Mount Type: ---
Documentation: ---
CRM:
Verified Versions:
Category: ---
oVirt Team: ---
RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: ---


Attachments (Terms of Use)
Patch to fix the mget with case (416 bytes, patch)
2008-04-24 05:29 EDT, Martin Nagy
no flags Details | Diff

  None (edit)
Description ritz 2008-04-16 08:21:18 EDT
+++ This bug was initially created as a clone of Bug #442710 +++

Description of problem: 
ftp can overwrite files with the wrong content or fail to get/put files when
mixed-case filenames are involved.

Version-Release number of selected component (if applicable):
ftp-0.17-33

How reproducible: 
always

Steps to Reproduce: 

1.  Login to a linux box and install/start up vsftpd.  
2.  Create the following files in /var/ftp/pub
  * Test1.out1
  * TEST2.OUT2
  * tesT3.Out3

3. Connect to ftp server

ftp> ls
227 Entering Passive Mode (9,67,58,187,198,5)
150 Here comes the directory listing.
-rw-rw-r--    1 503      503            11 Apr 11 15:33 TEST2.OUT2
-rw-rw-r--    1 503      503            11 Apr 11 15:32 Test1.out1
-rw-rw-r--    1 503      503            11 Apr 11 15:33 tesT3.Out3
226 Directory send OK.
ftp> prompt
Interactive mode off.
ftp> case
Case mapping on.
ftp> mget *
local: test2.out2 remote: TEST2.OUT2
227 Entering Passive Mode (9,67,58,187,161,53)
150 Opening BINARY mode data connection for TEST2.OUT2 (11 bytes).
226 File send OK.
11 bytes received in 0.0086 seconds (1.3 Kbytes/s)
local: test2.out2 remote: Test1.out1
227 Entering Passive Mode (9,67,58,187,23,178)
150 Opening BINARY mode data connection for Test1.out1 (11 bytes).
226 File send OK.
11 bytes received in 0.0037 seconds (2.9 Kbytes/s)
local: test2.out2 remote: tesT3.Out3
227 Entering Passive Mode (9,67,58,187,72,19)
150 Opening BINARY mode data connection for tesT3.Out3 (11 bytes).
226 File send OK.
11 bytes received in 0.006 seconds (1.8 Kbytes/s)

Actual results:  
local filename for the second 2nd and 3rd files transfered is the same as the
first.  The end result is a single file in the local directory called test2.out2
with the contents of tesT3.Out3

Expected results:  
3 files transfered with their original contents.  Only the file with all
uppercase in the name is translated to lowercase (according to the ftp manpage
at least.)

Additional info:
patch attached

-- Additional comment from rkhadgar@redhat.com on 2008-04-16 08:19 EST --
Created an attachment (id=302589)
patch
Comment 1 Martin Nagy 2008-04-23 10:16:56 EDT
With this patch, all the files were renamed to lowercase. However, the man page
suggests that only filenames that have all the letters uppercase should be renamed.
Comment 2 Martin Nagy 2008-04-24 05:29:39 EDT
Created attachment 303604 [details]
Patch to fix the mget with case

This patch fixed the issue for me. Upon trying your method I got proper files
and proper cases.
On the server side:
$ ls
Test1.out1  TEST2.OUT2	tesT3.Out3
$ cat *
Test1.out1
TEST2.OUT2
tesT3.Out3

On the client side, after repeating your steps:
$ ls
Test1.out1  test2.out2	tesT3.Out3
$ cat *
Test1.out1
TEST2.OUT2
tesT3.Out3
Comment 5 RHEL Product and Program Management 2008-06-02 16:06:11 EDT
This request was evaluated by Red Hat Product Management for inclusion in a Red
Hat Enterprise Linux maintenance release.  Product Management has requested
further review of this request by Red Hat Engineering, for potential
inclusion in a Red Hat Enterprise Linux Update release for currently deployed
products.  This request is not yet committed for inclusion in an Update
release.
Comment 12 errata-xmlrpc 2008-07-23 08:59:14 EDT
An advisory has been issued which should help the problem
described in this bug report. This report is therefore being
closed with a resolution of ERRATA. For more information
on therefore solution and/or where to find the updated files,
please follow the link below. You may reopen this bug report
if the solution does not work for you.

http://rhn.redhat.com/errata/RHBA-2008-0610.html
Comment 14 Jaromir Hradilek 2010-07-15 07:28:41 EDT
Technical note added. If any revisions are required, please edit the "Technical Notes" field
accordingly. All revisions will be proofread by the Engineering Content Services team.

New Contents:
When the "case" command was used to turn on the remote computer file name case mapping, using the "mget" command to download remote files may have caused the ftp client to overwrite the files on the client machine with the wrong content, or fail when mixed-case file names were used. For example, downloading multiple files may have resulted in a single file, that contained the content of a different file. This has been fixed, and all files are now transferred with their original content as expected.

Note You need to log in before you can comment on or make changes to this bug.