Remove possible nil pointer dereferences.

Results from FetchTxByShaList must each be checked for a nil Err and a
non-nil Tx.  Fix this issue in two places where these conditions were
not being checked.
This commit is contained in:
Josh Rickmar 2013-10-20 12:50:31 -04:00
parent d44d253dff
commit 5bfc9c7eed

View file

@ -859,15 +859,18 @@ func jsonWSRead(walletNotification chan []byte, replychan chan *btcjson.Reply, b
return err
}
txList := s.server.db.FetchTxByShaList(txShaList)
for j := range txList {
for _, txout := range txList[j].Tx.TxOut {
for _, txReply := range txList {
if txReply.Err != nil || txReply.Tx == nil {
continue
}
for _, txout := range txReply.Tx.TxOut {
_, txaddrhash, err := btcscript.ScriptToAddrHash(txout.PkScript)
if err != nil {
return err
}
if !bytes.Equal(addrhash, txaddrhash) {
reply := btcjson.Reply{
Result: txList[j].Sha,
Result: txReply.Sha,
Error: nil,
Id: &message.Id,
}
@ -1253,9 +1256,11 @@ func (s *rpcServer) NotifyNewTxListeners(db btcdb.Db, block *btcutil.Block) {
return
}
txList := db.FetchTxByShaList(txShaList)
for _, tx := range txList {
go s.newBlockNotifyCheckTxIn(tx.Tx.TxIn)
go s.newBlockNotifyCheckTxOut(db, block, tx)
for _, txReply := range txList {
if txReply.Err == nil && txReply.Tx != nil {
go s.newBlockNotifyCheckTxIn(txReply.Tx.TxIn)
go s.newBlockNotifyCheckTxOut(db, block, txReply)
}
}
}