diff options
author | bapt <bapt@FreeBSD.org> | 2012-11-14 10:32:12 +0000 |
---|---|---|
committer | bapt <bapt@FreeBSD.org> | 2012-11-14 10:32:12 +0000 |
commit | 554b1ce9d78d4c2a08a54b32e31b0718a86e3d7b (patch) | |
tree | 6622b8a3a2923d75167b1e4a90d089054f5b8eee /sys/kern | |
parent | b210c68711637745afda58b4b52726ddb91bfbf5 (diff) | |
download | FreeBSD-src-554b1ce9d78d4c2a08a54b32e31b0718a86e3d7b.zip FreeBSD-src-554b1ce9d78d4c2a08a54b32e31b0718a86e3d7b.tar.gz |
return ERANGE if the buffer is too small to contain the login as documented in
the manpage
Reviewed by: cognet, kib
MFC after: 1 month
Diffstat (limited to 'sys/kern')
-rw-r--r-- | sys/kern/kern_prot.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/sys/kern/kern_prot.c b/sys/kern/kern_prot.c index 53af793..951c640 100644 --- a/sys/kern/kern_prot.c +++ b/sys/kern/kern_prot.c @@ -2084,6 +2084,8 @@ sys_getlogin(struct thread *td, struct getlogin_args *uap) bcopy(p->p_session->s_login, login, uap->namelen); SESS_UNLOCK(p->p_session); PROC_UNLOCK(p); + if (strlen(login) + 1 > uap->namelen) + return (ERANGE); error = copyout(login, uap->namebuf, uap->namelen); return(error); } |