diff --git a/src/hush_nSPV_fullnode.h b/src/hush_nSPV_fullnode.h index 0bc2368a8..53817725c 100644 --- a/src/hush_nSPV_fullnode.h +++ b/src/hush_nSPV_fullnode.h @@ -324,7 +324,7 @@ int32_t NSPV_mempoolfuncs(bits256 *satoshisp,int32_t *vindexp,std::vector= 2 && vopret[0] == evalcode && vopret[1] == func ) { txids.push_back(hash); num++; @@ -657,7 +657,7 @@ void hush_nSPVreq(CNode *pfrom,std::vector request) // received a reque if ( timestamp > pfrom->prevtimes[ind] ) { struct NSPV_utxosresp U; - if ( len < 64+5 && request[1] < 64 && (request[1] == len-3 || request[1] == len-7 || request[1] == len-11) ) + if ( len >= 2 && len < 64+5 && request[1] < 64 && (request[1] == len-3 || request[1] == len-7 || request[1] == len-11) ) { int32_t skipcount = 0; char coinaddr[64]; uint8_t filter; uint8_t isCC = 0; memcpy(coinaddr,&request[2],request[1]); // request[1] < 64 bounds the copy + the terminator write @@ -697,7 +697,7 @@ void hush_nSPVreq(CNode *pfrom,std::vector request) // received a reque if ( timestamp > pfrom->prevtimes[ind] ) { struct NSPV_txidsresp T; - if ( len < 64+5 && request[1] < 64 && (request[1] == len-3 || request[1] == len-7 || request[1] == len-11) ) + if ( len >= 2 && len < 64+5 && request[1] < 64 && (request[1] == len-3 || request[1] == len-7 || request[1] == len-11) ) { int32_t skipcount = 0; char coinaddr[64]; uint32_t filter; uint8_t isCC = 0; memcpy(coinaddr,&request[2],request[1]); // request[1] < 64 bounds the copy + the terminator write @@ -730,7 +730,7 @@ void hush_nSPVreq(CNode *pfrom,std::vector request) // received a reque } NSPV_txidsresp_purge(&T); } - } else fprintf(stderr,"len.%d req1.%d\n",len,request[1]); + } else fprintf(stderr,"len.%d\n",len); } } else if ( request[0] == NSPV_MEMPOOL ) @@ -767,7 +767,7 @@ void hush_nSPVreq(CNode *pfrom,std::vector request) // received a reque NSPV_mempoolresp_purge(&M); } } - } else fprintf(stderr,"len.%d req1.%d\n",len,request[1]); + } else fprintf(stderr,"len.%d\n",len); } } else if ( request[0] == NSPV_NTZS )