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)