git: 8e8ddb05d071 - main - execve: Fix an operator precedence bug

From: Mark Johnston <markj_at_FreeBSD.org>
Date: Wed, 29 Apr 2026 14:47:20 UTC
The branch main has been updated by markj:

URL: https://cgit.FreeBSD.org/src/commit/?id=8e8ddb05d07142e95cf84e32bf93b9ecb3f90283

commit 8e8ddb05d07142e95cf84e32bf93b9ecb3f90283
Author:     Mark Johnston <markj@FreeBSD.org>
AuthorDate: 2026-04-22 17:58:35 +0000
Commit:     Mark Johnston <markj@FreeBSD.org>
CommitDate: 2026-04-29 14:39:27 +0000

    execve: Fix an operator precedence bug
    
    The buggy version allowed userspace to overflow the copy into adjacent
    execve KVA regions, which enables, among other things, injecting
    environment variables into privileged processes.
    
    Approved by:    so
    Security:       FreeBSD-SA-26:13.exec
    Security:       CVE-2026-7270
    Reported by:    Ryan Austin of Calif.io
    Reviewed by:    brooks, kib
    Fixes:          f373437a01a3 ("Add helper functions to copy strings into struct image_args.")
    Differential Revision:  https://reviews.freebsd.org/D56665
---
 sys/kern/kern_exec.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/sys/kern/kern_exec.c b/sys/kern/kern_exec.c
index df5a1c044643..8e3b41170cab 100644
--- a/sys/kern/kern_exec.c
+++ b/sys/kern/kern_exec.c
@@ -1650,7 +1650,7 @@ exec_args_adjust_args(struct image_args *args, size_t consume, ssize_t extend)
 	if (args->stringspace < offset)
 		return (E2BIG);
 	memmove(args->begin_argv + extend, args->begin_argv + consume,
-	    args->endp - args->begin_argv + consume);
+	    args->endp - (args->begin_argv + consume));
 	if (args->envc > 0)
 		args->begin_envv += offset;
 	args->endp += offset;