Core Contracts

Regnum Aurum Acquisition Corp
HardhatReal World AssetsNFT
77,280 USDC
View results
Submission Details
Severity: medium
Valid

`TimeWeightedAverage::self.totalDuration` is incorrectly initialized, leading to potential incorrect calculations.

Summary

TimeWeightedAverage::self.totalDuration does not require initialization as it is a cumulative value derived through accumulation. The current implementation erroneously initializes it to duration, resulting in an incorrect final value for TimeWeightedAverage::self.totalDuration.

Vulnerability Details

function createPeriod(
Period storage self,
uint256 startTime,
uint256 duration,
uint256 initialValue,
uint256 weight
) internal {
if (self.startTime != 0 && startTime < self.startTime + self.totalDuration) {
revert PeriodNotElapsed();
}
if (duration == 0) revert ZeroDuration();
if (weight == 0) revert ZeroWeight();
self.startTime = startTime;
self.endTime = startTime + duration;
self.lastUpdateTime = startTime;
self.value = initialValue;
self.weightedSum = 0;
self.totalDuration = duration; <==@found
self.weight = weight;
emit PeriodCreated(startTime, duration, initialValue);
}

Impact

Potential incorrect calculations.

Tools Used

  • Manual Review

Recommendations

  • Remove the initialization of self.totalDuration.

Updates

Lead Judging Commences

inallhonesty Lead Judge 4 months ago
Submission Judgement Published
Validated
Assigned finding tags:

TimeWeightedAverage::createPeriod incorrectly initializes totalDuration to period duration instead of zero, causing double-counting and inflated duration accumulation

inallhonesty Lead Judge 4 months ago
Submission Judgement Published
Validated
Assigned finding tags:

TimeWeightedAverage::createPeriod incorrectly initializes totalDuration to period duration instead of zero, causing double-counting and inflated duration accumulation

Support

FAQs

Can't find an answer? Chat with us on Discord, Twitter or Linkedin.