diff --git a/lib/gtp/v2/types.c b/lib/gtp/v2/types.c index 11da8c099..949588ef4 100644 --- a/lib/gtp/v2/types.c +++ b/lib/gtp/v2/types.c @@ -439,7 +439,8 @@ int16_t ogs_gtp2_parse_tft(ogs_gtp2_tft_t *tft, ogs_tlv_octet_t *octet) size += len; } - ogs_assert(size == octet->len); + if (size != octet->len) + ogs_error("Mismatch IE Length[%d] != Decoded[%d]", octet->len, size); return size; } @@ -607,7 +608,6 @@ int16_t ogs_gtp2_build_tft( } } - octet->len = size; return octet->len; diff --git a/src/smf/s5c-handler.c b/src/smf/s5c-handler.c index 515703f85..d71e97d5a 100644 --- a/src/smf/s5c-handler.c +++ b/src/smf/s5c-handler.c @@ -1281,6 +1281,14 @@ void smf_s5c_handle_bearer_resource_command( sess->sgw_s5c_teid, sess->smf_n4_teid); decoded = ogs_gtp2_parse_tft(&tft, &cmd->traffic_aggregate_description); + if (cmd->traffic_aggregate_description.len != decoded) { + ogs_fatal("ogs_gtp2_parse_tft() failed"); + ogs_log_hexdump(OGS_LOG_FATAL, + cmd->traffic_aggregate_description.data, + cmd->traffic_aggregate_description.len); + ogs_assert_if_reached(); + } + ogs_assert(cmd->traffic_aggregate_description.len == decoded); if (tft.code == OGS_GTP2_TFT_CODE_NO_TFT_OPERATION) {