Merge pull request #2233 from jharveyb/txid_string_check

wire: check TXID length before creating outpoint
This commit is contained in:
Olaoluwa Osuntokun 2024-08-15 16:03:51 -07:00 committed by GitHub
commit 029e5a3cb5
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
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",