Skip to content

Commit 27a8e57

Browse files
authored
Fix: difference_msec epoch leak when start milestone is unset (#12897)
Check both start and end milestones in difference_msec() -- when ms_start was unset but ms_end was set, the delta leaked a large epoch-relative value (~1.7 trillion ms) instead of returning -1.
1 parent 069d5a3 commit 27a8e57

1 file changed

Lines changed: 1 addition & 1 deletion

File tree

include/proxy/Milestones.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ template <class T, size_t entries> class Milestones
6464
int64_t
6565
difference_msec(T ms_start, T ms_end, int64_t missing = -1) const // Return "missing" when Milestone is not set
6666
{
67-
if (this->_milestones[static_cast<size_t>(ms_end)] == 0) {
67+
if (this->_milestones[static_cast<size_t>(ms_start)] == 0 || this->_milestones[static_cast<size_t>(ms_end)] == 0) {
6868
return missing;
6969
}
7070
return ink_hrtime_to_msec(this->_milestones[static_cast<size_t>(ms_end)] - this->_milestones[static_cast<size_t>(ms_start)]);

0 commit comments

Comments
 (0)