Add comment that memberLength for-loop cannot overflow

Bug: dawn:680
Change-Id: I8e256fed58651ff8eb3d7a3f8b30d3b1ef0b3dcd
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/42400
Auto-Submit: Austin Eng <enga@chromium.org>
Reviewed-by: Stephen White <senorblanco@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
This commit is contained in:
Austin Eng 2021-02-24 18:39:31 +00:00 committed by Commit Bot service account
parent 4e6b52a21b
commit 5eb496b863
1 changed files with 9 additions and 0 deletions

View File

@ -270,6 +270,9 @@ namespace {
{{member_transfer_type(member)}}* memberBuffer; {{member_transfer_type(member)}}* memberBuffer;
SERIALIZE_TRY(buffer->NextN(memberLength, &memberBuffer)); SERIALIZE_TRY(buffer->NextN(memberLength, &memberBuffer));
//* This loop cannot overflow because it iterates up to |memberLength|. Even if
//* memberLength were the maximum integer value, |i| would become equal to it just before
//* exiting the loop, but not increment past or wrap around.
for (decltype(memberLength) i = 0; i < memberLength; ++i) { for (decltype(memberLength) i = 0; i < memberLength; ++i) {
{{serialize_member(member, "record." + memberName + "[i]", "memberBuffer[i]" )}} {{serialize_member(member, "record." + memberName + "[i]", "memberBuffer[i]" )}}
} }
@ -371,6 +374,9 @@ namespace {
{% if member.annotation == "const*const*" %} {% if member.annotation == "const*const*" %}
{{as_cType(member.type.name)}}** pointerArray; {{as_cType(member.type.name)}}** pointerArray;
DESERIALIZE_TRY(GetSpace(allocator, memberLength, &pointerArray)); DESERIALIZE_TRY(GetSpace(allocator, memberLength, &pointerArray));
//* This loop cannot overflow because it iterates up to |memberLength|. Even if
//* memberLength were the maximum integer value, |i| would become equal to it just before
//* exiting the loop, but not increment past or wrap around.
for (decltype(memberLength) i = 0; i < memberLength; ++i) { for (decltype(memberLength) i = 0; i < memberLength; ++i) {
pointerArray[i] = &copiedMembers[i]; pointerArray[i] = &copiedMembers[i];
} }
@ -379,6 +385,9 @@ namespace {
record->{{memberName}} = copiedMembers; record->{{memberName}} = copiedMembers;
{% endif %} {% endif %}
//* This loop cannot overflow because it iterates up to |memberLength|. Even if
//* memberLength were the maximum integer value, |i| would become equal to it just before
//* exiting the loop, but not increment past or wrap around.
for (decltype(memberLength) i = 0; i < memberLength; ++i) { for (decltype(memberLength) i = 0; i < memberLength; ++i) {
{{deserialize_member(member, "memberBuffer[i]", "copiedMembers[i]")}} {{deserialize_member(member, "memberBuffer[i]", "copiedMembers[i]")}}
} }