ftpd - Remove the use of GLOB_LIMIT
authorMatthew Dillon <dillon@apollo.backplane.com>
Thu, 21 Apr 2011 11:11:09 +0000 (04:11 -0700)
committerMatthew Dillon <dillon@apollo.backplane.com>
Thu, 21 Apr 2011 11:11:09 +0000 (04:11 -0700)
* The problem with this flag is that it currently arbitrarily limits
  stat and other operations and completely breaks anonymous ftp on
  directories with large numbers of files (like packages/All).

  Remove its use for now.

libexec/ftpd/ftpcmd.y
libexec/ftpd/ftpd.c
libexec/ftpd/popen.c

index 14e895d..efecebb 100644 (file)
@@ -1753,7 +1753,7 @@ expglob(char *s)
        glob_t gl;
 
        memset(&gl, 0, sizeof(gl));
-       flags |= GLOB_LIMIT;
+       /*flags |= GLOB_LIMIT;*/
        gl.gl_matchc = MAXGLOBARGS;
        if (glob(s, flags, NULL, &gl) == 0 && gl.gl_pathc != 0) {
                for (pp = gl.gl_pathv, p = NULL, n = 0; *pp; pp++)
index cefdd99..3bf820f 100644 (file)
@@ -3142,7 +3142,7 @@ send_file_list(char *whichf)
 
                memset(&gl, 0, sizeof(gl));
                gl.gl_matchc = MAXGLOBARGS;
-               flags |= GLOB_LIMIT;
+               /*flags |= GLOB_LIMIT;*/
                freeglob = 1;
                if (glob(whichf, flags, 0, &gl)) {
                        reply(550, "No matching files found.");
index 7f0b1af..4c2f3c3 100644 (file)
@@ -102,7 +102,7 @@ ftpd_popen(char *program, char *type)
 
                memset(&gl, 0, sizeof(gl));
                gl.gl_matchc = MAXGLOBARGS;
-               flags |= GLOB_LIMIT;
+               /*flags |= GLOB_LIMIT;*/
                if (glob(argv[argc], flags, NULL, &gl))
                        gargv[gargc++] = strdup(argv[argc]);
                else