Before following the instructions below, make sure that 025_glob.patch
has been applied fully.

Apply by doing:
	cd /usr/src
	patch -p0 < 026_globlimit.patch
	cd libexec/ftpd
	make obj
	make depend
	make
	make install


Index: libexec/ftpd/ftpd.c
===================================================================
RCS file: /cvs/src/libexec/ftpd/ftpd.c,v
retrieving revision 1.84
diff -u -r1.84 ftpd.c
--- libexec/ftpd/ftpd.c	2000/12/04 10:49:31	1.84
+++ libexec/ftpd/ftpd.c	2001/04/23 21:23:50
@@ -2560,11 +2560,11 @@
 	glob_t gl;
 
 	if (strpbrk(whichf, "~{[*?") != NULL) {
-		int flags = GLOB_BRACE|GLOB_NOCHECK|GLOB_QUOTE|GLOB_TILDE;
-
 		memset(&gl, 0, sizeof(gl));
 		freeglob = 1;
-		if (glob(whichf, flags, 0, &gl)) {
+		if (glob(whichf,
+		    GLOB_BRACE|GLOB_NOCHECK|GLOB_QUOTE|GLOB_TILDE|GLOB_LIMIT,
+		    0, &gl)) {
 			reply(550, "not found");
 			goto out;
 		} else if (gl.gl_pathc == 0) {
Index: libexec/ftpd/popen.c
===================================================================
RCS file: /cvs/src/libexec/ftpd/popen.c,v
retrieving revision 1.11
diff -u -r1.11 popen.c
--- libexec/ftpd/popen.c	1999/12/08 13:15:21	1.11
+++ libexec/ftpd/popen.c	2001/04/23 21:23:50
@@ -104,10 +104,11 @@
 	gargv[0] = argv[0];
 	for (gargc = argc = 1; argv[argc]; argc++) {
 		glob_t gl;
-		int flags = GLOB_BRACE|GLOB_NOCHECK|GLOB_QUOTE|GLOB_TILDE;
 
 		memset(&gl, 0, sizeof(gl));
-		if (glob(argv[argc], flags, NULL, &gl)) {
+		if (glob(argv[argc],
+		    GLOB_BRACE|GLOB_NOCHECK|GLOB_QUOTE|GLOB_TILDE|GLOB_LIMIT,
+		    NULL, &gl)) {
 			if (gargc < MAX_GARGV-1) {
 				gargv[gargc++] = strdup(argv[argc]);
 				if (gargv[gargc -1] == NULL)

