Skip to content

Commit cd79d4f

Browse files
Fix Felica standard loading from nfc file (#4311)
1 parent 7518dc7 commit cd79d4f

File tree

1 file changed

+8
-0
lines changed

1 file changed

+8
-0
lines changed

lib/nfc/protocols/felica/felica.c

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -157,6 +157,8 @@ bool felica_load(FelicaData* data, FlipperFormat* ff, uint32_t version) {
157157
case FelicaStandard:
158158
uint32_t systems_total = 0;
159159
if(!flipper_format_read_uint32(ff, "System found", &systems_total, 1)) break;
160+
if(systems_total == 0) break;
161+
160162
simple_array_init(data->systems, systems_total);
161163

162164
for(uint8_t sys_idx = 0; sys_idx < systems_total; sys_idx++) {
@@ -181,6 +183,8 @@ bool felica_load(FelicaData* data, FlipperFormat* ff, uint32_t version) {
181183
do {
182184
uint32_t area_count = 0;
183185
if(!flipper_format_read_uint32(ff, "Area found", &area_count, 1)) break;
186+
if(area_count == 0) break;
187+
184188
simple_array_init(system->areas, area_count);
185189

186190
furi_string_reset(str_key_buffer);
@@ -207,6 +211,8 @@ bool felica_load(FelicaData* data, FlipperFormat* ff, uint32_t version) {
207211
do {
208212
uint32_t service_count = 0;
209213
if(!flipper_format_read_uint32(ff, "Service found", &service_count, 1)) break;
214+
if(service_count == 0) break;
215+
210216
simple_array_init(system->services, service_count);
211217

212218
furi_string_reset(str_key_buffer);
@@ -237,6 +243,8 @@ bool felica_load(FelicaData* data, FlipperFormat* ff, uint32_t version) {
237243
uint32_t public_block_count = 0;
238244
if(!flipper_format_read_uint32(ff, "Public blocks read", &public_block_count, 1))
239245
break;
246+
if(public_block_count == 0) break;
247+
240248
simple_array_init(system->public_blocks, public_block_count);
241249
for(uint16_t i = 0; i < public_block_count; i++) {
242250
furi_string_printf(str_key_buffer, "Block %04X", i);

0 commit comments

Comments
 (0)