Skip to content

Commit

Permalink
update decode_fast.c to assert that non-const messages are not frozen
Browse files Browse the repository at this point in the history
PiperOrigin-RevId: 627393634
  • Loading branch information
honglooker authored and copybara-github committed Apr 23, 2024
1 parent b50ff60 commit 335edb9
Showing 1 changed file with 3 additions and 0 deletions.
3 changes: 3 additions & 0 deletions upb/wire/internal/decode_fast.c
Original file line number Diff line number Diff line change
Expand Up @@ -231,6 +231,7 @@ UPB_FORCEINLINE
void* fastdecode_getfield(upb_Decoder* d, const char* ptr, upb_Message* msg,
uint64_t* data, uint64_t* hasbits,
fastdecode_arr* farr, int valbytes, upb_card card) {
UPB_ASSERT(!upb_Message_IsFrozen(msg));
switch (card) {
case CARD_s: {
uint8_t hasbit_index = *data >> 24;
Expand Down Expand Up @@ -606,6 +607,7 @@ UPB_NOINLINE
static const char* fastdecode_verifyutf8(upb_Decoder* d, const char* ptr,
upb_Message* msg, intptr_t table,
uint64_t hasbits, uint64_t data) {
UPB_ASSERT(!upb_Message_IsFrozen(msg));
upb_StringView* dst = (upb_StringView*)data;
if (!_upb_Decoder_VerifyUtf8Inline(dst->data, dst->size)) {
_upb_FastDecoder_ErrorJmp(d, kUpb_DecodeStatus_BadUtf8);
Expand Down Expand Up @@ -651,6 +653,7 @@ UPB_NOINLINE
static const char* fastdecode_longstring_noutf8(
struct upb_Decoder* d, const char* ptr, upb_Message* msg, intptr_t table,
uint64_t hasbits, uint64_t data) {
UPB_ASSERT(!upb_Message_IsFrozen(msg));
upb_StringView* dst = (upb_StringView*)data;
FASTDECODE_LONGSTRING(d, ptr, msg, table, hasbits, dst, false);
}
Expand Down

0 comments on commit 335edb9

Please sign in to comment.