fix heap overflow in simple_data_pool #1056
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
1.代码bug:
_capacity初始值为1时,在扩容过程中,由于 1 * 3/2 == 1,所以并没有扩容,而最后的_pool[_size++] = data;并没有再判断size与_capacity的关系,导致堆溢出
2.复现条件:
设置了brpc server option的session_local_data_factory,并且设置reserved_session_local_data为1,client多并发请求时,是必现的。
3.修复方法
_capacity初始值为1时,同_capacity初始值为0一样,强制设为128,而不是通过(_capacity * 3 / 2)计算。