From 9b5ff0f833c6fbb81a268da73e7bbce7d7810e63 Mon Sep 17 00:00:00 2001 From: Martijn Dekker Date: Wed, 27 Jan 2021 05:45:51 +0000 Subject: [PATCH] Fix leak in optimize processing This applies a patch from OpenSUSE. Source: https://build.opensuse.org/package/view_file/shells/ksh/ksh93-optimizeleak.dif | Tue Jul 5 14:49:03 CEST 2016 - mls@suse.de | | - fix leak in optimize processing [bnc#982423] | new patch: ksh93-optimizeleak.dif Unfortunately the bug report is not currently public: https://bugzilla.opensuse.org/show_bug.cgi?id=982423 but this one seems sensible enough and is in production use, so I'll take it on faith. --- src/cmd/ksh93/sh/name.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/cmd/ksh93/sh/name.c b/src/cmd/ksh93/sh/name.c index a00fc66d07a5..81b1fda19f5a 100644 --- a/src/cmd/ksh93/sh/name.c +++ b/src/cmd/ksh93/sh/name.c @@ -2646,6 +2646,13 @@ void nv_optimize(Namval_t *np) } if((xp= (struct optimize*)fp) && xp->ptr==shp->argaddr) return; + if(xp && xp->next) + { + register struct optimize *xpn; + for(xpn = xp->next; xpn; xpn = xpn->next) + if(xpn->ptr == shp->argaddr && xpn->np == np) + return; + } if(op = opt_free) opt_free = op->next; else