[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 <mcb30@ipxe.org>
This commit is contained in:
Michael Brown
2025-04-29 16:28:03 +01:00
parent 9962c0a58f
commit a69c42dd9f

View File

@@ -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 )