The only limit was in the command parser. Tested with FIleZilla Client and wget -c ftp:
Index: ftpcmd.y =================================================================== RCS file: /cvs/src/libexec/ftpd/ftpcmd.y,v retrieving revision 1.55 diff -u -p -u -r1.55 ftpcmd.y --- ftpcmd.y 27 Nov 2013 21:25:25 -0000 1.55 +++ ftpcmd.y 27 Dec 2013 11:47:43 -0000 @@ -96,7 +96,7 @@ char *fromname; %} %union { - int i; + off_t i; char *s; } @@ -663,7 +663,7 @@ rcmd free(fromname); fromname = NULL; } - restart_point = $4; /* XXX $4 is only "int" */ + restart_point = $4; reply(350, "Restarting at %qd. %s", restart_point, "Send STORE or RETRIEVE to initiate transfer."); @@ -1318,7 +1318,7 @@ yylex() ; c = cbuf[cpos]; cbuf[cpos] = '\0'; - yylval.i = atoi(cp); + yylval.i = atoll(cp); cbuf[cpos] = c; state = STR1; return (NUMBER); @@ -1333,7 +1333,7 @@ yylex() ; c = cbuf[cpos]; cbuf[cpos] = '\0'; - yylval.i = atoi(cp); + yylval.i = atoll(cp); cbuf[cpos] = c; return (NUMBER); }