fix: overflow arithmetic on frame number comparison

This commit is contained in:
Cassandra Heart 2025-10-06 03:59:51 -05:00
parent 0d08f74031
commit 1f62e5daed
No known key found for this signature in database
GPG Key ID: 371083BFA6C240AA
2 changed files with 3 additions and 1 deletions

View File

@ -499,7 +499,8 @@ func (a *AppTimeReel) findNodeBySelector(selector []byte) *FrameNode {
// evaluateForkChoice evaluates fork choice and updates head if necessary
func (a *AppTimeReel) evaluateForkChoice(newNode *FrameNode) {
if a.head == nil ||
newNode.Frame.Header.FrameNumber-a.head.Frame.Header.FrameNumber > 360 {
(newNode.Frame.Header.FrameNumber > a.head.Frame.Header.FrameNumber &&
newNode.Frame.Header.FrameNumber-a.head.Frame.Header.FrameNumber > 360) {
oldHead := a.head
a.head = newNode
a.sendHeadEvent(newNode, oldHead)

View File

@ -575,6 +575,7 @@ func (g *GlobalTimeReel) findNodeBySelector(selector []byte) *GlobalFrameNode {
// evaluateForkChoice evaluates fork choice and updates head if necessary
func (g *GlobalTimeReel) evaluateForkChoice(newNode *GlobalFrameNode) {
if g.head == nil || (!g.archiveMode &&
newNode.Frame.Header.FrameNumber > g.head.Frame.Header.FrameNumber &&
newNode.Frame.Header.FrameNumber-g.head.Frame.Header.FrameNumber > 360) {
oldHead := g.head
g.head = newNode