diff options
| author | Mark Johnston <markj@FreeBSD.org> | 2023-12-26 01:39:21 +0000 |
|---|---|---|
| committer | Mark Johnston <markj@FreeBSD.org> | 2024-01-02 01:12:44 +0000 |
| commit | 6b067be54eda23929e4ffaf8402471151b101856 (patch) | |
| tree | 422400c6ff06ad29c158accaa7345e46cc43269d | |
| parent | f5a139a0376740aa3a80e2c626846020e7643c14 (diff) | |
compat_freebsd4: Check for errors from subyte() in freebsd4_uname()
This is in preparation for adding a __result_use_check annotation to
copyin() and related functions.
Reviewed by: imp, kib, jhb
MFC after: 1 week
Differential Revision: https://reviews.freebsd.org/D43099
(cherry picked from commit 4f35450ce52a7b141e7ae8d37fa257b5f8971dda)
| -rw-r--r-- | sys/kern/kern_xxx.c | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/sys/kern/kern_xxx.c b/sys/kern/kern_xxx.c index 99fe9e6e71c9..8674dbf61361 100644 --- a/sys/kern/kern_xxx.c +++ b/sys/kern/kern_xxx.c @@ -334,7 +334,9 @@ freebsd4_uname(struct thread *td, struct freebsd4_uname_args *uap) 1, 0, 0, 0, 0); if (error) return (error); - subyte( uap->name->sysname + sizeof(uap->name->sysname) - 1, 0); + error = subyte(uap->name->sysname + sizeof(uap->name->sysname) - 1, 0); + if (error) + return (EFAULT); name[1] = KERN_HOSTNAME; len = sizeof uap->name->nodename; @@ -342,7 +344,9 @@ freebsd4_uname(struct thread *td, struct freebsd4_uname_args *uap) 1, 0, 0, 0, 0); if (error) return (error); - subyte( uap->name->nodename + sizeof(uap->name->nodename) - 1, 0); + error = subyte(uap->name->nodename + sizeof(uap->name->nodename) - 1, 0); + if (error) + return (EFAULT); name[1] = KERN_OSRELEASE; len = sizeof uap->name->release; @@ -350,7 +354,9 @@ freebsd4_uname(struct thread *td, struct freebsd4_uname_args *uap) 1, 0, 0, 0, 0); if (error) return (error); - subyte( uap->name->release + sizeof(uap->name->release) - 1, 0); + error = subyte(uap->name->release + sizeof(uap->name->release) - 1, 0); + if (error) + return (EFAULT); /* name = KERN_VERSION; @@ -383,7 +389,9 @@ freebsd4_uname(struct thread *td, struct freebsd4_uname_args *uap) 1, 0, 0, 0, 0); if (error) return (error); - subyte( uap->name->machine + sizeof(uap->name->machine) - 1, 0); + error = subyte(uap->name->machine + sizeof(uap->name->machine) - 1, 0); + if (error) + return (EFAULT); return (0); } |
