mirror of
				https://git.wownero.com/wownero/wownero.git
				synced 2024-08-15 01:03:23 +00:00 
			
		
		
		
	Merge pull request #9080
47d8899 Fix missing checks for IsObject in ZMQ jsonrpc reading (Lee Clagett)
			
			
This commit is contained in:
		
						commit
						8eab181fe1
					
				
					 2 changed files with 208 additions and 0 deletions
				
			
		| 
						 | 
					@ -48,6 +48,11 @@ void GetHeight::Response::doToJson(rapidjson::Writer<epee::byte_stream>& dest) c
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void GetHeight::Response::fromJson(const rapidjson::Value& val)
 | 
					void GetHeight::Response::fromJson(const rapidjson::Value& val)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
					  if (!val.IsObject())
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    throw json::WRONG_TYPE("json object");
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  GET_FROM_JSON_OBJECT(val, height, height);
 | 
					  GET_FROM_JSON_OBJECT(val, height, height);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -61,6 +66,11 @@ void GetBlocksFast::Request::doToJson(rapidjson::Writer<epee::byte_stream>& dest
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void GetBlocksFast::Request::fromJson(const rapidjson::Value& val)
 | 
					void GetBlocksFast::Request::fromJson(const rapidjson::Value& val)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
					  if (!val.IsObject())
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    throw json::WRONG_TYPE("json object");
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  GET_FROM_JSON_OBJECT(val, block_ids, block_ids);
 | 
					  GET_FROM_JSON_OBJECT(val, block_ids, block_ids);
 | 
				
			||||||
  GET_FROM_JSON_OBJECT(val, start_height, start_height);
 | 
					  GET_FROM_JSON_OBJECT(val, start_height, start_height);
 | 
				
			||||||
  GET_FROM_JSON_OBJECT(val, prune, prune);
 | 
					  GET_FROM_JSON_OBJECT(val, prune, prune);
 | 
				
			||||||
| 
						 | 
					@ -76,6 +86,11 @@ void GetBlocksFast::Response::doToJson(rapidjson::Writer<epee::byte_stream>& des
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void GetBlocksFast::Response::fromJson(const rapidjson::Value& val)
 | 
					void GetBlocksFast::Response::fromJson(const rapidjson::Value& val)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
					  if (!val.IsObject())
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    throw json::WRONG_TYPE("json object");
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  GET_FROM_JSON_OBJECT(val, blocks, blocks);
 | 
					  GET_FROM_JSON_OBJECT(val, blocks, blocks);
 | 
				
			||||||
  GET_FROM_JSON_OBJECT(val, start_height, start_height);
 | 
					  GET_FROM_JSON_OBJECT(val, start_height, start_height);
 | 
				
			||||||
  GET_FROM_JSON_OBJECT(val, current_height, current_height);
 | 
					  GET_FROM_JSON_OBJECT(val, current_height, current_height);
 | 
				
			||||||
| 
						 | 
					@ -91,6 +106,11 @@ void GetHashesFast::Request::doToJson(rapidjson::Writer<epee::byte_stream>& dest
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void GetHashesFast::Request::fromJson(const rapidjson::Value& val)
 | 
					void GetHashesFast::Request::fromJson(const rapidjson::Value& val)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
					  if (!val.IsObject())
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    throw json::WRONG_TYPE("json object");
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  GET_FROM_JSON_OBJECT(val, known_hashes, known_hashes);
 | 
					  GET_FROM_JSON_OBJECT(val, known_hashes, known_hashes);
 | 
				
			||||||
  GET_FROM_JSON_OBJECT(val, start_height, start_height);
 | 
					  GET_FROM_JSON_OBJECT(val, start_height, start_height);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -100,10 +120,16 @@ void GetHashesFast::Response::doToJson(rapidjson::Writer<epee::byte_stream>& des
 | 
				
			||||||
  INSERT_INTO_JSON_OBJECT(dest, hashes, hashes);
 | 
					  INSERT_INTO_JSON_OBJECT(dest, hashes, hashes);
 | 
				
			||||||
  INSERT_INTO_JSON_OBJECT(dest, start_height, start_height);
 | 
					  INSERT_INTO_JSON_OBJECT(dest, start_height, start_height);
 | 
				
			||||||
  INSERT_INTO_JSON_OBJECT(dest, current_height, current_height);
 | 
					  INSERT_INTO_JSON_OBJECT(dest, current_height, current_height);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void GetHashesFast::Response::fromJson(const rapidjson::Value& val)
 | 
					void GetHashesFast::Response::fromJson(const rapidjson::Value& val)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
					  if (!val.IsObject())
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    throw json::WRONG_TYPE("json object");
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  GET_FROM_JSON_OBJECT(val, hashes, hashes);
 | 
					  GET_FROM_JSON_OBJECT(val, hashes, hashes);
 | 
				
			||||||
  GET_FROM_JSON_OBJECT(val, start_height, start_height);
 | 
					  GET_FROM_JSON_OBJECT(val, start_height, start_height);
 | 
				
			||||||
  GET_FROM_JSON_OBJECT(val, current_height, current_height);
 | 
					  GET_FROM_JSON_OBJECT(val, current_height, current_height);
 | 
				
			||||||
| 
						 | 
					@ -117,6 +143,11 @@ void GetTransactions::Request::doToJson(rapidjson::Writer<epee::byte_stream>& de
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void GetTransactions::Request::fromJson(const rapidjson::Value& val)
 | 
					void GetTransactions::Request::fromJson(const rapidjson::Value& val)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
					  if (!val.IsObject())
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    throw json::WRONG_TYPE("json object");
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  GET_FROM_JSON_OBJECT(val, tx_hashes, tx_hashes);
 | 
					  GET_FROM_JSON_OBJECT(val, tx_hashes, tx_hashes);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -128,6 +159,11 @@ void GetTransactions::Response::doToJson(rapidjson::Writer<epee::byte_stream>& d
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void GetTransactions::Response::fromJson(const rapidjson::Value& val)
 | 
					void GetTransactions::Response::fromJson(const rapidjson::Value& val)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
					  if (!val.IsObject())
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    throw json::WRONG_TYPE("json object");
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  GET_FROM_JSON_OBJECT(val, txs, txs);
 | 
					  GET_FROM_JSON_OBJECT(val, txs, txs);
 | 
				
			||||||
  GET_FROM_JSON_OBJECT(val, missed_hashes, missed_hashes);
 | 
					  GET_FROM_JSON_OBJECT(val, missed_hashes, missed_hashes);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -140,6 +176,11 @@ void KeyImagesSpent::Request::doToJson(rapidjson::Writer<epee::byte_stream>& des
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void KeyImagesSpent::Request::fromJson(const rapidjson::Value& val)
 | 
					void KeyImagesSpent::Request::fromJson(const rapidjson::Value& val)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
					  if (!val.IsObject())
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    throw json::WRONG_TYPE("json object");
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  GET_FROM_JSON_OBJECT(val, key_images, key_images);
 | 
					  GET_FROM_JSON_OBJECT(val, key_images, key_images);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -150,6 +191,11 @@ void KeyImagesSpent::Response::doToJson(rapidjson::Writer<epee::byte_stream>& de
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void KeyImagesSpent::Response::fromJson(const rapidjson::Value& val)
 | 
					void KeyImagesSpent::Response::fromJson(const rapidjson::Value& val)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
					  if (!val.IsObject())
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    throw json::WRONG_TYPE("json object");
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  GET_FROM_JSON_OBJECT(val, spent_status, spent_status);
 | 
					  GET_FROM_JSON_OBJECT(val, spent_status, spent_status);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -161,6 +207,11 @@ void GetTxGlobalOutputIndices::Request::doToJson(rapidjson::Writer<epee::byte_st
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void GetTxGlobalOutputIndices::Request::fromJson(const rapidjson::Value& val)
 | 
					void GetTxGlobalOutputIndices::Request::fromJson(const rapidjson::Value& val)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
					  if (!val.IsObject())
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    throw json::WRONG_TYPE("json object");
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  GET_FROM_JSON_OBJECT(val, tx_hash, tx_hash);
 | 
					  GET_FROM_JSON_OBJECT(val, tx_hash, tx_hash);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -171,6 +222,11 @@ void GetTxGlobalOutputIndices::Response::doToJson(rapidjson::Writer<epee::byte_s
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void GetTxGlobalOutputIndices::Response::fromJson(const rapidjson::Value& val)
 | 
					void GetTxGlobalOutputIndices::Response::fromJson(const rapidjson::Value& val)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
					  if (!val.IsObject())
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    throw json::WRONG_TYPE("json object");
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  GET_FROM_JSON_OBJECT(val, output_indices, output_indices);
 | 
					  GET_FROM_JSON_OBJECT(val, output_indices, output_indices);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -182,6 +238,11 @@ void SendRawTx::Request::doToJson(rapidjson::Writer<epee::byte_stream>& dest) co
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void SendRawTx::Request::fromJson(const rapidjson::Value& val)
 | 
					void SendRawTx::Request::fromJson(const rapidjson::Value& val)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
					  if (!val.IsObject())
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    throw json::WRONG_TYPE("json object");
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  GET_FROM_JSON_OBJECT(val, tx, tx);
 | 
					  GET_FROM_JSON_OBJECT(val, tx, tx);
 | 
				
			||||||
  GET_FROM_JSON_OBJECT(val, relay, relay);
 | 
					  GET_FROM_JSON_OBJECT(val, relay, relay);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -194,6 +255,11 @@ void SendRawTx::Response::doToJson(rapidjson::Writer<epee::byte_stream>& dest) c
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void SendRawTx::Response::fromJson(const rapidjson::Value& val)
 | 
					void SendRawTx::Response::fromJson(const rapidjson::Value& val)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
					  if (!val.IsObject())
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    throw json::WRONG_TYPE("json object");
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  GET_FROM_JSON_OBJECT(val, relayed, relayed);
 | 
					  GET_FROM_JSON_OBJECT(val, relayed, relayed);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -205,6 +271,11 @@ void SendRawTxHex::Request::doToJson(rapidjson::Writer<epee::byte_stream>& dest)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void SendRawTxHex::Request::fromJson(const rapidjson::Value& val)
 | 
					void SendRawTxHex::Request::fromJson(const rapidjson::Value& val)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
					  if (!val.IsObject())
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    throw json::WRONG_TYPE("json object");
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  GET_FROM_JSON_OBJECT(val, tx_as_hex, tx_as_hex);
 | 
					  GET_FROM_JSON_OBJECT(val, tx_as_hex, tx_as_hex);
 | 
				
			||||||
  GET_FROM_JSON_OBJECT(val, relay, relay);
 | 
					  GET_FROM_JSON_OBJECT(val, relay, relay);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -219,6 +290,11 @@ void StartMining::Request::doToJson(rapidjson::Writer<epee::byte_stream>& dest)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void StartMining::Request::fromJson(const rapidjson::Value& val)
 | 
					void StartMining::Request::fromJson(const rapidjson::Value& val)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
					  if (!val.IsObject())
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    throw json::WRONG_TYPE("json object");
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  GET_FROM_JSON_OBJECT(val, miner_address, miner_address);
 | 
					  GET_FROM_JSON_OBJECT(val, miner_address, miner_address);
 | 
				
			||||||
  GET_FROM_JSON_OBJECT(val, threads_count, threads_count);
 | 
					  GET_FROM_JSON_OBJECT(val, threads_count, threads_count);
 | 
				
			||||||
  GET_FROM_JSON_OBJECT(val, do_background_mining, do_background_mining);
 | 
					  GET_FROM_JSON_OBJECT(val, do_background_mining, do_background_mining);
 | 
				
			||||||
| 
						 | 
					@ -266,6 +342,11 @@ void MiningStatus::Response::doToJson(rapidjson::Writer<epee::byte_stream>& dest
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void MiningStatus::Response::fromJson(const rapidjson::Value& val)
 | 
					void MiningStatus::Response::fromJson(const rapidjson::Value& val)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
					  if (!val.IsObject())
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    throw json::WRONG_TYPE("json object");
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  GET_FROM_JSON_OBJECT(val, active, active);
 | 
					  GET_FROM_JSON_OBJECT(val, active, active);
 | 
				
			||||||
  GET_FROM_JSON_OBJECT(val, speed, speed);
 | 
					  GET_FROM_JSON_OBJECT(val, speed, speed);
 | 
				
			||||||
  GET_FROM_JSON_OBJECT(val, threads_count, threads_count);
 | 
					  GET_FROM_JSON_OBJECT(val, threads_count, threads_count);
 | 
				
			||||||
| 
						 | 
					@ -288,6 +369,11 @@ void GetInfo::Response::doToJson(rapidjson::Writer<epee::byte_stream>& dest) con
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void GetInfo::Response::fromJson(const rapidjson::Value& val)
 | 
					void GetInfo::Response::fromJson(const rapidjson::Value& val)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
					  if (!val.IsObject())
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    throw json::WRONG_TYPE("json object");
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  GET_FROM_JSON_OBJECT(val, info, info);
 | 
					  GET_FROM_JSON_OBJECT(val, info, info);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -314,6 +400,11 @@ void GetBlockHash::Request::doToJson(rapidjson::Writer<epee::byte_stream>& dest)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void GetBlockHash::Request::fromJson(const rapidjson::Value& val)
 | 
					void GetBlockHash::Request::fromJson(const rapidjson::Value& val)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
					  if (!val.IsObject())
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    throw json::WRONG_TYPE("json object");
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  GET_FROM_JSON_OBJECT(val, height, height);
 | 
					  GET_FROM_JSON_OBJECT(val, height, height);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -324,6 +415,11 @@ void GetBlockHash::Response::doToJson(rapidjson::Writer<epee::byte_stream>& dest
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void GetBlockHash::Response::fromJson(const rapidjson::Value& val)
 | 
					void GetBlockHash::Response::fromJson(const rapidjson::Value& val)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
					  if (!val.IsObject())
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    throw json::WRONG_TYPE("json object");
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  GET_FROM_JSON_OBJECT(val, hash, hash);
 | 
					  GET_FROM_JSON_OBJECT(val, hash, hash);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -342,6 +438,11 @@ void GetLastBlockHeader::Response::doToJson(rapidjson::Writer<epee::byte_stream>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void GetLastBlockHeader::Response::fromJson(const rapidjson::Value& val)
 | 
					void GetLastBlockHeader::Response::fromJson(const rapidjson::Value& val)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
					  if (!val.IsObject())
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    throw json::WRONG_TYPE("json object");
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  GET_FROM_JSON_OBJECT(val, header, header);
 | 
					  GET_FROM_JSON_OBJECT(val, header, header);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -353,6 +454,11 @@ void GetBlockHeaderByHash::Request::doToJson(rapidjson::Writer<epee::byte_stream
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void GetBlockHeaderByHash::Request::fromJson(const rapidjson::Value& val)
 | 
					void GetBlockHeaderByHash::Request::fromJson(const rapidjson::Value& val)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
					  if (!val.IsObject())
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    throw json::WRONG_TYPE("json object");
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  GET_FROM_JSON_OBJECT(val, hash, hash);
 | 
					  GET_FROM_JSON_OBJECT(val, hash, hash);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -363,6 +469,11 @@ void GetBlockHeaderByHash::Response::doToJson(rapidjson::Writer<epee::byte_strea
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void GetBlockHeaderByHash::Response::fromJson(const rapidjson::Value& val)
 | 
					void GetBlockHeaderByHash::Response::fromJson(const rapidjson::Value& val)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
					  if (!val.IsObject())
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    throw json::WRONG_TYPE("json object");
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  GET_FROM_JSON_OBJECT(val, header, header);
 | 
					  GET_FROM_JSON_OBJECT(val, header, header);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -374,6 +485,11 @@ void GetBlockHeaderByHeight::Request::doToJson(rapidjson::Writer<epee::byte_stre
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void GetBlockHeaderByHeight::Request::fromJson(const rapidjson::Value& val)
 | 
					void GetBlockHeaderByHeight::Request::fromJson(const rapidjson::Value& val)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
					  if (!val.IsObject())
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    throw json::WRONG_TYPE("json object");
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  GET_FROM_JSON_OBJECT(val, height, height);
 | 
					  GET_FROM_JSON_OBJECT(val, height, height);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -384,6 +500,11 @@ void GetBlockHeaderByHeight::Response::doToJson(rapidjson::Writer<epee::byte_str
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void GetBlockHeaderByHeight::Response::fromJson(const rapidjson::Value& val)
 | 
					void GetBlockHeaderByHeight::Response::fromJson(const rapidjson::Value& val)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
					  if (!val.IsObject())
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    throw json::WRONG_TYPE("json object");
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  GET_FROM_JSON_OBJECT(val, header, header);
 | 
					  GET_FROM_JSON_OBJECT(val, header, header);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -395,6 +516,11 @@ void GetBlockHeadersByHeight::Request::doToJson(rapidjson::Writer<epee::byte_str
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void GetBlockHeadersByHeight::Request::fromJson(const rapidjson::Value& val)
 | 
					void GetBlockHeadersByHeight::Request::fromJson(const rapidjson::Value& val)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
					  if (!val.IsObject())
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    throw json::WRONG_TYPE("json object");
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  GET_FROM_JSON_OBJECT(val, heights, heights);
 | 
					  GET_FROM_JSON_OBJECT(val, heights, heights);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -405,6 +531,11 @@ void GetBlockHeadersByHeight::Response::doToJson(rapidjson::Writer<epee::byte_st
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void GetBlockHeadersByHeight::Response::fromJson(const rapidjson::Value& val)
 | 
					void GetBlockHeadersByHeight::Response::fromJson(const rapidjson::Value& val)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
					  if (!val.IsObject())
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    throw json::WRONG_TYPE("json object");
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  GET_FROM_JSON_OBJECT(val, headers, headers);
 | 
					  GET_FROM_JSON_OBJECT(val, headers, headers);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -424,6 +555,11 @@ void GetPeerList::Response::doToJson(rapidjson::Writer<epee::byte_stream>& dest)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void GetPeerList::Response::fromJson(const rapidjson::Value& val)
 | 
					void GetPeerList::Response::fromJson(const rapidjson::Value& val)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
					  if (!val.IsObject())
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    throw json::WRONG_TYPE("json object");
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  GET_FROM_JSON_OBJECT(val, white_list, white_list);
 | 
					  GET_FROM_JSON_OBJECT(val, white_list, white_list);
 | 
				
			||||||
  GET_FROM_JSON_OBJECT(val, gray_list, gray_list);
 | 
					  GET_FROM_JSON_OBJECT(val, gray_list, gray_list);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -436,6 +572,11 @@ void SetLogLevel::Request::doToJson(rapidjson::Writer<epee::byte_stream>& dest)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void SetLogLevel::Request::fromJson(const rapidjson::Value& val)
 | 
					void SetLogLevel::Request::fromJson(const rapidjson::Value& val)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
					  if (!val.IsObject())
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    throw json::WRONG_TYPE("json object");
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  GET_FROM_JSON_OBJECT(val, level, level);
 | 
					  GET_FROM_JSON_OBJECT(val, level, level);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -462,6 +603,11 @@ void GetTransactionPool::Response::doToJson(rapidjson::Writer<epee::byte_stream>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void GetTransactionPool::Response::fromJson(const rapidjson::Value& val)
 | 
					void GetTransactionPool::Response::fromJson(const rapidjson::Value& val)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
					  if (!val.IsObject())
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    throw json::WRONG_TYPE("json object");
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  GET_FROM_JSON_OBJECT(val, transactions, transactions);
 | 
					  GET_FROM_JSON_OBJECT(val, transactions, transactions);
 | 
				
			||||||
  GET_FROM_JSON_OBJECT(val, key_images, key_images);
 | 
					  GET_FROM_JSON_OBJECT(val, key_images, key_images);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -474,6 +620,11 @@ void HardForkInfo::Request::doToJson(rapidjson::Writer<epee::byte_stream>& dest)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void HardForkInfo::Request::fromJson(const rapidjson::Value& val)
 | 
					void HardForkInfo::Request::fromJson(const rapidjson::Value& val)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
					  if (!val.IsObject())
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    throw json::WRONG_TYPE("json object");
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  GET_FROM_JSON_OBJECT(val, version, version);
 | 
					  GET_FROM_JSON_OBJECT(val, version, version);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -484,6 +635,11 @@ void HardForkInfo::Response::doToJson(rapidjson::Writer<epee::byte_stream>& dest
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void HardForkInfo::Response::fromJson(const rapidjson::Value& val)
 | 
					void HardForkInfo::Response::fromJson(const rapidjson::Value& val)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
					  if (!val.IsObject())
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    throw json::WRONG_TYPE("json object");
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  GET_FROM_JSON_OBJECT(val, info, info);
 | 
					  GET_FROM_JSON_OBJECT(val, info, info);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -499,6 +655,11 @@ void GetOutputHistogram::Request::doToJson(rapidjson::Writer<epee::byte_stream>&
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void GetOutputHistogram::Request::fromJson(const rapidjson::Value& val)
 | 
					void GetOutputHistogram::Request::fromJson(const rapidjson::Value& val)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
					  if (!val.IsObject())
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    throw json::WRONG_TYPE("json object");
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  GET_FROM_JSON_OBJECT(val, amounts, amounts);
 | 
					  GET_FROM_JSON_OBJECT(val, amounts, amounts);
 | 
				
			||||||
  GET_FROM_JSON_OBJECT(val, min_count, min_count);
 | 
					  GET_FROM_JSON_OBJECT(val, min_count, min_count);
 | 
				
			||||||
  GET_FROM_JSON_OBJECT(val, max_count, max_count);
 | 
					  GET_FROM_JSON_OBJECT(val, max_count, max_count);
 | 
				
			||||||
| 
						 | 
					@ -513,6 +674,11 @@ void GetOutputHistogram::Response::doToJson(rapidjson::Writer<epee::byte_stream>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void GetOutputHistogram::Response::fromJson(const rapidjson::Value& val)
 | 
					void GetOutputHistogram::Response::fromJson(const rapidjson::Value& val)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
					  if (!val.IsObject())
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    throw json::WRONG_TYPE("json object");
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  GET_FROM_JSON_OBJECT(val, histogram, histogram);
 | 
					  GET_FROM_JSON_OBJECT(val, histogram, histogram);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -524,6 +690,11 @@ void GetOutputKeys::Request::doToJson(rapidjson::Writer<epee::byte_stream>& dest
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void GetOutputKeys::Request::fromJson(const rapidjson::Value& val)
 | 
					void GetOutputKeys::Request::fromJson(const rapidjson::Value& val)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
					  if (!val.IsObject())
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    throw json::WRONG_TYPE("json object");
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  GET_FROM_JSON_OBJECT(val, outputs, outputs);
 | 
					  GET_FROM_JSON_OBJECT(val, outputs, outputs);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -534,6 +705,11 @@ void GetOutputKeys::Response::doToJson(rapidjson::Writer<epee::byte_stream>& des
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void GetOutputKeys::Response::fromJson(const rapidjson::Value& val)
 | 
					void GetOutputKeys::Response::fromJson(const rapidjson::Value& val)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
					  if (!val.IsObject())
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    throw json::WRONG_TYPE("json object");
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  GET_FROM_JSON_OBJECT(val, keys, keys);
 | 
					  GET_FROM_JSON_OBJECT(val, keys, keys);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -552,6 +728,11 @@ void GetRPCVersion::Response::doToJson(rapidjson::Writer<epee::byte_stream>& des
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void GetRPCVersion::Response::fromJson(const rapidjson::Value& val)
 | 
					void GetRPCVersion::Response::fromJson(const rapidjson::Value& val)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
					  if (!val.IsObject())
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    throw json::WRONG_TYPE("json object");
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  GET_FROM_JSON_OBJECT(val, version, version);
 | 
					  GET_FROM_JSON_OBJECT(val, version, version);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -562,6 +743,11 @@ void GetFeeEstimate::Request::doToJson(rapidjson::Writer<epee::byte_stream>& des
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void GetFeeEstimate::Request::fromJson(const rapidjson::Value& val)
 | 
					void GetFeeEstimate::Request::fromJson(const rapidjson::Value& val)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
					  if (!val.IsObject())
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    throw json::WRONG_TYPE("json object");
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  GET_FROM_JSON_OBJECT(val, num_grace_blocks, num_grace_blocks);
 | 
					  GET_FROM_JSON_OBJECT(val, num_grace_blocks, num_grace_blocks);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -575,6 +761,11 @@ void GetFeeEstimate::Response::doToJson(rapidjson::Writer<epee::byte_stream>& de
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void GetFeeEstimate::Response::fromJson(const rapidjson::Value& val)
 | 
					void GetFeeEstimate::Response::fromJson(const rapidjson::Value& val)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
					  if (!val.IsObject())
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    throw json::WRONG_TYPE("json object");
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  GET_FROM_JSON_OBJECT(val, estimated_base_fee, estimated_base_fee);
 | 
					  GET_FROM_JSON_OBJECT(val, estimated_base_fee, estimated_base_fee);
 | 
				
			||||||
  GET_FROM_JSON_OBJECT(val, fee_mask, fee_mask);
 | 
					  GET_FROM_JSON_OBJECT(val, fee_mask, fee_mask);
 | 
				
			||||||
  GET_FROM_JSON_OBJECT(val, size_scale, size_scale);
 | 
					  GET_FROM_JSON_OBJECT(val, size_scale, size_scale);
 | 
				
			||||||
| 
						 | 
					@ -591,6 +782,11 @@ void GetOutputDistribution::Request::doToJson(rapidjson::Writer<epee::byte_strea
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void GetOutputDistribution::Request::fromJson(const rapidjson::Value& val)
 | 
					void GetOutputDistribution::Request::fromJson(const rapidjson::Value& val)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
					  if (!val.IsObject())
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    throw json::WRONG_TYPE("json object");
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  GET_FROM_JSON_OBJECT(val, amounts, amounts);
 | 
					  GET_FROM_JSON_OBJECT(val, amounts, amounts);
 | 
				
			||||||
  GET_FROM_JSON_OBJECT(val, from_height, from_height);
 | 
					  GET_FROM_JSON_OBJECT(val, from_height, from_height);
 | 
				
			||||||
  GET_FROM_JSON_OBJECT(val, to_height, to_height);
 | 
					  GET_FROM_JSON_OBJECT(val, to_height, to_height);
 | 
				
			||||||
| 
						 | 
					@ -605,6 +801,11 @@ void GetOutputDistribution::Response::doToJson(rapidjson::Writer<epee::byte_stre
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void GetOutputDistribution::Response::fromJson(const rapidjson::Value& val)
 | 
					void GetOutputDistribution::Response::fromJson(const rapidjson::Value& val)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
					  if (!val.IsObject())
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    throw json::WRONG_TYPE("json object");
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  GET_FROM_JSON_OBJECT(val, status, status);
 | 
					  GET_FROM_JSON_OBJECT(val, status, status);
 | 
				
			||||||
  GET_FROM_JSON_OBJECT(val, distributions, distributions);
 | 
					  GET_FROM_JSON_OBJECT(val, distributions, distributions);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -13,6 +13,7 @@
 | 
				
			||||||
#include "cryptonote_basic/cryptonote_format_utils.h"
 | 
					#include "cryptonote_basic/cryptonote_format_utils.h"
 | 
				
			||||||
#include "cryptonote_core/cryptonote_tx_utils.h"
 | 
					#include "cryptonote_core/cryptonote_tx_utils.h"
 | 
				
			||||||
#include "serialization/json_object.h"
 | 
					#include "serialization/json_object.h"
 | 
				
			||||||
 | 
					#include "rpc/daemon_messages.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace test
 | 
					namespace test
 | 
				
			||||||
| 
						 | 
					@ -240,3 +241,9 @@ TEST(JsonSerialization, BulletproofTransaction)
 | 
				
			||||||
    EXPECT_EQ(tx_bytes, tx_copy_bytes);
 | 
					    EXPECT_EQ(tx_bytes, tx_copy_bytes);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					TEST(JsonRpcSerialization, HandlerFromJson)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  cryptonote::rpc::FullMessage req_full("{\"jsonrpc\":\"2.0\",\"method\":\"get_hashes_fast\",\"params\":[1]}", true);
 | 
				
			||||||
 | 
					  cryptonote::rpc::GetHashesFast::Request request{};
 | 
				
			||||||
 | 
					  EXPECT_THROW(request.fromJson(req_full.getMessage()), cryptonote::json::WRONG_TYPE);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue