Skip to content

Commit 0ecf9c9

Browse files
Copilotmouse07410
andcommitted
Fix X2AP Handover Request decoding - properly track consumed bits in unknown OPEN_TYPE handling
Co-authored-by: mouse07410 <5923577+mouse07410@users.noreply.github.com>
1 parent 0627994 commit 0ecf9c9

File tree

1 file changed

+16
-3
lines changed

1 file changed

+16
-3
lines changed

skeletons/OPEN_TYPE_aper.c

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -142,12 +142,17 @@ OPEN_TYPE_aper_unknown_type_discard_bytes (asn_per_data_t *pd) {
142142
ssize_t bytes;
143143
int repeat;
144144
asn_dec_rval_t rv;
145+
size_t initial_consumed = pd->moved; /* Track initial position */
145146

146147
rv.consumed = 0;
147148
rv.code = RC_FAIL;
148149

149150
do {
150151
bytes = aper_get_length(pd, -1, -1, -1, &repeat);
152+
if (bytes < 0) {
153+
/* Invalid length - return error */
154+
return rv;
155+
}
151156
if (bytes > 10 * ASN_DUMMY_BYTES)
152157
{
153158
return rv;
@@ -159,7 +164,13 @@ OPEN_TYPE_aper_unknown_type_discard_bytes (asn_per_data_t *pd) {
159164
return rv;
160165
}
161166

162-
per_get_many_bits(pd, (dummy_ptr ? dummy_ptr : dummy), 0, bytes << 3);
167+
if (per_get_many_bits(pd, (dummy_ptr ? dummy_ptr : dummy), 0, bytes << 3) < 0) {
168+
/* Error during bit consumption */
169+
if (dummy_ptr) {
170+
FREEMEM(dummy_ptr);
171+
}
172+
return rv;
173+
}
163174

164175
if (dummy_ptr)
165176
{
@@ -168,7 +179,9 @@ OPEN_TYPE_aper_unknown_type_discard_bytes (asn_per_data_t *pd) {
168179
}
169180
} while (repeat);
170181

171-
rv.code = RC_OK;
172-
return rv;
182+
/* Update consumed to reflect actual bits consumed */
183+
rv.consumed = pd->moved - initial_consumed;
184+
rv.code = RC_OK;
185+
return rv;
173186
#undef ASN_DUMMY_BYTES
174187
}

0 commit comments

Comments
 (0)