From 8ee1efd941488928a3900633d2c39b7100070b82 Mon Sep 17 00:00:00 2001 From: Martijn Dekker Date: Sat, 23 Nov 2024 23:57:34 +0000 Subject: [PATCH] mamake: fix UB in legacy mode 'prev' command (re: f5d5318a) Building old commits that use legacy mode Mamfiles was failing due to a bug in the 'prev' command. In mamake.c on line 2392, the pointer returned by the legacy dummt 'rule' call must be assigned to q. It wasn't, so the update_allprev call on line 2422 had undefined behaviour as it passes q, which is dereferenced on line 2010. --- src/cmd/INIT/mamake.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/cmd/INIT/mamake.c b/src/cmd/INIT/mamake.c index b56862fe9c1c..f13a9742e681 100644 --- a/src/cmd/INIT/mamake.c +++ b/src/cmd/INIT/mamake.c @@ -28,7 +28,7 @@ * coded for portability */ -#define RELEASE_DATE "2024-11-01" +#define RELEASE_DATE "2024-11-23" static char id[] = "\n@(#)$Id: mamake (ksh 93u+m) " RELEASE_DATE " $\0\n"; #if _PACKAGE_ast @@ -2389,7 +2389,7 @@ static void make(Rule_t *r, Makestate_t *parentstate) const int makp = (u[0] == 'm'); q = getval(state.rules, t); if (!q && !makp && !state.strict) - rule(t); /* for backward compat */ + q = rule(t); /* for backward compat */ else if (!q && (makp || state.strict < 4)) { /* declare a simple source file prerequisite */