You really don't get it.

+                       unveil_list = calloc(2 * argc, sizeof(char*));

Imagine argc is 10000.

+                       for (i = 2 * argc - 2; i >= 0; i -= 2) {
+                               if (unveil_list[i]) {
+                                       if (unveil(unveil_list[i], "r") == -1)
...
+                               if (unveil_list[i | 1]) {
+                                       if (unveil(unveil_list[i | 1], "cw") == 
-1)
+                                               err(1, "unveil");
...


     E2BIG              The addition of path would exceed the per-process
                        limit for unveiled paths.


Great, under fairly normal usage ftp aborts with an error.  

Since you start with up to 8 others, it looks like this limit is easily
hit at around 120 filenames.

So ftp simply fails to perform the task it is designed for.

Your proposal is to break the command.

Reply via email to