This 'hack' will avoid a bug in ftp-server (see #165083).

This commit is contained in:
praszyk 2005-08-30 09:13:43 +00:00
parent 08c5489ce8
commit 71a717b5c2
2 changed files with 57 additions and 2 deletions

View File

@ -1,7 +1,7 @@
Summary: The standard UNIX FTP (File Transfer Protocol) client.
Name: ftp
Version: 0.17
Release: 27
Release: 28
License: BSD
Group: Applications/Internet
Source0: ftp://ftp.uk.linux.org/pub/linux/Networking/netkit-devel/netkit-ftp-%{version}.tar.bz2
@ -14,6 +14,7 @@ Patch6: netkit-ftp-0.17-runique_mget.patch
Patch7: netkit-ftp-locale.patch
Patch8: netkit-ftp-0.17-printf.patch
Patch9: netkit-ftp-0.17-longint.patch
Patch10: netkit-ftp-0.17-vsftp165083.patch
BuildRoot: /var/tmp/%{name}-root
BuildRequires: gcc, glibc-devel, readline-devel, ncurses-devel, perl
@ -36,6 +37,7 @@ file transfers.
%patch7 -p1 -b .locale
%patch8 -p1 -b .printf
%patch9 -p1 -b .longint
%patch10 -p1 -b .vsftp165083
%build
sh configure --with-c-compiler=gcc --enable-ipv6
@ -69,7 +71,13 @@ rm -rf ${RPM_BUILD_ROOT}
%{_mandir}/man5/netrc.*
%changelog
* Mon Aug 22 2005 Petr Raszyk <praszyk@redhat.com> - 0.17-26
* Tue Aug 30 2005 Petr Raszyk <praszyk@redhat.com> - 0.17-28
- This 'hack' will avoid a bug in ftp-server
( < vsftpd-2.0.1-5 ). See #165083 (server prints the
'150 FILE:...' line twice).
This patch can be (later ?) removed.
* Mon Aug 22 2005 Petr Raszyk <praszyk@redhat.com> - 0.17-27
- overflow using 'hash mode' (printing '#' but
not reading data from network - #79367)

View File

@ -0,0 +1,47 @@
--- ./netkit-ftp-0.17/ftp/ftp.c.rasold 2005-08-29 16:07:35.000000000 +0200
+++ ./netkit-ftp-0.17/ftp/ftp.c 2005-08-30 10:58:10.000000000 +0200
@@ -582,6 +582,7 @@
volatile long long bytes = 0, hashbytes = HASHBYTES;
char buf[BUFSIZ], *bufp;
const char *volatile lmode;
+ int old_code_l;
if (verbose && printnames) {
if (local && *local != '-')
@@ -799,7 +800,35 @@
(void) fclose(dout);
/* closes data as well, so discard it */
data = -1;
- (void) getreply(0);
+ old_code_l = code;
+ (void) getreply (0);
+
+ /* Following "if" will avoid a bug #165083 in ftp-server */
+ /* It can be later removed. */
+ if (old_code_l == 150 && code == 150 && cpend == 1
+ && sunique == 1 && cin != NULL && fileno (cin) >= 0 ) {
+ #include <sys/poll.h>
+ struct pollfd fds_events_l [2] ;
+ int rc;
+
+ fds_events_l [0] .fd = fileno (cin);
+ fds_events_l [0] .events = POLLIN | POLLERR | POLLHUP;
+
+ rc = poll (fds_events_l, 1, 5000);
+ switch (rc) {
+ case 1:
+ (void) getreply (0);
+ break;
+ case 0:
+ fprintf (stderr, "ftp: no answer from ftp-server "
+ "(more than 5 sec).\n");
+ break;
+ case -1:
+ perror("ftp: poll");
+ break;
+ }
+ }
+
(void) signal(SIGINT, oldintr);
if (oldintp)
(void) signal(SIGPIPE, oldintp);