susumu.yata
null+****@clear*****
Thu May 16 17:16:07 JST 2013
susumu.yata 2013-05-16 17:16:07 +0900 (Thu, 16 May 2013) New Revision: 14b876256aa49f78d2028a9703524ef7e9a8e71c https://github.com/groonga/grnxx/commit/14b876256aa49f78d2028a9703524ef7e9a8e71c Message: Add size check. Modified files: lib/grnxx/array/array_1d.cpp lib/grnxx/array/array_2d.cpp lib/grnxx/array/array_3d.cpp Modified: lib/grnxx/array/array_1d.cpp (+5 -0) =================================================================== --- lib/grnxx/array/array_1d.cpp 2013-05-16 16:36:01 +0900 (1fbce3b) +++ lib/grnxx/array/array_1d.cpp 2013-05-16 17:16:07 +0900 (ef67d7d) @@ -128,6 +128,11 @@ bool Array1D::open_array(Storage *storage, uint32_t storage_node_id, if (!storage_node) { return false; } + if (storage_node.size() < sizeof(Array1DHeader)) { + GRNXX_ERROR() << "invalid format: node_size = " << storage_node.size() + << ", header_size = " << sizeof(Array1DHeader); + return false; + } storage_node_id_ = storage_node.id(); header_ = static_cast<Array1DHeader *>(storage_node.body()); if (header_->value_size != value_size) { Modified: lib/grnxx/array/array_2d.cpp (+5 -0) =================================================================== --- lib/grnxx/array/array_2d.cpp 2013-05-16 16:36:01 +0900 (d4e2bdc) +++ lib/grnxx/array/array_2d.cpp 2013-05-16 17:16:07 +0900 (f21a550) @@ -174,6 +174,11 @@ bool Array2D::open_array(Storage *storage, uint32_t storage_node_id, if (!storage_node) { return false; } + if (storage_node.size() < sizeof(Array2DHeader)) { + GRNXX_ERROR() << "invalid format: node_size = " << storage_node.size() + << ", header_size = " << sizeof(Array2DHeader); + return false; + } storage_node_id_ = storage_node.id(); header_ = static_cast<Array2DHeader *>(storage_node.body()); if (header_->value_size != value_size) { Modified: lib/grnxx/array/array_3d.cpp (+5 -0) =================================================================== --- lib/grnxx/array/array_3d.cpp 2013-05-16 16:36:01 +0900 (e152d2d) +++ lib/grnxx/array/array_3d.cpp 2013-05-16 17:16:07 +0900 (c15c587) @@ -176,6 +176,11 @@ bool Array3D::open_array(Storage *storage, uint32_t storage_node_id, if (!storage_node) { return false; } + if (storage_node.size() < sizeof(Array3DHeader)) { + GRNXX_ERROR() << "invalid format: node_size = " << storage_node.size() + << ", header_size = " << sizeof(Array3DHeader); + return false; + } storage_node_id_ = storage_node.id(); header_ = static_cast<Array3DHeader *>(storage_node.body()); if (header_->value_size != value_size) { -------------- next part -------------- HTML����������������������������... ダウンロード