Skip to content

Commit 0000a1f

Browse files
committed
fix: add nil check for ObjectInfo in P2P approval handlers to prevent panic
1 parent 00db61c commit 0000a1f

2 files changed

Lines changed: 13 additions & 0 deletions

File tree

base/types/gfsptask/approval.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -477,6 +477,9 @@ func (m *GfSpReplicatePieceApprovalTask) GetSignBytes() []byte {
477477
}
478478

479479
func (m *GfSpReplicatePieceApprovalTask) Key() coretask.TKey {
480+
if m.GetObjectInfo() == nil || m.GetObjectInfo().Id.IsNil() {
481+
return GfSpReplicatePieceApprovalTaskKey("", "", "")
482+
}
480483
return GfSpReplicatePieceApprovalTaskKey(
481484
m.GetObjectInfo().GetBucketName(),
482485
m.GetObjectInfo().GetObjectName(),

modular/p2p/p2pnode/approval.go

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,11 @@ func (a *ApprovalProtocol) onGetApprovalRequest(s network.Stream) {
111111
log.Errorw("failed to unmarshal replicate piece approval request msg", "error", err)
112112
return
113113
}
114+
if req.GetObjectInfo() == nil || req.GetObjectInfo().Id.IsNil() {
115+
log.Warnw("ignore invalid replicate piece approval request: missing object info",
116+
"remote", s.Conn().RemotePeer())
117+
return
118+
}
114119
ctx := log.WithValue(context.Background(), log.CtxKeyTask, req.Key().String())
115120
log.Debugf("%s received replicate piece approval request from %s, object_id: %d",
116121
s.Conn().LocalPeer(), s.Conn().RemotePeer(), req.GetObjectInfo().Id.Uint64())
@@ -171,6 +176,11 @@ func (a *ApprovalProtocol) onGetApprovalResponse(s network.Stream) {
171176
log.Errorw("failed to unmarshal replicate piece approval response msg", "error", err)
172177
return
173178
}
179+
if resp.GetObjectInfo() == nil || resp.GetObjectInfo().Id.IsNil() {
180+
log.Warnw("ignore invalid replicate piece approval response: missing object info",
181+
"remote", s.Conn().RemotePeer())
182+
return
183+
}
174184
ctx := log.WithValue(context.Background(), log.CtxKeyTask, resp.Key().String())
175185
log.Debugf("%s received approval response from %s, object_id: %d",
176186
s.Conn().LocalPeer(), s.Conn().RemotePeer(), resp.GetObjectInfo().Id.Uint64())

0 commit comments

Comments
 (0)