diff options
author | 2014-03-24 05:29:00 -0700 | |
---|---|---|
committer | 2014-03-24 05:29:00 -0700 | |
commit | 2923329b054eb32b95d66c2c3e310fac4d93b966 (patch) | |
tree | 5e95fcedbfb8ee1e7c20ead9d16361f2d69e833b | |
parent | 8e73ea1aa5dcbd816a65a61a6f916e567b4e93ed (diff) | |
parent | 9695342ff663954570c8172ac2e427c96ed2958f (diff) | |
download | latinime-2923329b054eb32b95d66c2c3e310fac4d93b966.tar.gz latinime-2923329b054eb32b95d66c2c3e310fac4d93b966.tar.xz latinime-2923329b054eb32b95d66c2c3e310fac4d93b966.zip |
am 9695342f: Merge "Add boundary check for SparseTable."
* commit '9695342ff663954570c8172ac2e427c96ed2958f':
Add boundary check for SparseTable.
-rw-r--r-- | native/jni/src/suggest/policyimpl/dictionary/utils/sparse_table.cpp | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/native/jni/src/suggest/policyimpl/dictionary/utils/sparse_table.cpp b/native/jni/src/suggest/policyimpl/dictionary/utils/sparse_table.cpp index 810827dd0..d336306b9 100644 --- a/native/jni/src/suggest/policyimpl/dictionary/utils/sparse_table.cpp +++ b/native/jni/src/suggest/policyimpl/dictionary/utils/sparse_table.cpp @@ -34,6 +34,12 @@ uint32_t SparseTable::get(const int id) const { const int indexTableReadingPos = getPosInIndexTable(id); const int index = mIndexTableBuffer->readUint(INDEX_SIZE, indexTableReadingPos); const int contentTableReadingPos = getPosInContentTable(id, index); + if (contentTableReadingPos < 0 + || contentTableReadingPos >= mContentTableBuffer->getTailPosition()) { + AKLOGE("contentTableReadingPos(%d) is invalid. id: %d, index: %d", + contentTableReadingPos, id, index); + return NOT_A_DICT_POS; + } const int contentValue = mContentTableBuffer->readUint(mDataSize, contentTableReadingPos); return contentValue == NOT_EXIST ? NOT_A_DICT_POS : contentValue; } |