summaryrefslogtreecommitdiffstats
path: root/source/n/netkit-ftp/patches/22-netkit-ftp-0.17-arg_max.patch
diff options
context:
space:
mode:
Diffstat (limited to 'source/n/netkit-ftp/patches/22-netkit-ftp-0.17-arg_max.patch')
-rw-r--r--source/n/netkit-ftp/patches/22-netkit-ftp-0.17-arg_max.patch55
1 files changed, 55 insertions, 0 deletions
diff --git a/source/n/netkit-ftp/patches/22-netkit-ftp-0.17-arg_max.patch b/source/n/netkit-ftp/patches/22-netkit-ftp-0.17-arg_max.patch
new file mode 100644
index 000000000..08a88bb54
--- /dev/null
+++ b/source/n/netkit-ftp/patches/22-netkit-ftp-0.17-arg_max.patch
@@ -0,0 +1,55 @@
+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