From: Ralf Jung Date: Sat, 3 Dec 2022 12:33:00 +0000 (+0100) Subject: interpret: clobber return place when calling function X-Git-Url: https://git.lizzy.rs/?a=commitdiff_plain;h=51ac2af99ffd46cf83760ceef2404dad0ce238a9;p=rust.git interpret: clobber return place when calling function --- diff --git a/compiler/rustc_const_eval/src/interpret/eval_context.rs b/compiler/rustc_const_eval/src/interpret/eval_context.rs index 79450fccfc4..e17d3e516a6 100644 --- a/compiler/rustc_const_eval/src/interpret/eval_context.rs +++ b/compiler/rustc_const_eval/src/interpret/eval_context.rs @@ -676,6 +676,10 @@ pub fn push_stack_frame( return_to_block: StackPopCleanup, ) -> InterpResult<'tcx> { trace!("body: {:#?}", body); + // Clobber previous return place contents, nobody is supposed to be able to see them any more + // This also checks dereferenceable, but not align. We rely on all constructed places being + // sufficiently aligned (in particular we rely on `deref_operand` checking alignment). + self.write_uninit(return_place)?; // first push a stack frame so we have access to the local substs let pre_frame = Frame { body,