Fix crash (integer overflow) in Device::getTextureDataForText (ios) #13999
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.
Explanation
There was the problem when height and width were typecast to short
integer. So for values bigger than sizeof(short) we had integer overflow. Values may became negative.
Steps to reproduce:
Create simple application with cocos2d::ui::EditBox. Start it. Add 1000 (just
example) characters at a time to the edit box. Method
Device::getTextureDataForText will be called and there will be integer
overflow for height and/or width:
As a result application will crash later.
Notes
This fix is related to platform (IOS) dependent code! So it is in CCDevice-ios.mm.