From: Michael Brown Date: Tue, 29 Apr 2025 15:28:03 +0000 (+0100) Subject: [image] Clear recorded replacement image immediately after consuming X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=a69c42dd9fa97024f572b431f6527d359568c23e;p=thirdparty%2Fipxe.git [image] Clear recorded replacement image immediately after consuming If an embedded script uses "chain --replace", the embedded image will retain a reference to the replacement image in perpetuity. Fix by clearing any recorded replacement image immediately in image_exec(), instead of relying upon image_free() to drop the reference. Signed-off-by: Michael Brown --- diff --git a/src/core/image.c b/src/core/image.c index a49ca7e1d..72885ec09 100644 --- a/src/core/image.c +++ b/src/core/image.c @@ -447,6 +447,10 @@ int image_exec ( struct image *image ) { if ( replacement ) assert ( replacement->flags & IMAGE_REGISTERED ); + /* Clear any recorded replacement image */ + image_put ( image->replacement ); + image->replacement = NULL; + err: /* Unregister image if applicable */ if ( image->flags & IMAGE_AUTO_UNREGISTER )