summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDiego Elio Pettenò <flameeyes@gentoo.org>2009-09-26 09:13:33 +0000
committerDiego Elio Pettenò <flameeyes@gentoo.org>2009-09-26 09:13:33 +0000
commit97c67c2cc8442081c163004b6866b80c89cfe5ba (patch)
tree8d131eeadcabdd3c622999e009d766d13e08a4c5 /net-ftp/ftp
parentMove big patch to mirrors. (diff)
downloadgentoo-2-97c67c2cc8442081c163004b6866b80c89cfe5ba.tar.gz
gentoo-2-97c67c2cc8442081c163004b6866b80c89cfe5ba.tar.bz2
gentoo-2-97c67c2cc8442081c163004b6866b80c89cfe5ba.zip
Move patches on a patchset on mirrors.
(Portage version: 2.2_rc42/cvs/Linux x86_64)
Diffstat (limited to 'net-ftp/ftp')
-rw-r--r--net-ftp/ftp/ChangeLog13
-rw-r--r--net-ftp/ftp/files/netkit-ftp-0.17-CPPFLAGS.patch15
-rw-r--r--net-ftp/ftp/files/netkit-ftp-0.17-acct.patch15
-rw-r--r--net-ftp/ftp/files/netkit-ftp-0.17-arg_max.patch55
-rw-r--r--net-ftp/ftp/files/netkit-ftp-0.17-custom-cflags.patch18
-rw-r--r--net-ftp/ftp/files/netkit-ftp-0.17-dont-strcpy-overlapping.patch53
-rw-r--r--net-ftp/ftp/files/netkit-ftp-0.17-ipv6.patch846
-rw-r--r--net-ftp/ftp/files/netkit-ftp-0.17-locale.patch25
-rw-r--r--net-ftp/ftp/files/netkit-ftp-0.17-runique_mget.patch16
-rw-r--r--net-ftp/ftp/files/netkit-ftp-0.17-security.patch14
-rw-r--r--net-ftp/ftp/files/netkit-ftp-0.17-segv.patch90
-rw-r--r--net-ftp/ftp/files/netkit-ftp-0.17-sigseg.patch16
-rw-r--r--net-ftp/ftp/files/netkit-ftp-0.17-ssl-0.2.patch1175
-rw-r--r--net-ftp/ftp/ftp-0.17-r6.ebuild52
-rw-r--r--net-ftp/ftp/ftp-0.17-r7.ebuild22
15 files changed, 20 insertions, 2405 deletions
diff --git a/net-ftp/ftp/ChangeLog b/net-ftp/ftp/ChangeLog
index 2c9b6fef98e1..5fe8904c2ebd 100644
--- a/net-ftp/ftp/ChangeLog
+++ b/net-ftp/ftp/ChangeLog
@@ -1,6 +1,17 @@
# ChangeLog for net-ftp/ftp
# Copyright 1999-2009 Gentoo Foundation; Distributed under the GPL v2
-# $Header: /var/cvsroot/gentoo-x86/net-ftp/ftp/ChangeLog,v 1.35 2009/01/08 06:18:27 vapier Exp $
+# $Header: /var/cvsroot/gentoo-x86/net-ftp/ftp/ChangeLog,v 1.36 2009/09/26 09:13:32 flameeyes Exp $
+
+ 26 Sep 2009; Diego E. Pettenò <flameeyes@gentoo.org> -ftp-0.17-r6.ebuild,
+ ftp-0.17-r7.ebuild, -files/netkit-ftp-0.17-CPPFLAGS.patch,
+ -files/netkit-ftp-0.17-acct.patch, -files/netkit-ftp-0.17-arg_max.patch,
+ -files/netkit-ftp-0.17-custom-cflags.patch,
+ -files/netkit-ftp-0.17-dont-strcpy-overlapping.patch,
+ -files/netkit-ftp-0.17-ipv6.patch, -files/netkit-ftp-0.17-locale.patch,
+ -files/netkit-ftp-0.17-runique_mget.patch,
+ -files/netkit-ftp-0.17-security.patch, -files/netkit-ftp-0.17-segv.patch,
+ -files/netkit-ftp-0.17-sigseg.patch, -files/netkit-ftp-0.17-ssl-0.2.patch:
+ Move patches on a patchset on mirrors.
08 Jan 2009; Mike Frysinger <vapier@gentoo.org> ftp-0.17-r7.ebuild:
Mark amd64 stable.
diff --git a/net-ftp/ftp/files/netkit-ftp-0.17-CPPFLAGS.patch b/net-ftp/ftp/files/netkit-ftp-0.17-CPPFLAGS.patch
deleted file mode 100644
index 4a26c2a004a0..000000000000
--- a/net-ftp/ftp/files/netkit-ftp-0.17-CPPFLAGS.patch
+++ /dev/null
@@ -1,15 +0,0 @@
-http://bugs.gentoo.org/234599
-
---- MRULES
-+++ MRULES
-@@ -1,8 +1,8 @@
- # Standard compilation rules (don't use make builtins)
-
- %.o: %.c
-- $(CC) $(CFLAGS) $< -c
-+ $(CC) $(CFLAGS) $(CPPFLAGS) $< -c
-
- %.o: %.cc
-- $(CC) $(CFLAGS) $< -c
-+ $(CC) $(CFLAGS) $(CPPFLAGS) $< -c
-
diff --git a/net-ftp/ftp/files/netkit-ftp-0.17-acct.patch b/net-ftp/ftp/files/netkit-ftp-0.17-acct.patch
deleted file mode 100644
index f679b80b35a6..000000000000
--- a/net-ftp/ftp/files/netkit-ftp-0.17-acct.patch
+++ /dev/null
@@ -1,15 +0,0 @@
-Ripped from Fedora
-https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=17353
-
---- netkit-ftp-0.17/ftp/ftp.c.acct Sun Jan 21 00:08:29 2001
-+++ netkit-ftp-0.17/ftp/ftp.c Sun Jan 21 00:09:04 2001
-@@ -254,7 +254,8 @@
- if (n == CONTINUE) {
- aflag++;
- /* fflush(stdout); */
-- zacct = getpass("Account:");
-+ if(zacct==NULL)
-+ zacct = getpass("Account:");
- n = command("ACCT %s", zacct);
- }
- if (n != COMPLETE) {
diff --git a/net-ftp/ftp/files/netkit-ftp-0.17-arg_max.patch b/net-ftp/ftp/files/netkit-ftp-0.17-arg_max.patch
deleted file mode 100644
index 08a88bb54b41..000000000000
--- a/net-ftp/ftp/files/netkit-ftp-0.17-arg_max.patch
+++ /dev/null
@@ -1,55 +0,0 @@
-diff -up netkit-ftp-0.17/ftp/glob.c.arg_max netkit-ftp-0.17/ftp/glob.c
---- netkit-ftp-0.17/ftp/glob.c.arg_max 2008-04-07 11:41:14.000000000 +0200
-+++ netkit-ftp-0.17/ftp/glob.c 2008-04-07 12:01:53.000000000 +0200
-@@ -50,6 +50,7 @@ char glob_rcsid[] =
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
-+#include <unistd.h>
-
- #include "ftp_var.h" /* for protos only */
- #include "glob.h"
-@@ -57,7 +58,7 @@ char glob_rcsid[] =
- #define QUOTE 0200
- #define TRIM 0177
- #define eq(a,b) (strcmp(a, b)==0)
--#define GAVSIZ (ARG_MAX/6)
-+#define GAVSIZ (sysconf(_SC_ARG_MAX)/6)
- #define isdir(d) ((d.st_mode & S_IFMT) == S_IFDIR)
-
- const char *globerr;
-@@ -115,7 +116,7 @@ char **
- ftpglob(const char *v)
- {
- char agpath[BUFSIZ];
-- entry agargv[GAVSIZ];
-+ entry *agargv;
- centry vv[2];
- vv[0].text = v;
- vv[1].text = NULL;
-@@ -133,6 +134,8 @@ ftpglob(const char *v)
- /* added ()'s to sizeof, (ambigious math for the compiler) */
- lastgpathp = agpath + (sizeof(agpath)- 2);
-
-+ agargv = (entry *)malloc(sizeof (entry) * GAVSIZ);
-+ if (agargv == NULL) fatal("Out of memory");
- ginit(agargv);
- globcnt = 0;
- collect(v);
-@@ -156,7 +159,7 @@ ginit(entry *agargv)
- gargv = agargv;
- sortbas = agargv;
- gargc = 0;
-- gnleft = ARG_MAX - 4;
-+ gnleft = sysconf(_SC_ARG_MAX) - 4;
- }
-
- static
-@@ -674,6 +677,7 @@ efree(entry *av)
- {
- int i;
- for (i=0; av[i].text; i++) free(av[i].text);
-+ free((void *)av);
- }
-
- static
diff --git a/net-ftp/ftp/files/netkit-ftp-0.17-custom-cflags.patch b/net-ftp/ftp/files/netkit-ftp-0.17-custom-cflags.patch
deleted file mode 100644
index 22805dc4da85..000000000000
--- a/net-ftp/ftp/files/netkit-ftp-0.17-custom-cflags.patch
+++ /dev/null
@@ -1,18 +0,0 @@
---- netkit-ftp-0.17/configure.orig 2005-02-11 19:04:49.000000000 -0500
-+++ netkit-ftp-0.17/configure 2005-02-11 19:05:02.000000000 -0500
-@@ -120,7 +120,6 @@
- $CC -O2 __conftest.c -o __conftest
- ) >/dev/null 2>&1; then
- echo 'yes'
-- CFLAGS="$CFLAGS -O2"
- else
- echo 'no'
- echo -n "Checking if $CC accepts -O... "
-@@ -128,7 +127,6 @@
- $CC -O __conftest.c -o __conftest
- ) >/dev/null 2>&1; then
- echo 'yes'
-- CFLAGS="$CFLAGS -O"
- else
- echo 'no'
- fi
diff --git a/net-ftp/ftp/files/netkit-ftp-0.17-dont-strcpy-overlapping.patch b/net-ftp/ftp/files/netkit-ftp-0.17-dont-strcpy-overlapping.patch
deleted file mode 100644
index dc08c8710a5e..000000000000
--- a/net-ftp/ftp/files/netkit-ftp-0.17-dont-strcpy-overlapping.patch
+++ /dev/null
@@ -1,53 +0,0 @@
-http://bugs.gentoo.org/104311
-
-From the strncpy(3) manpage:
-The strings may not overlap, and the destination string dest must be large
-enough to receive the copy.
-
-ftp.c:1812:Bounds error: in strncpy with 0x4 for 63 and 0x4 for 1, source and destination objects overlap.
-ftp.c:1812: Pointer value: 0x4
-ftp.c:1812: Object `*proxstruct.3':
-ftp.c:1812: Address in memory: 0x0 .. 0x7
-ftp.c:1812: Size: 8408 bytes
-ftp.c:1812: Element size: 1 bytes
-ftp.c:1812: Number of elements: 8408
-ftp.c:1812: Storage class: static
-Aborted
-
-The bug is hit when ftp.c's pswitch() is called multiple times:
-
-static struct comvars { char name[]; } proxstruct, tmpstruct;
-struct comvars *ip, *op;
-...
-if (flag) {
- ip = &tmpstruct;
- op = &proxstruct;
-} else {
- ip = &proxstruct;
- op = &tmpstruct;
-}
-...
-if (hostname)
- strncpy(ip->name, hostname, sizeof(ip->name) - 1);
-...
-hostname = op->name;
-
-so if the code path is:
- hostname = NULL
- pswitch(0)
- hostname = op->name (tmpstruct.name)
- pswitch(1)
- strncpy(ip->name (tmpstruct.name), hostname, ...)
-bad things happen
-
---- ftp/ftp.c
-+++ ftp/ftp.c
-@@ -1808,7 +1808,7 @@
- }
- ip->connect = connected;
- connected = op->connect;
-- if (hostname) {
-+ if (hostname && ip->name != hostname) {
- (void) strncpy(ip->name, hostname, sizeof(ip->name) - 1);
- ip->name[sizeof(ip->name) - 1] = '\0';
- }
diff --git a/net-ftp/ftp/files/netkit-ftp-0.17-ipv6.patch b/net-ftp/ftp/files/netkit-ftp-0.17-ipv6.patch
deleted file mode 100644
index 8d6279d1fbbe..000000000000
--- a/net-ftp/ftp/files/netkit-ftp-0.17-ipv6.patch
+++ /dev/null
@@ -1,846 +0,0 @@
-IPv6 patch originally from http://linux-ipv6.org/ but adapted by Jasmin Buchert
-to work with our SSL patch
-
-http://bugs.gentoo.org/show_bug.cgi?id=47507
-
---- netkit-ftp-old/ChangeLog
-+++ netkit-ftp-new/ChangeLog
-@@ -1,3 +1,6 @@
-+28-Nov-2000:
-+ IPv6 support. (Hiroyuki YAMAMORI <h-yamamo@db3.so-net.ne.jp>)
-+
- 8-Jul-2000:
- Fix misused printf-function call (not %n-exploitable though).
-
---- netkit-ftp-old/configure
-+++ netkit-ftp-new/configure
-@@ -26,1 +26,2 @@
- --with-c-compiler=cc Program for compiling C source [guessed]
-+ --enable-ipv6 Enable IPv6 support
-@@ -42,1 +43,4 @@
- --without-readline|--disable-readline) WITHOUT_READLINE=1;;
-+ --disable-ipv6) ENABLE_IPV6=no;;
-+ --enable-ipv6=*) ENABLE_IPV6=`echo $1 | sed 's/^[^=]*=//'`;;
-+ --enable-ipv6) ENABLE_IPV6=yes;;
-@@ -146,6 +152,40 @@
- rm -f __conftest*
-
- ##################################################
-+## Enable IPv6
-+echo -n "Whether to enable IPv6 support... "
-+if [ x"$ENABLE_IPV6" = x"yes" ]; then
-+ echo yes
-+ CFLAGS="$CFLAGS -DINET6"
-+else
-+ echo no
-+fi
-+
-+## Search IPv6 Library / Headers
-+if [ x"$ENABLE_IPV6" = x"yes" ]; then
-+ echo -n "Search for IPv6 library... "
-+ inet6libdirs="/usr/local/v6/lib /usr/local/lib /usr /usr/inet6/lib"
-+ inet6libs="inet6"
-+ inet6found=no
-+ for inet6libdir in $inet6libdirs; do
-+ for inet6lib in $inet6libs; do
-+ if [ -d $inet6libdir ] && [ -f $inet6libdir/lib$inet6lib.a ]; then
-+ inet6found=yes
-+ break 2
-+ fi
-+ done
-+ done
-+ if [ x"$inet6found" = x"yes" ]; then
-+ echo "$inet6libdir/lib$inet6lib.a"
-+ LIBS="$LIBS -L$inet6libdir -l$inet6lib"
-+ else
-+ echo "not found"
-+ fi
-+fi
-+
-+rm -f __conftest*
-+
-+##################################################
-
- echo -n 'Checking for BSD signal semantics... '
- cat <<EOF >__conftest.c
---- netkit-ftp-old/ftp/Makefile
-+++ netkit-ftp-new/ftp/Makefile
-@@ -19,10 +19,13 @@
- cmds.o glob.o: glob.h
-
- install: ftp
-+ install -d $(INSTALLROOT)$(BINDIR)
- install -s -m$(BINMODE) ftp $(INSTALLROOT)$(BINDIR)
- ln -sf ftp $(INSTALLROOT)$(BINDIR)/pftp
-+ install -d $(INSTALLROOT)$(MANDIR)/man1
- install -m$(MANMODE) ftp.1 $(INSTALLROOT)$(MANDIR)/man1
- ln -sf ftp.1 $(INSTALLROOT)$(MANDIR)/man1/pftp.1
-+ install -d $(INSTALLROOT)$(MANDIR)/man5
- install -m$(MANMODE) netrc.5 $(INSTALLROOT)$(MANDIR)/man5
-
- clean:
---- netkit-ftp-old/ftp/cmds.c
-+++ netkit-ftp-new/ftp/cmds.c
-@@ -1,3 +1,5 @@
-+/* $USAGI$ */
-+
- /*
- * Copyright (c) 1985, 1989 Regents of the University of California.
- * All rights reserved.
-@@ -190,7 +192,7 @@
- setpeer(int argc, char *argv[])
- {
- char *host;
-- unsigned short port;
-+ char *port;
-
- if (connected) {
- printf("Already connected to %s, use close first.\n",
-@@ -205,7 +207,7 @@
- code = -1;
- return;
- }
-- port = ftp_port;
-+ port = NULL;
- if (argc > 2) {
- #ifdef USE_SSL
- /* not really an SSL enhancement but something that
-@@ -222,7 +222,7 @@
- * the default (unofficial) port number
- */
- if ((strcmp(argv[2],"ssl-ftp")==0) && (destsp==NULL))
-- port = 150;
-+ port = "150";
- else {
- if (destsp == NULL ) {
- printf("%s: bad port name-- %s\n",argv[1],argv[2]);
-@@ -230,7 +230,9 @@
- code = -1;
- return;
- } else {
-- port = ntohs(destsp->s_port);
-+ static char portbuf[10];
-+ snprintf(portbuf, sizeof(portbuf), "%i", ntohs(destsp->s_port));
-+ port = portbuf;
- }
- }
- } else
-@@ -233,20 +235,15 @@
- }
- } else
- #endif /* USE_SSL */
-- port = atoi(argv[2]);
-- if (port < 1) {
-- printf("%s: bad port number-- %s\n", argv[1], argv[2]);
-- printf ("usage: %s host-name [port]\n", argv[0]);
-- code = -1;
-- return;
-- }
-- port = htons(port);
-+ port = argv[2];
- }
- host = hookup(argv[1], port);
- if (host) {
- int overbose;
-
- connected = 1;
-+ try_epsv = 1;
-+ try_eprt = 1;
- /*
- * Set up defaults for FTP.
- */
---- netkit-ftp-old/ftp/ftp.c
-+++ netkit-ftp-new/ftp/ftp.c
-@@ -10,6 +10,37 @@
- *
- */
-
-+/* $USAGI$ */
-+
-+/*
-+ * Copyright (C) 1997 and 1998 WIDE Project.
-+ * All rights reserved.
-+ *
-+ * Redistribution and use in source and binary forms, with or without
-+ * modification, are permitted provided that the following conditions
-+ * are met:
-+ * 1. Redistributions of source code must retain the above copyright
-+ * notice, this list of conditions and the following disclaimer.
-+ * 2. Redistributions in binary form must reproduce the above copyright
-+ * notice, this list of conditions and the following disclaimer in the
-+ * documentation and/or other materials provided with the distribution.
-+ * 3. Neither the name of the project nor the names of its contributors
-+ * may be used to endorse or promote products derived from this software
-+ * without specific prior written permission.
-+ *
-+ * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND
-+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-+ * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE
-+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-+ * SUCH DAMAGE.
-+*/
-+
- /*
- * Copyright (c) 1985, 1989 Regents of the University of California.
- * All rights reserved.
-@@ -75,14 +106,38 @@
- #include "ftp_var.h"
- #include "cmds.h"
-
-+#ifdef _USAGI
-+#include "version.h"
-+#else
- #include "../version.h"
-+#endif
-+
-+union sockunion {
-+ struct sockinet {
-+ u_short si_family;
-+ u_short si_port;
-+ } su_si;
-+ struct sockaddr su_sa;
-+ struct sockaddr_in su_sin;
-+#ifdef INET6
-+ struct sockaddr_in6 su_sin6;
-+#endif
-+};
-+#define su_family su_sa.sa_family
-+#define su_port su_si.si_port
-+
-+#ifdef INET6
-+#define ex_af2prot(a) (a == AF_INET ? 1 : (a == AF_INET6 ? 2 : 0))
-+#else
-+#define ex_af2prot(a) (a == AF_INET ? 1 : 0)
-+#endif
-
- int data = -1;
- off_t restart_point = 0;
-
--static struct sockaddr_in hisctladdr;
--static struct sockaddr_in data_addr;
--static struct sockaddr_in myctladdr;
-+static union sockunion hisctladdr;
-+static union sockunion data_addr;
-+static union sockunion myctladdr;
- static int ptflag = 0;
- static sigjmp_buf recvabort;
- static sigjmp_buf sendabort;
-@@ -119,79 +174,119 @@
- static FILE *dataconn(const char *);
-
- char *
--hookup(char *host, int port)
-+hookup(const char *host, const char *port)
- {
-- register struct hostent *hp = 0;
-- int s, tos;
-+ int s, tos, error;
- socklen_t len;
- static char hostnamebuf[256];
--
-+ struct addrinfo hints, *res, *res0;
-+ char hbuf[MAXHOSTNAMELEN], pbuf[NI_MAXSERV];
-+ char *cause = "ftp: unknown";
-+
-+ if (port) {
-+ strncpy(pbuf, port, sizeof(pbuf) - 1);
-+ pbuf[sizeof(pbuf) - 1] = '\0';
-+ } else {
-+ sprintf(pbuf, "%d", ntohs(ftp_port));
-+ }
- memset(&hisctladdr, 0, sizeof(hisctladdr));
-- if (inet_aton(host, &hisctladdr.sin_addr)) {
-- hisctladdr.sin_family = AF_INET;
-- strncpy(hostnamebuf, host, sizeof(hostnamebuf));
-- hostnamebuf[sizeof(hostnamebuf)-1]=0;
-- }
-- else {
-- hp = gethostbyname(host);
-- if (hp == NULL) {
-- fprintf(stderr, "ftp: %s: ", host);
-- herror((char *)NULL);
-- code = -1;
-- return((char *) 0);
-+ memset(&hints, 0, sizeof(hints));
-+ hints.ai_flags = AI_CANONNAME;
-+ hints.ai_socktype = SOCK_STREAM;
-+ error = getaddrinfo(host, pbuf, &hints, &res0);
-+ if (error) {
-+ if (port) {
-+ strcpy(hbuf, " ");
-+ } else {
-+ hbuf[0] = '\0';
-+ pbuf[0] = '\0';
- }
-- hisctladdr.sin_family = hp->h_addrtype;
-- if (hp->h_length > (int)sizeof(hisctladdr.sin_addr)) {
-- hp->h_length = sizeof(hisctladdr.sin_addr);
-- }
-- memcpy(&hisctladdr.sin_addr, hp->h_addr_list[0], hp->h_length);
-- (void) strncpy(hostnamebuf, hp->h_name, sizeof(hostnamebuf));
-- hostnamebuf[sizeof(hostnamebuf)-1] = 0;
-- }
-- hostname = hostnamebuf;
-- s = socket(hisctladdr.sin_family, SOCK_STREAM, 0);
-- if (s < 0) {
-- perror("ftp: socket");
-+ fprintf(stderr, "ftp: %s%s%s: %s\n", host, hbuf, pbuf,
-+ gai_strerror(error));
- code = -1;
- return (0);
- }
-- hisctladdr.sin_port = port;
-- while (connect(s, (struct sockaddr *)&hisctladdr, sizeof (hisctladdr)) < 0) {
-- if (hp && hp->h_addr_list[1]) {
-- int oerrno = errno;
--
-- fprintf(stderr, "ftp: connect to address %s: ",
-- inet_ntoa(hisctladdr.sin_addr));
-- errno = oerrno;
-- perror((char *) 0);
-- hp->h_addr_list++;
-- memcpy(&hisctladdr.sin_addr, hp->h_addr_list[0],
-- hp->h_length);
-- fprintf(stdout, "Trying %s...\n",
-- inet_ntoa(hisctladdr.sin_addr));
-- (void) close(s);
-- s = socket(hisctladdr.sin_family, SOCK_STREAM, 0);
-- if (s < 0) {
-- perror("ftp: socket");
-- code = -1;
-- return (0);
-- }
-+
-+ if (res0->ai_canonname) {
-+ struct addrinfo h, *a;
-+ memset(&h, 0, sizeof(h));
-+ h.ai_family = PF_UNSPEC;
-+ h.ai_socktype = SOCK_STREAM;
-+ h.ai_flags = AI_NUMERICHOST;
-+ if (!getaddrinfo(res0->ai_canonname, NULL, &h, &a)) {
-+ strncpy(hostnamebuf, res0->ai_canonname, sizeof(hostnamebuf));
-+ freeaddrinfo(a);
-+ } else
-+ strncpy(hostnamebuf, host, sizeof(hostnamebuf));
-+ }
-+ else
-+ strncpy(hostnamebuf, host, sizeof(hostnamebuf));
-+ hostnamebuf[sizeof(hostnamebuf) - 1] = '\0';
-+ hostname = hostnamebuf;
-+
-+ s = -1;
-+ for (res = res0; res; res = res->ai_next) {
-+ if (!ex_af2prot(res->ai_family)) {
-+ cause = "ftp: mismatch address family";
-+ errno = EPROTONOSUPPORT;
-+ continue;
-+ }
-+ if ((size_t)res->ai_addrlen > sizeof(hisctladdr)) {
-+ cause = "ftp: mismatch struct sockaddr size";
-+ errno = EPROTO;
-+ continue;
-+ }
-+ if (getnameinfo(res->ai_addr, res->ai_addrlen,
-+ hbuf, sizeof(hbuf), NULL, 0,
-+ NI_NUMERICHOST))
-+ strcpy(hbuf, "???");
-+ if (res0->ai_next) /* if we have multiple possibilities */
-+ fprintf(stdout, "Trying %s...\n", hbuf);
-+ s = socket(res->ai_family, res->ai_socktype, res->ai_protocol);
-+ if (s < 0) {
-+ cause = "ftp: socket";
-+ continue;
-+ }
-+ while ((error = connect(s, res->ai_addr, res->ai_addrlen)) < 0
-+ && errno == EINTR) {
-+ ;
-+ }
-+ if (error) {
-+ /* this "if" clause is to prevent print warning twice */
-+ if (res->ai_next) {
-+ fprintf(stderr,
-+ "ftp: connect to address %s\n", hbuf);
-+ perror("");
-+ }
-+ cause = "ftp: connect";
-+ close(s);
-+ s = -1;
- continue;
- }
-- perror("ftp: connect");
-+ /* finally we got one */
-+ break;
-+ }
-+ if (s < 0) {
-+ perror(cause);
- code = -1;
-- goto bad;
-+ freeaddrinfo(res0);
-+ return NULL;
- }
-- len = sizeof (myctladdr);
-+ len = res->ai_addrlen;
-+ memcpy(&hisctladdr, res->ai_addr, len);
-+ freeaddrinfo(res0);
- if (getsockname(s, (struct sockaddr *)&myctladdr, &len) < 0) {
- perror("ftp: getsockname");
- code = -1;
- goto bad;
- }
- #ifdef IP_TOS
-+ if (hisctladdr.su_family == AF_INET)
-+ {
- tos = IPTOS_LOWDELAY;
- if (setsockopt(s, IPPROTO_IP, IP_TOS, (char *)&tos, sizeof(int)) < 0)
- perror("ftp: setsockopt TOS (ignored)");
-+ }
- #endif
- cin = fdopen(s, "r");
- cout = fdopen(s, "w");
-@@ -205,7 +300,7 @@
- goto bad;
- }
- if (verbose)
-- printf("Connected to %s.\n", hostname);
-+ printf("Connected to %s (%s).\n", hostname, hbuf);
- if (getreply(0) > 2) { /* read startup message from server */
- if (cin)
- (void) fclose(cin);
-@@ -442,8 +537,10 @@
- }
- if (dig < 4 && isdigit(c))
- code = code * 10 + (c - '0');
-- if (!pflag && code == 227)
-+ if (!pflag && (code == 227 || code == 228))
- pflag = 1;
-+ else if (!pflag && code == 229)
-+ pflag = 100;
- if (dig > 4 && pflag == 1 && isdigit(c))
- pflag = 2;
- if (pflag == 2) {
-@@ -455,6 +552,8 @@
- pflag = 3;
- }
- }
-+ if (pflag == 100 && c == '(')
-+ pflag = 2;
- if (dig == 4 && c == '-') {
- if (continuation)
- code = 0;
-@@ -1207,15 +1306,25 @@
- static int
- initconn(void)
- {
-- register char *p, *a;
-+ u_char *p, *a;
- int result, tmpno = 0;
- socklen_t len;
- int on = 1;
-- int tos;
-- u_long a1,a2,a3,a4,p1,p2;
--
-+ int tos, error = 0;
-+ u_int ad[16], po[2], af, alen, plen;
-+ char *pasvcmd = NULL;
-+ char hbuf[MAXHOSTNAMELEN], pbuf[NI_MAXSERV];
-+
-+#ifdef INET6
-+ if (myctladdr.su_family == AF_INET6
-+ && (IN6_IS_ADDR_LINKLOCAL(&myctladdr.su_sin6.sin6_addr)
-+ || IN6_IS_ADDR_SITELOCAL(&myctladdr.su_sin6.sin6_addr))) {
-+ fprintf(stderr, "use of scoped address can be troublesome\n");
-+ }
-+#endif
- if (passivemode) {
-- data = socket(AF_INET, SOCK_STREAM, 0);
-+ data_addr = hisctladdr;
-+ data = socket(data_addr.su_family, SOCK_STREAM, 0);
- if (data < 0) {
- perror("ftp: socket");
- return(1);
-@@ -1224,31 +1333,177 @@
- setsockopt(data, SOL_SOCKET, SO_DEBUG, (char *)&on,
- sizeof (on)) < 0)
- perror("ftp: setsockopt (ignored)");
-- if (command("PASV") != COMPLETE) {
-+ switch (data_addr.su_family) {
-+ case AF_INET:
-+#if 0
-+ if (try_epsv) {
-+ result = command(pasvcmd = "EPSV 1");
-+ if (code / 10 == 22 && code != 229) {
-+ fprintf(stderr,
-+ "wrong server: return code must be 229\n");
-+ result = COMPLETE + 1;
-+ }
-+ } else {
-+#endif
-+ result = COMPLETE + 1;
-+
-+ if (result != COMPLETE) {
-+ try_epsv = 0;
-+ result = command(pasvcmd = "PASV");
-+ }
-+ break;
-+#ifdef INET6
-+ case AF_INET6:
-+ if (try_epsv) {
-+ result = command(pasvcmd = "EPSV 2");
-+ if (code / 10 == 22 && code != 229) {
-+ fprintf(stderr,
-+ "wrong server: return code must be 229\n");
-+ result = COMPLETE + 1;
-+ }
-+ } else {
-+ result = COMPLETE + 1;
-+ }
-+ if (result != COMPLETE) {
-+ try_epsv = 0;
-+ result = command(pasvcmd = "LPSV");
-+ }
-+ break;
-+#endif
-+ default:
-+ result = COMPLETE + 1;
-+ break;
-+ }
-+ if (result != COMPLETE) {
- printf("Passive mode refused.\n");
-- return(1);
-+ goto bad;
- }
-
-+#define pack2(var) \
-+ (((var[0] & 0xff) << 8) | ((var[1] & 0xff) << 0))
-+#define pack4(var) \
-+ ((((var)[0] & 0xff) << 24) | (((var)[1] & 0xff) << 16) | \
-+ (((var)[2] & 0xff) << 8) | (((var)[3] & 0xff) << 0))
-+
- /*
- * What we've got at this point is a string of comma separated
- * one-byte unsigned integer values, separated by commas.
-- * The first four are the an IP address. The fifth is the MSB
-- * of the port number, the sixth is the LSB. From that we'll
-- * prepare a sockaddr_in.
- */
--
-- if (sscanf(pasv,"%ld,%ld,%ld,%ld,%ld,%ld",
-- &a1,&a2,&a3,&a4,&p1,&p2)
-- != 6)
-- {
-- printf("Passive mode address scan failure. Shouldn't happen!\n");
-- return(1);
-+ error = 0;
-+ if (strcmp(pasvcmd, "PASV") == 0) {
-+ if (data_addr.su_family != AF_INET) {
-+ error = 2;
-+ goto psv_done;
-+ }
-+ if (code / 10 == 22 && code != 227) {
-+ error = 227;
-+ goto psv_done;
-+ }
-+ if (sscanf(pasv, "%u,%u,%u,%u,%u,%u",
-+ &ad[0], &ad[1], &ad[2], &ad[3],
-+ &po[0], &po[1]) != 6) {
-+ error = 1;
-+ goto psv_done;
-+ }
-+ data_addr.su_sin.sin_addr.s_addr = htonl(pack4(ad));
-+ data_addr.su_port = htons(pack2(po));
-+ } else
-+ if (strcmp(pasvcmd, "LPSV") == 0) {
-+ if (code / 10 == 22 && code != 228) {
-+ error = 228;
-+ goto psv_done;
-+ }
-+ switch (data_addr.su_family) {
-+ case AF_INET:
-+ if (sscanf(pasv, "%u,%u,%u,%u,%u,%u,%u,%u,%u",
-+ &af, &alen,
-+ &ad[0], &ad[1], &ad[2], &ad[3],
-+ &plen, &po[0], &po[1]) != 9) {
-+ error = 1;
-+ goto psv_done;
-+ }
-+ if (af != 4 || alen != 4 || plen != 2) {
-+ error = 2;
-+ goto psv_done;
-+ }
-+ data_addr.su_sin.sin_addr.s_addr =
-+ htonl(pack4(ad));
-+ data_addr.su_port = htons(pack2(po));
-+ break;
-+#ifdef INET6
-+ case AF_INET6:
-+ if (sscanf(pasv,
-+ "%u,%u,%u,%u,%u,%u,%u,%u,%u,%u,%u,%u,%u,%u,%u,%u,%u,%u,%u,%u,%u",
-+ &af, &alen,
-+ &ad[0], &ad[1], &ad[2], &ad[3],
-+ &ad[4], &ad[5], &ad[6], &ad[7],
-+ &ad[8], &ad[9], &ad[10], &ad[11],
-+ &ad[12], &ad[13], &ad[14], &ad[15],
-+ &plen, &po[0], &po[1]) != 21) {
-+ error = 1;
-+ goto psv_done;
-+ }
-+ if (af != 6 || alen != 16 || plen != 2) {
-+ error = 2;
-+ goto psv_done;
-+ }
-+ data_addr.su_sin6.sin6_addr.s6_addr32[0] =
-+ htonl(pack4(ad));
-+ data_addr.su_sin6.sin6_addr.s6_addr32[1] =
-+ htonl(pack4(ad+4));
-+ data_addr.su_sin6.sin6_addr.s6_addr32[2] =
-+ htonl(pack4(ad+8));
-+ data_addr.su_sin6.sin6_addr.s6_addr32[3] =
-+ htonl(pack4(ad+12));
-+ data_addr.su_port = htons(pack2(po));
-+ break;
-+#endif
-+ default:
-+ error = 1;
-+ }
-+ } else if (strncmp(pasvcmd, "EPSV", 4) == 0) {
-+ char delim[4];
-+ u_int epsvpo;
-+
-+ if (code / 10 == 22 && code != 229) {
-+ error = 229;
-+ goto psv_done;
-+ }
-+ if (sscanf(pasv, "%c%c%c%u%c", &delim[0], &delim[1],
-+ &delim[2], &epsvpo, &delim[3]) != 5) {
-+ error = 1;
-+ goto psv_done;
-+ }
-+ if (delim[0] != delim[1] || delim[0] != delim[2]
-+ || delim[0] != delim[3]) {
-+ error = 1;
-+ goto psv_done;
-+ }
-+ data_addr.su_port = htons(epsvpo);
-+ } else {
-+ error = 1;
-+ }
-+psv_done:
-+ switch (error) {
-+ case 0:
-+ break;
-+ case 1:
-+ fprintf(stderr,
-+ "Passive mode address scan failure. Shouldn't happen!\n");
-+ goto bad;
-+ case 2:
-+ fprintf(stderr,
-+ "Passive mode AF mismatch. Shouldn't happen!\n");
-+ goto bad;
-+ case 227:
-+ case 228:
-+ case 229:
-+ fprintf(stderr,
-+ "wrong server: return code must be %d\n", error);
-+ goto bad;
-+ default:
-+ fprintf(stderr, "Bug\n");
- }
--
-- data_addr.sin_family = AF_INET;
-- data_addr.sin_addr.s_addr = htonl((a1 << 24) | (a2 << 16) |
-- (a3 << 8) | a4);
-- data_addr.sin_port = htons((p1 << 8) | p2);
-
- if (connect(data, (struct sockaddr *) &data_addr,
- sizeof(data_addr))<0) {
-@@ -1256,20 +1511,23 @@
- return(1);
- }
- #ifdef IP_TOS
-+ if (data_addr.su_family == AF_INET)
-+ {
- tos = IPTOS_THROUGHPUT;
- if (setsockopt(data, IPPROTO_IP, IP_TOS, (char *)&tos,
- sizeof(tos)) < 0)
- perror("ftp: setsockopt TOS (ignored)");
-+ }
- #endif
- return(0);
- }
- noport:
- data_addr = myctladdr;
- if (sendport)
-- data_addr.sin_port = 0; /* let system pick one */
-+ data_addr.su_port = 0; /* let system pick one */
- if (data != -1)
- (void) close(data);
-- data = socket(AF_INET, SOCK_STREAM, 0);
-+ data = socket(data_addr.su_family, SOCK_STREAM, 0);
- if (data < 0) {
- perror("ftp: socket");
- if (tmpno)
-@@ -1296,13 +1554,47 @@
- if (listen(data, 1) < 0)
- perror("ftp: listen");
- if (sendport) {
-- a = (char *)&data_addr.sin_addr;
-- p = (char *)&data_addr.sin_port;
--#define UC(b) (((int)b)&0xff)
-- result =
-- command("PORT %d,%d,%d,%d,%d,%d",
-- UC(a[0]), UC(a[1]), UC(a[2]), UC(a[3]),
-- UC(p[0]), UC(p[1]));
-+ af = ex_af2prot(data_addr.su_family);
-+ if (try_eprt && af > 1) { /* only IPv6 */
-+ if (getnameinfo((struct sockaddr *)&data_addr, len,
-+ hbuf, sizeof(hbuf), pbuf, sizeof(pbuf),
-+ NI_NUMERICHOST | NI_NUMERICSERV) == 0) {
-+ result = command("EPRT |%d|%s|%s|",
-+ af, hbuf, pbuf);
-+ if (result != COMPLETE) {
-+ try_eprt = 0;
-+ }
-+ } else {
-+ result = ERROR;
-+ }
-+ } else {
-+ result = COMPLETE + 1;
-+ }
-+ if (result == COMPLETE)
-+ goto prt_done;
-+
-+ p = (u_char *)&data_addr.su_port;
-+ switch (data_addr.su_family) {
-+ case AF_INET:
-+ a = (u_char *)&data_addr.su_sin.sin_addr;
-+ result = command("PORT %u,%u,%u,%u,%u,%u",
-+ a[0], a[1], a[2], a[3], p[0], p[1]);
-+ break;
-+#ifdef INET6
-+ case AF_INET6:
-+ a = (u_char *)&data_addr.su_sin6.sin6_addr;
-+ result = command(
-+ "LPRT 6,16,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,2,%d,%d",
-+ a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7],
-+ a[8], a[9],a[10],a[11],a[12],a[13],a[14],a[15],
-+ p[0], p[1]);
-+ break;
-+#endif
-+ default:
-+ result = COMPLETE + 1; /* xxx */
-+ }
-+
-+ prt_done:
- if (result == ERROR && sendport == -1) {
- sendport = 0;
- tmpno = 1;
-@@ -1313,9 +1605,12 @@
- if (tmpno)
- sendport = 1;
- #ifdef IP_TOS
-+ if (data_addr.su_family == AF_INET)
-+ {
- on = IPTOS_THROUGHPUT;
- if (setsockopt(data, IPPROTO_IP, IP_TOS, (char *)&on, sizeof(int)) < 0)
- perror("ftp: setsockopt TOS (ignored)");
-+ }
- #endif
- return (0);
- bad:
-@@ -1328,7 +1623,7 @@
- static FILE *
- dataconn(const char *lmode)
- {
-- struct sockaddr_in from;
-+ union sockunion from;
- int s, tos;
- socklen_t fromlen = sizeof(from);
- int ret;
-@@ -1345,9 +1640,12 @@
- (void) close(data);
- data = s;
- #ifdef IP_TOS
-+ if (from.su_family == AF_INET)
-+ {
- tos = IPTOS_THROUGHPUT;
- if (setsockopt(s, IPPROTO_IP, IP_TOS, (char *)&tos, sizeof(int)) < 0)
- perror("ftp: setsockopt TOS (ignored)");
-+ }
- #endif
-
- #ifdef USE_SSL
-@@ -1470,8 +1768,8 @@
- static struct comvars {
- int connect;
- char name[MAXHOSTNAMELEN];
-- struct sockaddr_in mctl;
-- struct sockaddr_in hctl;
-+ union sockunion mctl;
-+ union sockunion hctl;
- FILE *in;
- FILE *out;
- int tpe;
-@@ -1509,7 +1807,7 @@
- connected = op->connect;
- if (hostname) {
- (void) strncpy(ip->name, hostname, sizeof(ip->name) - 1);
-- ip->name[strlen(ip->name)] = '\0';
-+ ip->name[sizeof(ip->name) - 1] = '\0';
- }
- else {
- ip->name[0] = 0;
-@@ -1538,18 +1836,18 @@
- ip->ntflg = ntflag;
- ntflag = op->ntflg;
- (void) strncpy(ip->nti, ntin, 16);
-- (ip->nti)[strlen(ip->nti)] = '\0';
-+ (ip->nti)[16] = '\0'; /* shouldn't use strlen */
- (void) strcpy(ntin, op->nti);
- (void) strncpy(ip->nto, ntout, 16);
-- (ip->nto)[strlen(ip->nto)] = '\0';
-+ (ip->nto)[16] = '\0';
- (void) strcpy(ntout, op->nto);
- ip->mapflg = mapflag;
- mapflag = op->mapflg;
- (void) strncpy(ip->mi, mapin, MAXPATHLEN - 1);
-- (ip->mi)[strlen(ip->mi)] = '\0';
-+ (ip->mi)[MAXPATHLEN - 1] = '\0';
- (void) strcpy(mapin, op->mi);
- (void) strncpy(ip->mo, mapout, MAXPATHLEN - 1);
-- (ip->mo)[strlen(ip->mo)] = '\0';
-+ (ip->mo)[MAXPATHLEN - 1] = '\0';
- (void) strcpy(mapout, op->mo);
- (void) signal(SIGINT, oldintr);
- if (abrtflag) {
---- netkit-ftp-old/ftp/ftp_var.h
-+++ netkit-ftp-new/ftp/ftp_var.h
-@@ -1,3 +1,5 @@
-+/* $USAGI$ */
-+
- /*
- * Copyright (c) 1985, 1989 Regents of the University of California.
- * All rights reserved.
-@@ -112,6 +114,8 @@
- Extern int mflag; /* flag: if != 0, then active multi command */
-
- Extern int options; /* used during socket creation */
-+Extern int try_epsv; /* try EPSV for this session */
-+Extern int try_eprt; /* try EPRT for this session */
-
- /*
- * Format of command table.
-@@ -140,7 +144,7 @@
- Extern char macbuf[4096];
- #define MACBUF_SIZE 4096
-
--char *hookup(char *host, int port);
-+char *hookup(const char *host, const char *port);
- struct cmd *getcmd(const char *);
- char **makeargv(int *pargc, char **parg);
- int dologin(const char *host);
diff --git a/net-ftp/ftp/files/netkit-ftp-0.17-locale.patch b/net-ftp/ftp/files/netkit-ftp-0.17-locale.patch
deleted file mode 100644
index e17402b327da..000000000000
--- a/net-ftp/ftp/files/netkit-ftp-0.17-locale.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-Ripped from Fedora
-
-* Wed Dec 15 2004 Tim Waugh <twaugh@redhat.com>
-- Call setlocale() so that readline works correctly (bug #142265).
-
-https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=142265
-
---- netkit-ftp-0.17/ftp/main.c
-+++ netkit-ftp-0.17/ftp/main.c
-@@ -51,6 +51,7 @@
-
- /* #include <arpa/ftp.h> <--- unused? */
-
-+#include <locale.h>
- #include <signal.h>
- #include <unistd.h>
- #include <string.h>
-@@ -109,6 +110,7 @@
-
- tick = 0;
-
-+ setlocale (LC_ALL, "");
- sp = getservbyname("ftp", "tcp");
- if (sp == 0) {
- fprintf(stderr, "ftp: ftp/tcp: unknown service\n");
diff --git a/net-ftp/ftp/files/netkit-ftp-0.17-runique_mget.patch b/net-ftp/ftp/files/netkit-ftp-0.17-runique_mget.patch
deleted file mode 100644
index 249238c0521f..000000000000
--- a/net-ftp/ftp/files/netkit-ftp-0.17-runique_mget.patch
+++ /dev/null
@@ -1,16 +0,0 @@
-ripped from Fedora
-https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=79367
-
---- netkit-ftp-0.17/ftp/ftp.c.runique_mget 2004-12-07 12:05:49.360133092 +0100
-+++ netkit-ftp-0.17/ftp/ftp.c 2004-12-07 12:06:48.480883902 +0100
-@@ -923,7 +923,9 @@
- return;
- }
- }
-- else if (runique && (local = gunique(local)) == NULL) {
-+ else if (runique && (strcmp(cmd, "NLST") != 0) &&
-+ (local = gunique(local)) == NULL)
-+ {
- (void) signal(SIGINT, oldintr);
- code = -1;
- return;
diff --git a/net-ftp/ftp/files/netkit-ftp-0.17-security.patch b/net-ftp/ftp/files/netkit-ftp-0.17-security.patch
deleted file mode 100644
index 376c1b5caa65..000000000000
--- a/net-ftp/ftp/files/netkit-ftp-0.17-security.patch
+++ /dev/null
@@ -1,14 +0,0 @@
-ripped from Fedora
-
-diff -urN netkit-ftp-0.17-pre20000412/ftp/ftp.c netkit-ftp-0.17-pre20000412.new/ftp/ftp.c
---- netkit-ftp-0.17-pre20000412/ftp/ftp.c Mon Dec 13 21:33:20 1999
-+++ netkit-ftp-0.17-pre20000412.new/ftp/ftp.c Wed Aug 16 14:12:50 2000
-@@ -883,7 +883,7 @@
- }
- if (fstat(fileno(fout), &st) < 0 || st.st_blksize == 0)
- st.st_blksize = BUFSIZ;
-- if (st.st_blksize > bufsize) {
-+ if ((unsigned)st.st_blksize > bufsize) {
- if (buf)
- (void) free(buf);
- buf = malloc((unsigned)st.st_blksize);
diff --git a/net-ftp/ftp/files/netkit-ftp-0.17-segv.patch b/net-ftp/ftp/files/netkit-ftp-0.17-segv.patch
deleted file mode 100644
index 53f01379bde1..000000000000
--- a/net-ftp/ftp/files/netkit-ftp-0.17-segv.patch
+++ /dev/null
@@ -1,90 +0,0 @@
-Ripped from Fedora
-
-* Mon Jun 14 2004 Alan Cox <alan@redhat.com>
-- Re-arranged some totally bogus old bezerkly code that could
- segfault ftp on connection loss. (BZ #122295)
-
-https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=122295
-
---- netkit-ftp-0.17/ftp/ftp.c.segv 2004-06-14 11:04:38.000000000 -0400
-+++ netkit-ftp-0.17/ftp/ftp.c 2004-06-14 11:06:46.000000000 -0400
-@@ -472,6 +472,8 @@
- return (0);
- }
- lostpeer(0);
-+ fclose(cout);
-+ cout = NULL;
- if (verbose) {
- printf("421 Service not available, remote server has closed connection\n");
- (void) fflush(stdout);
-@@ -529,7 +531,14 @@
- cpend = 0;
- (void) signal(SIGINT,oldintr);
- if (code == 421 || originalcode == 421)
-+ {
- lostpeer(0);
-+ if(cout)
-+ {
-+ fclose(cout);
-+ cout = NULL;
-+ }
-+ }
- if (abrtflag && oldintr != cmdabort && oldintr != SIG_IGN)
- (*oldintr)(SIGINT);
- return (n - '0');
-@@ -1790,6 +1799,11 @@
- if (ptabflg)
- code = -1;
- lostpeer(0);
-+ if(cout != NULL)
-+ {
-+ fclose(cout);
-+ cout = NULL;
-+ }
- }
- (void) getreply(0);
- (void) getreply(0);
-@@ -1815,6 +1829,11 @@
- perror("reset");
- code = -1;
- lostpeer(0);
-+ if(cout != NULL)
-+ {
-+ fclose(cout);
-+ cout = NULL;
-+ }
- }
- else if (nfnd) {
- (void) getreply(0);
-@@ -1897,6 +1916,11 @@
- if (ptabflg)
- code = -1;
- lostpeer(0);
-+ if(cout != NULL)
-+ {
-+ fclose(cout);
-+ cout = NULL;
-+ }
- }
- if (din && FD_ISSET(fileno(din), &mask)) {
- while (read(fileno(din), buf, BUFSIZ) > 0)
---- netkit-ftp-0.17/ftp/main.c.segv 2004-06-14 11:03:18.000000000 -0400
-+++ netkit-ftp-0.17/ftp/main.c 2004-06-14 11:03:42.000000000 -0400
-@@ -235,8 +235,6 @@
- if (connected) {
- if (cout != NULL) {
- shutdown(fileno(cout), 1+1);
-- fclose(cout);
-- cout = NULL;
- }
- if (data >= 0) {
- shutdown(data, 1+1);
-@@ -249,8 +247,6 @@
- if (connected) {
- if (cout != NULL) {
- shutdown(fileno(cout), 1+1);
-- fclose(cout);
-- cout = NULL;
- }
- connected = 0;
- }
diff --git a/net-ftp/ftp/files/netkit-ftp-0.17-sigseg.patch b/net-ftp/ftp/files/netkit-ftp-0.17-sigseg.patch
deleted file mode 100644
index 0972eb19513d..000000000000
--- a/net-ftp/ftp/files/netkit-ftp-0.17-sigseg.patch
+++ /dev/null
@@ -1,16 +0,0 @@
---- netkit-ftp-0.17-orig/ftp/ftp.c 2007-08-06 23:32:49.000000000 +0200
-+++ netkit-ftp-0.17/ftp/ftp.c 2007-08-06 23:31:06.000000000 +0200
-@@ -483,8 +483,10 @@ getreply(int expecteof)
- return (0);
- }
- lostpeer(0);
-- fclose(cout);
-- cout = NULL;
-+ if (cout) {
-+ fclose(cout);
-+ cout = NULL;
-+ }
- if (verbose) {
- printf("421 Service not available, remote server has closed connection\n");
- (void) fflush(stdout);
-
diff --git a/net-ftp/ftp/files/netkit-ftp-0.17-ssl-0.2.patch b/net-ftp/ftp/files/netkit-ftp-0.17-ssl-0.2.patch
deleted file mode 100644
index 2d45b7b1ff95..000000000000
--- a/net-ftp/ftp/files/netkit-ftp-0.17-ssl-0.2.patch
+++ /dev/null
@@ -1,1175 +0,0 @@
---- netkit-ftp-0.17/configure
-+++ netkit-ftp-0.17+ssl-0.2/configure
-@@ -26,6 +26,7 @@
- --binmode=mode Mode for binaries [755]
- --manmode=mode Mode for manual pages [644]
- --with-c-compiler=cc Program for compiling C source [guessed]
-+ --enable-ssl Enable SSL support
- EOF
- exit 0;;
- --verbose) ;;
-@@ -39,6 +40,8 @@
- --manmode=*) MANMODE=`echo $1 | sed 's/^[^=]*=//'` ;;
- --with-c-compiler=*) CC=`echo $1 | sed 's/^[^=]*=//'` ;;
- --without-readline|--disable-readline) WITHOUT_READLINE=1;;
-+ --disable-ssl) ENABLE_SSL=no;;
-+ --enable-ssl) ENABLE_SSL=yes;;
- *) echo "Unrecognized option: $1"; exit 1;;
- esac
- shift
-@@ -152,3 +155,15 @@
- rm -f __conftest*
-
-+##################################################
-+## Enable SSL
-+echo -n "Whether to enable SSL support... "
-+if [ x"$ENABLE_SSL" = x"yes" ]; then
-+ echo yes
-+ CFLAGS="$CFLAGS -DUSE_SSL"
-+ ## we should do tests here, but screw it, i'm lazy :P
-+ LIBS="$LIBS -lssl -lcrypto"
-+else
-+ echo no
-+fi
-+
- ##################################################
---- netkit-ftp-0.17/ftp/cmds.c
-+++ netkit-ftp-0.17+ssl-0.2/ftp/cmds.c
-@@ -207,6 +207,32 @@
- }
- port = ftp_port;
- if (argc > 2) {
-+#ifdef USE_SSL
-+ /* not really an SSL enhancement but something that
-+ * should have always been here --tjh
-+ */
-+ if (!isdigit(argv[2][0])) {
-+ struct servent *destsp;
-+
-+ destsp = getservbyname(argv[2], "tcp");
-+
-+ /* if lookup fails for ssl-ftp we fallback to
-+ * the default (unofficial) port number
-+ */
-+ if ((strcmp(argv[2],"ssl-ftp")==0) && (destsp==NULL))
-+ port = 150;
-+ else {
-+ if (destsp == NULL ) {
-+ printf("%s: bad port name-- %s\n",argv[1],argv[2]);
-+ printf ("usage: %s host-name [port]\n",argv[0]);
-+ code = -1;
-+ return;
-+ } else {
-+ port = ntohs(destsp->s_port);
-+ }
-+ }
-+ } else
-+#endif /* USE_SSL */
- port = atoi(argv[2]);
- if (port < 1) {
- printf("%s: bad port number-- %s\n", argv[1], argv[2]);
---- netkit-ftp-0.17/ftp/ftp.1
-+++ netkit-ftp-0.17+ssl-0.2/ftp/ftp.1
-@@ -97,6 +97,52 @@
- as report on data transfer statistics.
- .It Fl d
- Enables debugging.
-+.It Fl z Ar option
-+Set SSL (Secure Socket Layer) parameters. The default is to negotiate
-+via ftp protocoll if SSL is availlable at server side and then to
-+switch it on. In this mode you can connect to both conventional and
-+SSL enhanced ftpd's.
-+.Pp
-+The SSL parameters are:
-+.Bl -tag -width Fl
-+.It Ic Ar debug
-+Send SSL related debugging information to stderr.
-+.It Ic Ar authdebug
-+Enable authentication debugging.
-+.It Ic Ar ssl
-+Negotiate SSL at first, then use ftp protocol. ftp protocol
-+negotiation goes encrypted. (Not yet implemented)
-+.It Ic Ar nossl, Ar !ssl
-+switch of SSL negotiation
-+.It Ic Ar certrequired
-+client certificate is mandatory
-+.It Ic Ar secure
-+Don't switch back to unencrypted mode (no SSL) if SSL is not available.
-+.It Ic Ar verbose
-+Be verbose about certificates etc.
-+.It Ic Ar verify=int
-+.\" TODO
-+Set the SSL verify flags (SSL_VERIFY_* in
-+.Ar ssl/ssl.h
-+).
-+.\" TODO
-+.It Ic Ar cert=cert_file
-+.\" TODO
-+Use the certificate(s) in
-+.Ar cert_file .
-+.It Ic Ar key=key_file
-+.\" TODO
-+Use the key(s) in
-+.Ar key_file .
-+.It Ic Ar cipher=ciph_list
-+.\" TODO
-+Set the preferred ciphers to
-+.Ar ciph_list .
-+.\" TODO: possible values; comma-separated list?
-+(See
-+.Ar ssl/ssl.h
-+).
-+.El
- .El
- .Pp
- The client host with which
---- netkit-ftp-0.17/ftp/ftp.c
-+++ netkit-ftp-0.17+ssl-0.2/ftp/ftp.c
-@@ -1,3 +1,15 @@
-+/*
-+ * The modifications to support SSLeay were done by Tim Hudson
-+ * tjh@cryptsoft.com
-+ *
-+ * You can do whatever you like with these patches except pretend that
-+ * you wrote them.
-+ *
-+ * Email ssl-users-request@lists.cryptsoft.com to get instructions on how to
-+ * join the mailing list that discusses SSLeay and also these patches.
-+ *
-+ */
-+
- /*
- * Copyright (c) 1985, 1989 Regents of the University of California.
- * All rights reserved.
-@@ -77,6 +89,17 @@
- static sigjmp_buf ptabort;
- static int ptabflg = 0;
- static int abrtflag = 0;
-+static int
-+auth_user(char *u,char *p);
-+#ifdef USE_SSL
-+static int pdata = -1;
-+static int
-+ssl_getc(SSL *ssl_con);
-+static int
-+ssl_putc_flush(SSL *ssl_con);
-+static int
-+ssl_putc(SSL *ssl_con, int oneint);
-+#endif
-
- void lostpeer(int);
- extern int connected;
-@@ -243,14 +266,7 @@
- else
- luser = tmp;
- }
-- n = command("USER %s", luser);
-- if (n == CONTINUE) {
-- if (pass == NULL) {
-- /* fflush(stdout); */
-- pass = getpass("Password:");
-- }
-- n = command("PASS %s", pass);
-- }
-+ n = auth_user(luser,pass);
- if (n == CONTINUE) {
- aflag++;
- /* fflush(stdout); */
-@@ -296,6 +312,9 @@
- va_list ap;
- int r;
- void (*oldintr)(int);
-+#ifdef USE_SSL
-+ char outputbuf[8192];
-+#endif /* USE_SSL */
-
- abrtflag = 0;
- if (debug) {
-@@ -316,10 +335,27 @@
- }
- oldintr = signal(SIGINT, cmdabort);
- va_start(ap, fmt);
-+#ifdef USE_SSL
-+ /* assemble the output into a buffer */
-+ vsnprintf(outputbuf,sizeof(outputbuf),fmt,ap);
-+ strcat(outputbuf,"\r\n");
-+ if (ssl_active_flag) {
-+ SSL_write(ssl_con,outputbuf,strlen(outputbuf));
-+ } else {
-+ fprintf(cout,"%s",outputbuf);
-+ fflush(cout);
-+ }
-+#else /* !USE_SSL */
- vfprintf(cout, fmt, ap);
-+#endif /* USE_SSL */
- va_end(ap);
-+
-+#ifndef USE_SSL
-+ /* we don't need this as we concatenated it above */
- fprintf(cout, "\r\n");
- (void) fflush(cout);
-+#endif /* !USE_SSL */
-+
- cpend = 1;
- r = getreply(!strcmp(fmt, "QUIT"));
- if (abrtflag && oldintr != SIG_IGN)
-@@ -343,25 +379,39 @@
- int pflag = 0;
- size_t px = 0;
- size_t psize = sizeof(pasv);
-+ char buf[16];
-
- oldintr = signal(SIGINT, cmdabort);
- for (;;) {
- dig = n = code = 0;
- cp = reply_string;
-- while ((c = getc(cin)) != '\n') {
-+ while ((c = GETC(cin)) != '\n') {
- if (c == IAC) { /* handle telnet commands */
-- switch (c = getc(cin)) {
-+ switch (c = GETC(cin)) {
- case WILL:
- case WONT:
-- c = getc(cin);
-- fprintf(cout, "%c%c%c", IAC, DONT, c);
-- (void) fflush(cout);
-+ c = GETC(cin);
-+ sprintf(buf,
-+ "%c%c%c", IAC, DONT, c);
-+#ifdef USE_SSL
-+ if (ssl_active_flag)
-+ SSL_write(ssl_con,buf,3);
-+ else
-+#endif /* !USE_SSL */
-+ fwrite(buf,3,1,cout);
-+ (void) FFLUSH(cout);
- break;
- case DO:
- case DONT:
-- c = getc(cin);
-- fprintf(cout, "%c%c%c", IAC, WONT, c);
-- (void) fflush(cout);
-+ c = GETC(cin);
-+ sprintf(buf, "%c%c%c", IAC, WONT, c);
-+#ifdef USE_SSL
-+ if (ssl_active_flag)
-+ SSL_write(ssl_con,buf,3);
-+ else
-+#endif /* !USE_SSL */
-+ fwrite(buf,3,1,cout);
-+ (void) FFLUSH(cout);
- break;
- default:
- break;
-@@ -600,9 +650,18 @@
- errno = d = 0;
- while ((c = read(fileno(fin), buf, sizeof (buf))) > 0) {
- bytes += c;
-+#ifdef USE_SSL
-+ if (ssl_data_active_flag) {
-+ for (bufp = buf; c > 0; c -= d, bufp += d)
-+ if ((d = SSL_write(ssl_data_con, bufp, c)) <= 0)
-+ break;
-+ } else
-+#endif /* !USE_SSL */
-+ {
- for (bufp = buf; c > 0; c -= d, bufp += d)
- if ((d = write(fileno(dout), bufp, c)) <= 0)
- break;
-+ }
- if (hash) {
- while (bytes >= hashbytes) {
- (void) putchar('#');
-@@ -654,16 +713,17 @@
- }
- if (ferror(dout))
- break;
-- (void) putc('\r', dout);
-+ (void) DATAPUTC('\r', dout);
- bytes++;
- }
-- (void) putc(c, dout);
-+ (void) DATAPUTC(c, dout);
- bytes++;
- /* if (c == '\r') { */
- /* (void) putc('\0', dout); (* this violates rfc */
- /* bytes++; */
- /* } */
- }
-+ DATAFLUSH(dout);
- if (hash) {
- if (bytes < hashbytes)
- (void) putchar('#');
-@@ -688,6 +748,15 @@
- if (closefunc != NULL)
- (*closefunc)(fin);
- (void) fclose(dout);
-+
-+#ifdef USE_SSL
-+ if (ssl_data_active_flag && (ssl_data_con!=NULL)) {
-+ SSL_free(ssl_data_con);
-+ ssl_data_active_flag=0;
-+ ssl_data_con=NULL;
-+ }
-+#endif /* USE_SSL */
-+
- /* closes data as well, so discard it */
- data = -1;
- (void) getreply(0);
-@@ -714,6 +783,15 @@
- (void) close(data);
- data = -1;
- }
-+
-+#ifdef USE_SSL
-+ if (ssl_data_active_flag && (ssl_data_con!=NULL)) {
-+ SSL_free(ssl_data_con);
-+ ssl_data_active_flag=0;
-+ ssl_data_con=NULL;
-+ }
-+#endif /* USE_SSL */
-+
- (void) getreply(0);
- code = -1;
- if (closefunc != NULL && fin != NULL)
-@@ -908,6 +986,33 @@
- return;
- }
- errno = d = 0;
-+#ifdef USE_SSL
-+ if (ssl_data_active_flag) {
-+ while ((c = SSL_read(ssl_data_con, buf, bufsize)) > 0) {
-+ if ((d = write(fileno(fout), buf, c)) != c)
-+ break;
-+ bytes += c;
-+ if (hash) {
-+ while (bytes >= hashbytes) {
-+ (void) putchar('#');
-+ hashbytes += HASHBYTES;
-+ }
-+ (void) fflush(stdout);
-+ }
-+ }
-+ if ( c < -1 ) {
-+ static char errbuf[1024];
-+
-+ sprintf(errbuf,"ftp: SSL_read DATA error %s\n",
-+ ERR_error_string(ERR_get_error(),NULL));
-+
-+ /* tell the user ... who else */
-+ fprintf(stderr,"%s", errbuf);
-+ fflush(stderr);
-+ }
-+ } else
-+#endif /* !USE_SSL */
-+ {
- while ((c = read(fileno(din), buf, bufsize)) > 0) {
- if ((d = write(fileno(fout), buf, c)) != c)
- break;
-@@ -927,6 +1032,7 @@
- hashbytes += TICKBYTES;
- }
- }
-+ }
- if (hash && bytes > 0) {
- if (bytes < HASHBYTES)
- (void) putchar('#');
-@@ -973,7 +1079,7 @@
- return;
- }
- }
-- while ((c = getc(din)) != EOF) {
-+ while ((c = DATAGETC(din)) != EOF) {
- if (c == '\n')
- bare_lfs++;
- while (c == '\r') {
-@@ -991,7 +1097,7 @@
- hashbytes += TICKBYTES;
- }
- bytes++;
-- if ((c = getc(din)) != '\n' || tcrflag) {
-+ if ((c = DATAGETC(din)) != '\n' || tcrflag) {
- if (ferror(fout))
- goto break2;
- (void) putc('\r', fout);
-@@ -1039,6 +1145,15 @@
- (void) signal(SIGPIPE, oldintp);
- (void) gettimeofday(&stop, (struct timezone *)0);
- (void) fclose(din);
-+
-+#ifdef USE_SSL
-+ if (ssl_data_active_flag && (ssl_data_con!=NULL)) {
-+ SSL_free(ssl_data_con);
-+ ssl_data_active_flag=0;
-+ ssl_data_con=NULL;
-+ }
-+#endif /* USE_SSL */
-+
- /* closes data as well, so discard it */
- data = -1;
- (void) getreply(0);
-@@ -1071,6 +1186,15 @@
- (void) close(data);
- data = -1;
- }
-+
-+#ifdef USE_SSL
-+ if (ssl_data_active_flag && (ssl_data_con!=NULL)) {
-+ SSL_free(ssl_data_con);
-+ ssl_data_active_flag=0;
-+ ssl_data_con=NULL;
-+ }
-+#endif /* USE_SSL */
-+
- if (bytes > 0)
- ptransfer("received", bytes, &start, &stop);
- (void) signal(SIGINT, oldintr);
-@@ -1207,6 +1331,7 @@
- struct sockaddr_in from;
- int s, tos;
- socklen_t fromlen = sizeof(from);
-+ int ret;
-
- if (passivemode)
- return (fdopen(data, lmode));
-@@ -1224,6 +1349,67 @@
- if (setsockopt(s, IPPROTO_IP, IP_TOS, (char *)&tos, sizeof(int)) < 0)
- perror("ftp: setsockopt TOS (ignored)");
- #endif
-+
-+#ifdef USE_SSL
-+ ssl_data_active_flag=0;
-+ if (ssl_active_flag && ssl_encrypt_data) {
-+ /* do SSL */
-+ if (ssl_data_con!=NULL) {
-+ SSL_free(ssl_data_con);
-+ ssl_data_con=NULL;
-+ }
-+ ssl_data_con=(SSL *)SSL_new(ssl_ctx);
-+
-+ SSL_set_fd(ssl_data_con,data);
-+ set_ssl_trace(ssl_data_con);
-+
-+ SSL_set_verify(ssl_data_con,ssl_verify_flag,NULL);
-+
-+ /* this is the "magic" call that makes
-+ * this quick assuming Eric has this going
-+ * okay! ;-)
-+ */
-+ SSL_copy_session_id(ssl_data_con,ssl_con);
-+
-+ /* we are doing I/O and not using select so
-+ * it is "safe" to read ahead
-+ */
-+ /* SSL_set_read_ahead(ssl_data_con,1); */
-+
-+ if (debug) {
-+ fprintf(stderr,"===>START SSL connect on DATA\n");
-+ fflush(stderr);
-+ }
-+
-+ if ((ret=SSL_connect(ssl_data_con))<=0) {
-+ static char errbuf[1024];
-+
-+ sprintf(errbuf,"ftp: SSL_connect DATA error %d - %s\n",
-+ ret,ERR_error_string(ERR_get_error(),NULL));
-+
-+ /* tell the user ... who else */
-+ fprintf(stderr,"%s", errbuf);
-+ fflush(stderr);
-+
-+ /* abort time methinks ... */
-+ close(data);
-+ return NULL;
-+ } else {
-+ if (ssl_debug_flag) {
-+ BIO_printf(bio_err,"[SSL DATA Cipher %s]\n",
-+ SSL_get_cipher(ssl_con));
-+ }
-+ ssl_data_active_flag=1;
-+ }
-+
-+ if (debug) {
-+ fprintf(stderr,"===>DONE SSL connect on DATA %d\n",data);
-+ fflush(stderr);
-+ }
-+
-+ }
-+#endif /* USE_SSL */
-+
- return (fdopen(data, lmode));
- }
-
-@@ -1609,3 +1795,142 @@
- }
- (void) getreply(0);
- }
-+
-+static int
-+auth_user(char *u,char *p)
-+{
-+ int n;
-+
-+#ifdef USE_SSL
-+ if (ssl_enabled) {
-+ n = command("AUTH SSL");
-+ if (n == ERROR) { /* do normal USER/PASS */
-+ printf("SSL not available\n");
-+ /* spit the dummy as we will only talk ssl
-+ * when running in "secure" mode
-+ */
-+ if (ssl_secure_flag)
-+ return ERROR;
-+ } else if (n == CONTINUE || n == COMPLETE) {
-+ /* do SSL */
-+ ssl_con=(SSL *)SSL_new(ssl_ctx);
-+
-+ SSL_set_fd(ssl_con,fileno(cout));
-+ set_ssl_trace(ssl_con);
-+
-+ SSL_set_verify(ssl_con,ssl_verify_flag,NULL);
-+
-+ /* Add in any certificates if you want to here ... */
-+ if (my_ssl_cert_file) {
-+ if (!SSL_use_certificate_file(ssl_con, my_ssl_cert_file,
-+ X509_FILETYPE_PEM)) {
-+ fprintf(stderr,"%s: ",my_ssl_cert_file);
-+ ERR_print_errors_fp(stderr);
-+ exit(1);
-+ } else {
-+ if (!my_ssl_key_file)
-+ my_ssl_key_file = my_ssl_cert_file;
-+ if (!SSL_use_RSAPrivateKey_file(ssl_con, my_ssl_key_file,
-+ X509_FILETYPE_PEM)) {
-+ fprintf(stderr,"%s: ", my_ssl_key_file);
-+ ERR_print_errors_fp(stderr);
-+ exit(1);
-+ }
-+ }
-+ }
-+
-+ if (SSL_connect(ssl_con)<=0) {
-+ static char errbuf[1024];
-+
-+ sprintf(errbuf,"ftp: SSL_connect error %s\n",
-+ ERR_error_string(ERR_get_error(),NULL));
-+ perror(errbuf);
-+ /* abort time methinks ... */
-+ exit(1);
-+ } else {
-+ fprintf(stderr,"[SSL Cipher %s]\n",SSL_get_cipher(ssl_con));
-+ fflush(stderr);
-+ ssl_active_flag=1;
-+ }
-+
-+ n = command("USER %s",u);
-+ if (n == CONTINUE) {
-+ if(p == NULL)
-+ p = getpass("Password:");
-+ n = command("PASS %s",p);
-+ }
-+ return (n);
-+ }
-+ }
-+#endif /* USE_SSL */
-+ n = command("USER %s",u);
-+ if (n == CONTINUE) {
-+ if(p == NULL)
-+ p = getpass("Password:");
-+ n = command("PASS %s",p);
-+ }
-+ return(n);
-+}
-+
-+#ifdef USE_SSL
-+
-+/* we really shouldn't have code like this! --tjh */
-+static int
-+ssl_getc(SSL *ssl_con)
-+{
-+ char onebyte;
-+ int ret;
-+
-+ if ((ret=SSL_read(ssl_con,&onebyte,1))!=1) {
-+ /* we want to know this stuff! */
-+ if (ssl_debug_flag || (ret!=0)) {
-+ fprintf(stderr,"ssl_getc: SSL_read failed %d = %d\n",ret,errno);
-+ fflush(stderr);
-+ }
-+ return -1;
-+ } else {
-+ if (ssl_debug_flag) {
-+ BIO_printf(bio_err,"ssl_getc: SSL_read %d (%c) ",onebyte & 0xff,isprint(onebyte)?onebyte:'.');
-+ }
-+ return onebyte & 0xff;
-+ }
-+}
-+
-+
-+/* got back to this an implemented some rather "simple" buffering */
-+static char putc_buf[BUFSIZ];
-+static int putc_buf_pos=0;
-+
-+static int
-+ssl_putc_flush(SSL *ssl_con)
-+{
-+ if (putc_buf_pos>0) {
-+ if (SSL_write(ssl_con,putc_buf,putc_buf_pos)!=putc_buf_pos) {
-+ if (ssl_debug_flag) {
-+ BIO_printf(bio_err,"ssl_putc_flush: WRITE FAILED\n");
-+ }
-+ putc_buf_pos=0;
-+ return -1;
-+ }
-+ }
-+ putc_buf_pos=0;
-+ return 0;
-+}
-+
-+int
-+ssl_putc(SSL *ssl_con,int oneint)
-+{
-+ char onebyte;
-+
-+ onebyte = oneint & 0xff;
-+
-+ /* make sure there is space */
-+ if (putc_buf_pos>=BUFSIZ)
-+ if (ssl_putc_flush(ssl_con)!=0)
-+ return EOF;
-+ putc_buf[putc_buf_pos++]=onebyte;
-+
-+ return onebyte;
-+}
-+
-+#endif /* USE_SSL */
---- netkit-ftp-0.17/ftp/ftp_var.h
-+++ netkit-ftp-0.17+ssl-0.2/ftp/ftp_var.h
-@@ -158,3 +158,6 @@
- void setpeer(int argc, char *argv[]);
- void quit(void);
- void changetype(int newtype, int show);
-+
-+#include "sslapp.h"
-+#include "ssl_port.h"
---- netkit-ftp-0.17/ftp/main.c
-+++ netkit-ftp-0.17+ssl-0.2/ftp/main.c
-@@ -1,3 +1,15 @@
-+/*
-+ * The modifications to support SSLeay were done by Tim Hudson
-+ * tjh@cryptsoft.com
-+ *
-+ * You can do whatever you like with these patches except pretend that
-+ * you wrote them.
-+ *
-+ * Email ssl-users-request@lists.cryptsoft.com to get instructions on how to
-+ * join the mailing list that discusses SSLeay and also these patches.
-+ *
-+ */
-+
- /*
- * Copyright (c) 1985, 1989 Regents of the University of California.
- * All rights reserved.
-@@ -82,6 +94,75 @@
- static void cmdscanner(int top);
- static char *slurpstring(void);
-
-+#ifdef USE_SSL
-+
-+/* icky way of doing things ... */
-+#include "sslapp.c"
-+
-+/*
-+#include "ssl_err.h"
-+*/
-+
-+SSL *ssl_con;
-+SSL *ssl_data_con;
-+int ssl_data_active_flag=0;
-+
-+/* for the moment this is a compile time option only --tjh */
-+int ssl_encrypt_data=1;
-+int ssl_enabled=1;
-+
-+char *my_ssl_key_file=NULL;
-+char *my_ssl_cert_file=NULL;
-+
-+BIO *bio_err=NULL;
-+
-+static long
-+bio_dump_cb(BIO *bio,
-+ int cmd,
-+ char *argp,
-+ int argi,
-+ long argl,
-+ long ret)
-+ {
-+ BIO *out;
-+
-+/*
-+ out=(BIO *)BIO_get_callback_arg(bio);
-+*/
-+ out=bio_err;
-+ if (out == NULL) return(ret);
-+
-+ if (cmd == (BIO_CB_READ|BIO_CB_RETURN))
-+ {
-+ BIO_printf(out,"read from %08X (%d bytes => %ld (%X))\n",
-+ bio,argi,ret,ret);
-+ BIO_dump(out,argp,(int)ret);
-+ BIO_flush(out);
-+ }
-+ else if (cmd == (BIO_CB_WRITE|BIO_CB_RETURN))
-+ {
-+ BIO_printf(out,"write to %08X (%d bytes => %ld (%X))\n",
-+ bio,argi,ret,ret);
-+ BIO_dump(out,argp,(int)ret);
-+ BIO_flush(out);
-+ }
-+ return( (cmd & BIO_CB_RETURN) ? ret : 1);
-+ }
-+
-+int
-+set_ssl_trace(SSL *con)
-+{
-+ if (con!=NULL) {
-+ if (ssl_debug_flag) {
-+ BIO_set_callback(SSL_get_rbio(con),bio_dump_cb);
-+ BIO_set_callback_arg(SSL_get_rbio(con),bio_err);
-+ }
-+ }
-+ return 0;
-+}
-+
-+#endif /* USE_SSL */
-+
- static
- void
- usage(void)
-@@ -106,6 +187,7 @@
- int top;
- struct passwd *pw = NULL;
- char homedir[MAXPATHLEN];
-+ char *optarg;
-
- tick = 0;
-
-@@ -134,6 +216,7 @@
-
- argc--, argv++;
- while (argc > 0 && **argv == '-') {
-+ optarg=*(argv+1);
- for (cp = *argv + 1; *cp; cp++)
- switch (*cp) {
-
-@@ -174,6 +257,48 @@
- usage();
- exit(0);
-
-+#ifdef USE_SSL
-+ case 'z':
-+ if (!optarg) {
-+ fprintf(stderr, "ftp: the -z option requires an argument\n");
-+ exit(1);
-+ }
-+ if (strcmp(optarg, "debug") == 0 ) {
-+ ssl_debug_flag=1;
-+ }
-+ if (strcmp(optarg, "ssl") == 0 ) {
-+ ssl_only_flag=1;
-+ }
-+ /* disable *all* ssl stuff */
-+ if ( (strcmp(optarg, "!ssl") == 0 ) ||
-+ (strcmp(optarg, "nossl") == 0 ) ) {
-+ ssl_enabled=0;
-+ }
-+ if (strcmp(optarg, "secure") == 0 ) {
-+ ssl_secure_flag=1;
-+ }
-+ if (strcmp(optarg, "certsok") == 0 ) {
-+ ssl_certsok_flag=1;
-+ }
-+ if (strcmp(optarg, "verbose") == 0 ) {
-+ ssl_verbose_flag=1;
-+ }
-+ if (strncmp(optarg, "verify=", strlen("verify=")) == 0 ) {
-+ ssl_verify_flag=atoi(optarg+strlen("verify="));
-+ }
-+ if (strncmp(optarg, "cert=", strlen("cert=")) == 0 ) {
-+ my_ssl_cert_file=optarg+strlen("cert=");
-+ }
-+ if (strncmp(optarg, "key=", strlen("key=")) == 0 ) {
-+ my_ssl_key_file=optarg+strlen("key=");
-+ }
-+
-+ /* we have swallowed an extra arg */
-+ argc--;
-+ argv++;
-+ break;
-+#endif /* USE_SSL */
-+
- default:
- fprintf(stdout,
- "ftp: %c: unknown option\n", *cp);
-@@ -202,6 +323,18 @@
- homedir[sizeof(homedir)-1] = 0;
- home = homedir;
- }
-+
-+#ifdef USE_SSL
-+ if (ssl_enabled) {
-+ if (!do_ssleay_init(0)) {
-+ fprintf(stderr,"ftp: SSLeay initialisation failed\n");
-+ fflush(stderr);
-+ ERR_print_errors_fp(stderr);
-+ exit(1);
-+ }
-+ }
-+#endif /* USE_SSL */
-+
- if (argc > 0) {
- if (sigsetjmp(toplevel, 1))
- exit(0);
---- netkit-ftp-0.17/ftp/ssl_port.h
-+++ netkit-ftp-0.17+ssl-0.2/ftp/ssl_port.h
-@@ -0,0 +1,85 @@
-+/* ssl_port.h - standard porting things
-+ *
-+ * The modifications to support SSLeay were done by Tim Hudson
-+ * tjh@mincom.oz.au
-+ *
-+ * You can do whatever you like with these patches except pretend that
-+ * you wrote them.
-+ *
-+ * Email ssl-users-request@mincom.oz.au to get instructions on how to
-+ * join the mailing list that discusses SSLeay and also these patches.
-+ *
-+ */
-+
-+#ifndef HEADER_SSL_PORT_H
-+#define HEADER_SSL_PORT_H
-+
-+#ifdef USE_SSL
-+
-+#include <stdio.h>
-+
-+#define OLDPROTO NOPROTO
-+#define NOPROTO
-+#include <openssl/buffer.h>
-+#undef NOPROTO
-+#define NOPROTO OLDPROTO
-+
-+#include <openssl/x509.h>
-+#include <openssl/ssl.h>
-+#include <openssl/err.h>
-+
-+extern SSL *ssl_con;
-+extern SSL_CTX *ssl_ctx;
-+extern int ssl_debug_flag;
-+extern int ssl_only_flag;
-+extern int ssl_active_flag;
-+extern int ssl_verify_flag;
-+extern int ssl_secure_flag;
-+extern int ssl_enabled;
-+
-+extern int ssl_encrypt_data;
-+extern SSL *ssl_data_con;
-+extern int ssl_data_active_flag;
-+
-+extern char *my_ssl_cert_file;
-+extern char *my_ssl_key_file;
-+extern int ssl_certsok_flag;
-+
-+extern int set_ssl_trace(SSL *s);
-+
-+extern FILE *cin, *cout;
-+
-+#define is_ssl_fd(X,Y) ( (SSL_get_fd((X))==0) || \
-+ (SSL_get_fd((X))==1) || \
-+ (SSL_get_fd((X))==pdata) || \
-+ (SSL_get_fd((X))==(Y)) \
-+ )
-+
-+#define is_ssl_fp(X,Y) ( ( (SSL_get_fd((X))==0) && (fileno((Y))==0) ) || \
-+ ( (SSL_get_fd((X))==1) && (fileno((Y))==1) ) || \
-+ ( (SSL_get_fd((X))==pdata) && \
-+ (fileno((Y))==pdata) ) || \
-+ (SSL_get_fd((X))==fileno(Y)) \
-+ )
-+
-+/* these macros make things much easier to handle ... */
-+
-+#define FFLUSH(X) (ssl_active_flag && (((X)==cin)||((X)==cout)) ? 1 : fflush((X)) )
-+
-+#define GETC(X) (ssl_active_flag && (((X)==cin)||((X)==cout)) ? ssl_getc(ssl_con) : getc((X)) )
-+
-+#define DATAGETC(X) (ssl_data_active_flag && ((fileno(X)==data)||(fileno(X)==pdata)) ? ssl_getc(ssl_data_con) : getc((X)) )
-+#define DATAPUTC(X,Y) (ssl_data_active_flag && ((fileno(Y)==data)||(fileno(Y)==pdata)) ? ssl_putc(ssl_data_con,(X)) : putc((X),(Y)) )
-+#define DATAFLUSH(X) (ssl_data_active_flag && ((fileno(X)==data)||(fileno(X)==pdata)) ? ssl_putc_flush(ssl_data_con) : fflush((X)) )
-+
-+#else
-+
-+#define GETC(X) getc((X))
-+#define DATAGETC(X) getc((X))
-+#define DATAPUTC(X,Y) putc((X),(Y))
-+#define DATAFLUSH(X) fflush((X))
-+#define FFLUSH(X) fflush((X))
-+
-+#endif /* USE_SSL */
-+
-+#endif /* HEADER_SSL_PORT_H */
---- netkit-ftp-0.17/ftp/sslapp.c
-+++ netkit-ftp-0.17+ssl-0.2/ftp/sslapp.c
-@@ -0,0 +1,186 @@
-+/* sslapp.c - ssl application code */
-+
-+/*
-+ * The modifications to support SSLeay were done by Tim Hudson
-+ * tjh@cryptsoft.com
-+ *
-+ * You can do whatever you like with these patches except pretend that
-+ * you wrote them.
-+ *
-+ * Email ssl-users-request@lists.cryptsoft.com to get instructions on how to
-+ * join the mailing list that discusses SSLeay and also these patches.
-+ *
-+ */
-+
-+#ifdef USE_SSL
-+
-+#include "sslapp.h"
-+
-+SSL_CTX *ssl_ctx;
-+SSL *ssl_con;
-+int ssl_debug_flag=0;
-+int ssl_only_flag=0;
-+int ssl_active_flag=0;
-+int ssl_verify_flag=SSL_VERIFY_NONE;
-+int ssl_secure_flag=0;
-+int ssl_certsok_flag=0;
-+int ssl_cert_required=0;
-+int ssl_verbose_flag=0;
-+int ssl_disabled_flag=0;
-+char *ssl_cert_file=NULL;
-+char *ssl_key_file=NULL;
-+char *ssl_cipher_list=NULL;
-+char *ssl_log_file=NULL;
-+
-+/* fwd decl */
-+static void
-+client_info_callback(SSL *s, int where, int ret);
-+
-+int
-+do_ssleay_init(int server)
-+{
-+ char *p;
-+
-+ /* make sure we have somewhere we can log errors to */
-+ if (bio_err==NULL) {
-+ if ((bio_err=BIO_new(BIO_s_file()))!=NULL) {
-+ if (ssl_log_file==NULL)
-+ BIO_set_fp(bio_err,stderr,BIO_NOCLOSE);
-+ else {
-+ if (BIO_write_filename(bio_err,ssl_log_file)<=0) {
-+ /* not a lot we can do */
-+ }
-+ }
-+ }
-+ }
-+
-+ /* rather simple things these days ... the old SSL_LOG and SSL_ERR
-+ * vars are long gone now SSLeay8 has rolled around and we have
-+ * a clean interface for doing things
-+ */
-+ if (ssl_debug_flag)
-+ BIO_printf(bio_err,"SSL_DEBUG_FLAG on\r\n");
-+
-+
-+ /* init things so we will get meaningful error messages
-+ * rather than numbers
-+ */
-+ SSL_load_error_strings();
-+
-+ SSLeay_add_ssl_algorithms();
-+ ssl_ctx=(SSL_CTX *)SSL_CTX_new(SSLv23_method());
-+
-+ /* we may require a temp 512 bit RSA key because of the
-+ * wonderful way export things work ... if so we generate
-+ * one now!
-+ */
-+ if (server) {
-+ if (SSL_CTX_need_tmp_RSA(ssl_ctx)) {
-+ RSA *rsa;
-+
-+ if (ssl_debug_flag)
-+ BIO_printf(bio_err,"Generating temp (512 bit) RSA key ...\r\n");
-+ rsa=RSA_generate_key(512,RSA_F4,NULL,NULL);
-+ if (ssl_debug_flag)
-+ BIO_printf(bio_err,"Generation of temp (512 bit) RSA key done\r\n");
-+
-+ if (!SSL_CTX_set_tmp_rsa(ssl_ctx,rsa)) {
-+ BIO_printf(bio_err,"Failed to assign generated temp RSA key!\r\n");
-+ }
-+ RSA_free(rsa);
-+ if (ssl_debug_flag)
-+ BIO_printf(bio_err,"Assigned temp (512 bit) RSA key\r\n");
-+ }
-+ }
-+
-+ /* also switch on all the interoperability and bug
-+ * workarounds so that we will communicate with people
-+ * that cannot read poorly written specs :-)
-+ */
-+ SSL_CTX_set_options(ssl_ctx,SSL_OP_ALL);
-+
-+ /* the user can set whatever ciphers they want to use */
-+ if (ssl_cipher_list==NULL) {
-+ p=getenv("SSL_CIPHER");
-+ if (p!=NULL)
-+ SSL_CTX_set_cipher_list(ssl_ctx,p);
-+ } else
-+ SSL_CTX_set_cipher_list(ssl_ctx,ssl_cipher_list);
-+
-+ /* for verbose we use the 0.6.x info callback that I got
-+ * eric to finally add into the code :-) --tjh
-+ */
-+ if (ssl_verbose_flag) {
-+ SSL_CTX_set_info_callback(ssl_ctx,client_info_callback);
-+ }
-+
-+ /* Add in any certificates if you want to here ... */
-+ if (ssl_cert_file) {
-+ if (!SSL_CTX_use_certificate_file(ssl_ctx, ssl_cert_file,
-+ X509_FILETYPE_PEM)) {
-+ BIO_printf(bio_err,"Error loading %s: ",ssl_cert_file);
-+ ERR_print_errors(bio_err);
-+ BIO_printf(bio_err,"\r\n");
-+ return(0);
-+ } else {
-+ if (!ssl_key_file)
-+ ssl_key_file = ssl_cert_file;
-+ if (!SSL_CTX_use_RSAPrivateKey_file(ssl_ctx, ssl_key_file,
-+ X509_FILETYPE_PEM)) {
-+ BIO_printf(bio_err,"Error loading %s: ",ssl_key_file);
-+ ERR_print_errors(bio_err);
-+ BIO_printf(bio_err,"\r\n");
-+ return(0);
-+ }
-+ }
-+ }
-+
-+ /* make sure we will find certificates in the standard
-+ * location ... otherwise we don't look anywhere for
-+ * these things which is going to make client certificate
-+ * exchange rather useless :-)
-+ */
-+ SSL_CTX_set_default_verify_paths(ssl_ctx);
-+
-+ /* now create a connection */
-+ ssl_con=(SSL *)SSL_new(ssl_ctx);
-+ SSL_set_verify(ssl_con,ssl_verify_flag,NULL);
-+
-+#if 0
-+ SSL_set_verify(ssl_con,ssl_verify_flag,client_verify_callback);
-+#endif
-+
-+ return(1);
-+}
-+
-+
-+static void
-+client_info_callback(SSL *s, int where, int ret)
-+{
-+ if (where==SSL_CB_CONNECT_LOOP) {
-+ BIO_printf(bio_err,"SSL_connect:%s %s\r\n",
-+ SSL_state_string(s),SSL_state_string_long(s));
-+ } else if (where==SSL_CB_CONNECT_EXIT) {
-+ if (ret == 0) {
-+ BIO_printf(bio_err,"SSL_connect:failed in %s %s\r\n",
-+ SSL_state_string(s),SSL_state_string_long(s));
-+ } else if (ret < 0) {
-+ BIO_printf(bio_err,"SSL_connect:error in %s %s\r\n",
-+ SSL_state_string(s),SSL_state_string_long(s));
-+ }
-+ }
-+}
-+
-+
-+#else /* !USE_SSL */
-+
-+/* something here to stop warnings if we build without SSL support */
-+static int dummy_func()
-+{
-+ int i;
-+
-+ i++;
-+}
-+
-+#endif /* USE_SSL */
-+
---- netkit-ftp-0.17/ftp/sslapp.h
-+++ netkit-ftp-0.17+ssl-0.2/ftp/sslapp.h
-@@ -0,0 +1,63 @@
-+/* sslapp.h - ssl application code */
-+
-+/*
-+ * The modifications to support SSLeay were done by Tim Hudson
-+ * tjh@cryptsoft.com
-+ *
-+ * You can do whatever you like with these patches except pretend that
-+ * you wrote them.
-+ *
-+ * Email ssl-users-request@mincom.oz.au to get instructions on how to
-+ * join the mailing list that discusses SSLeay and also these patches.
-+ *
-+ */
-+
-+#ifdef USE_SSL
-+
-+#include <stdio.h>
-+
-+#include <openssl/crypto.h>
-+
-+#define SSL_set_pref_cipher(c,n) SSL_set_cipher_list(c,n)
-+#define ONELINE_NAME(X) X509_NAME_oneline(X,NULL,0)
-+
-+#define OLDPROTO NOPROTO
-+#define NOPROTO
-+#include <openssl/bio.h>
-+#undef NOPROTO
-+#define NOPROTO OLDPROTO
-+#undef OLDPROTO
-+#include <openssl/buffer.h>
-+
-+#include <openssl/x509.h>
-+#include <openssl/ssl.h>
-+#include <openssl/err.h>
-+
-+extern BIO *bio_err;
-+extern SSL *ssl_con;
-+extern SSL_CTX *ssl_ctx;
-+extern int ssl_debug_flag;
-+extern int ssl_only_flag;
-+extern int ssl_active_flag;
-+extern int ssl_verify_flag;
-+extern int ssl_secure_flag;
-+extern int ssl_verbose_flag;
-+extern int ssl_disabled_flag;
-+extern int ssl_cert_required;
-+extern int ssl_certsok_flag;
-+
-+extern char *ssl_log_file;
-+extern char *ssl_cert_file;
-+extern char *ssl_key_file;
-+extern char *ssl_cipher_list;
-+
-+/* we hide all the initialisation code in a separate file now */
-+extern int do_ssleay_init(int server);
-+
-+/*extern int display_connect_details();
-+extern int server_verify_callback();
-+extern int client_verify_callback();*/
-+
-+#endif /* USE_SSL */
-+
-+
diff --git a/net-ftp/ftp/ftp-0.17-r6.ebuild b/net-ftp/ftp/ftp-0.17-r6.ebuild
deleted file mode 100644
index 917ec6d4d926..000000000000
--- a/net-ftp/ftp/ftp-0.17-r6.ebuild
+++ /dev/null
@@ -1,52 +0,0 @@
-# Copyright 1999-2006 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/net-ftp/ftp/ftp-0.17-r6.ebuild,v 1.10 2006/03/08 06:08:12 vapier Exp $
-
-inherit eutils toolchain-funcs flag-o-matic
-
-MY_P=netkit-${P}
-S=${WORKDIR}/${MY_P}
-DESCRIPTION="Standard Linux FTP client"
-HOMEPAGE="http://www.hcs.harvard.edu/~dholland/computers/netkit.html"
-SRC_URI="ftp://ftp.uk.linux.org/pub/linux/Networking/netkit/${MY_P}.tar.gz"
-
-LICENSE="as-is"
-SLOT="0"
-KEYWORDS="alpha amd64 arm hppa ia64 mips ppc ppc64 s390 sh sparc x86"
-IUSE="ssl ipv6"
-
-RDEPEND=">=sys-libs/ncurses-5.2
- ssl? ( dev-libs/openssl )"
-DEPEND="${RDEPEND}
- >=sys-apps/sed-4"
-
-src_unpack() {
- unpack ${A}
- cd "${S}"
- epatch "${FILESDIR}"/${MY_P}-ssl-0.2.patch
- epatch "${FILESDIR}"/${MY_P}-ipv6.patch #47507
- epatch "${FILESDIR}"/${MY_P}-dont-strcpy-overlapping.patch #104311
- epatch "${FILESDIR}"/${MY_P}-acct.patch #fedora
- epatch "${FILESDIR}"/${MY_P}-locale.patch #fedora
- epatch "${FILESDIR}"/${MY_P}-runique_mget.patch #fedora
- epatch "${FILESDIR}"/${MY_P}-security.patch #fedora
- epatch "${FILESDIR}"/${MY_P}-segv.patch #fedora
- epatch "${FILESDIR}"/${MY_P}-custom-cflags.patch
- append-lfs-flags #101038
-}
-
-src_compile() {
- ./configure \
- --prefix=/usr \
- $(use_enable ssl) \
- $(use_enable ipv6) \
- ${EXTRA_ECONF} \
- || die "configure failed"
- emake CC="$(tc-getCC)" LDFLAGS="${LDFLAGS}" || die "make failed"
-}
-
-src_install() {
- dobin ftp/ftp || die
- doman ftp/ftp.1 ftp/netrc.5
- dodoc ChangeLog README BUGS
-}
diff --git a/net-ftp/ftp/ftp-0.17-r7.ebuild b/net-ftp/ftp/ftp-0.17-r7.ebuild
index c6134925a926..6bf337041637 100644
--- a/net-ftp/ftp/ftp-0.17-r7.ebuild
+++ b/net-ftp/ftp/ftp-0.17-r7.ebuild
@@ -1,6 +1,8 @@
# Copyright 1999-2009 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/net-ftp/ftp/ftp-0.17-r7.ebuild,v 1.8 2009/01/08 06:18:27 vapier Exp $
+# $Header: /var/cvsroot/gentoo-x86/net-ftp/ftp/ftp-0.17-r7.ebuild,v 1.9 2009/09/26 09:13:32 flameeyes Exp $
+
+PATCHLEVEL=1
inherit eutils toolchain-funcs flag-o-matic
@@ -8,7 +10,8 @@ MY_P=netkit-${P}
S=${WORKDIR}/${MY_P}
DESCRIPTION="Standard Linux FTP client"
HOMEPAGE="http://www.hcs.harvard.edu/~dholland/computers/netkit.html"
-SRC_URI="ftp://ftp.uk.linux.org/pub/linux/Networking/netkit/${MY_P}.tar.gz"
+SRC_URI="ftp://ftp.uk.linux.org/pub/linux/Networking/netkit/${MY_P}.tar.gz
+ mirror://gentoo/${MY_P}-patches-${PATCHLEVEL}.tar.bz2"
LICENSE="as-is"
SLOT="0"
@@ -23,18 +26,9 @@ DEPEND="${RDEPEND}
src_unpack() {
unpack ${A}
cd "${S}"
- epatch "${FILESDIR}"/${MY_P}-ssl-0.2.patch
- epatch "${FILESDIR}"/${MY_P}-ipv6.patch #47507
- epatch "${FILESDIR}"/${MY_P}-dont-strcpy-overlapping.patch #104311
- epatch "${FILESDIR}"/${MY_P}-acct.patch #fedora
- epatch "${FILESDIR}"/${MY_P}-locale.patch #fedora
- epatch "${FILESDIR}"/${MY_P}-runique_mget.patch #fedora
- epatch "${FILESDIR}"/${MY_P}-security.patch #fedora
- epatch "${FILESDIR}"/${MY_P}-segv.patch #fedora
- epatch "${FILESDIR}"/${MY_P}-custom-cflags.patch
- epatch "${FILESDIR}"/${MY_P}-sigseg.patch #fedora, #199206
- epatch "${FILESDIR}"/${MY_P}-arg_max.patch #fedora, #226513
- epatch "${FILESDIR}"/${MY_P}-CPPFLAGS.patch #234599
+ EPATCH_DIR="${WORKDIR}"/patch \
+ EPATCH_SUFFIX="patch" \
+ epatch
append-lfs-flags #101038
}