From 58ab889669d004f1ee194afc2c3ecf5589735266 Mon Sep 17 00:00:00 2001 From: dv Date: Sun, 4 Feb 2024 14:57:00 +0000 Subject: [PATCH] Remove dead code and fix null deref if vm is not found. Return early if no vm is found in vmd(8)'s primary vm fork/exec function, preventing null deref in the 'fail' section. Also remove inner return from the parent routine to prevent unreachable code. Found by smatch, reported by and ok jsg@. --- usr.sbin/vmd/vmm.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/usr.sbin/vmd/vmm.c b/usr.sbin/vmd/vmm.c index 917c7a22d1a..1f7678fbaff 100644 --- a/usr.sbin/vmd/vmm.c +++ b/usr.sbin/vmd/vmm.c @@ -1,4 +1,4 @@ -/* $OpenBSD: vmm.c,v 1.117 2024/01/18 14:49:59 claudio Exp $ */ +/* $OpenBSD: vmm.c,v 1.118 2024/02/04 14:57:00 dv Exp $ */ /* * Copyright (c) 2015 Mike Larkin @@ -650,8 +650,7 @@ vmm_start_vm(struct imsg *imsg, uint32_t *id, pid_t *pid) if ((vm = vm_getbyvmid(imsg->hdr.peerid)) == NULL) { log_warnx("%s: can't find vm", __func__); - ret = ENOENT; - goto err; + return (ENOENT); } vcp = &vm->vm_params.vmc_params; @@ -747,7 +746,6 @@ vmm_start_vm(struct imsg *imsg, uint32_t *id, pid_t *pid) if (vmm_pipe(vm, fds[0], vmm_dispatch_vm) == -1) fatal("setup vm pipe"); - return (0); } else { /* Child. Create a new session. */ if (setsid() == -1) -- 2.20.1