wire: check TXID length before creating outpoint

This commit is contained in:
Jonathan Harvey-Buschel 2024-08-14 16:29:08 -04:00
parent 97400aa23e
commit ee7cf5e564
No known key found for this signature in database
GPG key ID: D55307DC71F37212
2 changed files with 14 additions and 0 deletions

View file

@ -229,6 +229,11 @@ func NewOutPointFromString(outpoint string) (*OutPoint, error) {
if len(parts) != 2 {
return nil, errors.New("outpoint should be of the form txid:index")
}
if len(parts[0]) != chainhash.MaxHashStringSize {
return nil, errors.New("outpoint txid should be 64 hex chars")
}
hash, err := chainhash.NewHashFromStr(parts[0])
if err != nil {
return nil, err

View file

@ -849,6 +849,15 @@ func TestTxOutPointFromString(t *testing.T) {
},
err: false,
},
{
name: "normal outpoint 2 with 31-byte txid",
input: "c7762a68ff164352bd31fd95fa875204e811c09acef40ba781787eb28e3b55:42",
result: &OutPoint{
Hash: hashFromStr("c7762a68ff164352bd31fd95fa875204e811c09acef40ba781787eb28e3b55"),
Index: 42,
},
err: true,
},
{
name: "bad string",
input: "not_outpoint_not_outpoint_not_outpoint",