diff --git a/kern/kern_module.c b/kern/kern_module.c --- a/kern/kern_module.c +++ b/kern/kern_module.c @@ -345,11 +345,14 @@ goto out; } - namelen = strlen(mod->name) + 1; - if (namelen > MAXMODNAME) - namelen = MAXMODNAME; + namelen = strlen(mod->name); + if (namelen >= MAXMODNAME) + namelen = MAXMODNAME - 1; if ((error = copyout(mod->name, &stat->name[0], namelen)) != 0) goto out; + /* Ensure NUL termination. */ + { char zero = 0; error = copyout(&zero, &stat->name[namelen], 1); } + goto out; if ((error = copyout(&mod->refs, &stat->refs, sizeof(int))) != 0) goto out;