From 5b7e82f90e23e348d11f9256fe673d066305fc31 Mon Sep 17 00:00:00 2001 From: Jui-Nan Yen Date: Thu, 28 Jul 2022 18:12:07 +0800 Subject: [PATCH] Fix the code snippet of the initializer modifier --- .../smart-contract/proxy-contract/audius.md | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/vulnerabilities-cases/smart-contract/proxy-contract/audius.md b/vulnerabilities-cases/smart-contract/proxy-contract/audius.md index adca600..16b037d 100644 --- a/vulnerabilities-cases/smart-contract/proxy-contract/audius.md +++ b/vulnerabilities-cases/smart-contract/proxy-contract/audius.md @@ -273,19 +273,18 @@ With `initializing == true`, the modifier always allow initialisation. ``` modifier initializer() { - bool isTopLevelCall = !_initializing; - require( - (isTopLevelCall && _initialized < 1) || (!Address.isContract(address(this)) && _initialized == 1), - "Initializable: contract is already initialized" - ); - _initialized = 1; + require(initializing || isConstructor() || !initialized, "Contract instance has already been initialized"); + + bool isTopLevelCall = !initializing; if (isTopLevelCall) { - _initializing = true; + initializing = true; + initialized = true; } + _; + if (isTopLevelCall) { - _initializing = false; - emit Initialized(1); + initializing = false; } } ```