Skip to content

Commit 0676ae8

Browse files
committed
asset: add nil pointer dereference guards
Adds checks to prevent nil pointer dereferences, improving code robustness and avoiding potential uncontrolled errors.
1 parent 614a4f7 commit 0676ae8

File tree

2 files changed

+13
-0
lines changed

2 files changed

+13
-0
lines changed

asset/asset.go

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -737,6 +737,11 @@ type Witness struct {
737737
// the witness should be encoded or not.
738738
func (w *Witness) encodeRecords(encodeType EncodeType) []tlv.Record {
739739
var records []tlv.Record
740+
741+
if w == nil {
742+
return records
743+
}
744+
740745
if w.PrevID != nil {
741746
records = append(records, NewWitnessPrevIDRecord(&w.PrevID))
742747
}
@@ -771,6 +776,10 @@ func (w *Witness) DecodeRecords() []tlv.Record {
771776

772777
// Encode encodes an asset witness into a TLV stream.
773778
func (w *Witness) Encode(writer io.Writer) error {
779+
if w == nil {
780+
return fmt.Errorf("cannot encode nil witness")
781+
}
782+
774783
stream, err := tlv.NewStream(w.EncodeRecords()...)
775784
if err != nil {
776785
return err

asset/records.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -287,6 +287,10 @@ func NewWitnessPrevIDRecord(prevID **PrevID) tlv.Record {
287287

288288
func NewWitnessTxWitnessRecord(witness *wire.TxWitness) tlv.Record {
289289
recordSize := func() uint64 {
290+
if witness == nil {
291+
return 0
292+
}
293+
290294
return uint64((*witness).SerializeSize())
291295
}
292296
return tlv.MakeDynamicRecord(

0 commit comments

Comments
 (0)