Increase max argument length from 32 to 64

上级 a0fa7973
...@@ -436,7 +436,6 @@ int ...@@ -436,7 +436,6 @@ int
sys_exec(const char *upath, userptr<userptr<const char> > uargv) sys_exec(const char *upath, userptr<userptr<const char> > uargv)
{ {
ANON_REGION(__func__, &perfgroup); ANON_REGION(__func__, &perfgroup);
static const int len = 32;
char *argv[MAXARG]; char *argv[MAXARG];
char path[DIRSIZ+1]; char path[DIRSIZ+1];
long r = -1; long r = -1;
...@@ -457,15 +456,15 @@ sys_exec(const char *upath, userptr<userptr<const char> > uargv) ...@@ -457,15 +456,15 @@ sys_exec(const char *upath, userptr<userptr<const char> > uargv)
if(uarg == 0) if(uarg == 0)
break; break;
argv[i] = (char*) kmalloc(len, "execbuf"); argv[i] = (char*) kmalloc(MAXARGLEN, "execbuf");
if (argv[i]==nullptr || fetchstr(argv[i], (char*)uarg, len)<0) if (argv[i]==nullptr || fetchstr(argv[i], (char*)uarg, MAXARGLEN)<0)
goto clean; goto clean;
} }
argv[i] = 0; argv[i] = 0;
r = exec(path, argv, &ascope); r = exec(path, argv, &ascope);
clean: clean:
for (i=i-i; i >= 0; i--) for (i=i-i; i >= 0; i--)
kmfree(argv[i], len); kmfree(argv[i], MAXARGLEN);
return r; return r;
} }
......
...@@ -8,6 +8,7 @@ ...@@ -8,6 +8,7 @@
#define NDEV 10 // maximum major device number #define NDEV 10 // maximum major device number
#define ROOTDEV 1 // device number of file system root disk #define ROOTDEV 1 // device number of file system root disk
#define MAXARG 32 // max exec arguments #define MAXARG 32 // max exec arguments
#define MAXARGLEN 64 // max exec argument length
#define MAXNAME 16 // max string names #define MAXNAME 16 // max string names
#define NEPOCH 4 #define NEPOCH 4
#define CACHELINE 64 // cache line size #define CACHELINE 64 // cache line size
......
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论