This fixes the following leaks:
==30517== 32,808 bytes in 1 blocks are definitely lost in loss record 11 of 12
==30517== at 0x4C28BED: malloc (vg_replace_malloc.c:263)
==30517== by 0x50F4B2A: __alloc_dir (opendir.c:186)
==30517== by 0x4E34998: conf_devices_load.constprop.1 (in /usr/lib/x86_64-linux-gnu/libnfc.so.4.0.0)
==30517== by 0x4E36350: nfc_context_new (in /usr/lib/x86_64-linux-gnu/libnfc.so.4.0.0)
==30517== by 0x4E34D98: nfc_init (in /usr/lib/x86_64-linux-gnu/libnfc.so.4.0.0)
This fixes the following leaks:
==18690== 256 bytes in 1 blocks are definitely lost in loss record 75 of 100
==18690== at 0x4C28BED: malloc (vg_replace_malloc.c:263)
==18690== by 0x511613F: regcomp (regcomp.c:487)
==18690== by 0x4E34313: conf_parse_file (in /usr/lib/x86_64-linux-gnu/libnfc.so.4.0.0)
==18690== by 0x4E349F5: conf_devices_load.constprop.1 (in /usr/lib/x86_64-linux-gnu/libnfc.so.4.0.0)
==18690== by 0x4E362C0: nfc_context_new (in /usr/lib/x86_64-linux-gnu/libnfc.so.4.0.0)
==18690== by 0x4E34D08: nfc_init (in /usr/lib/x86_64-linux-gnu/libnfc.so.4.0.0)
==18690==
==18690== 32,068 (224 direct, 31,844 indirect) bytes in 1 blocks are definitely lost in loss record 98 of 100
==18690== at 0x4C28BED: malloc (vg_replace_malloc.c:263)
==18690== by 0x4C28D6F: realloc (vg_replace_malloc.c:632)
==18690== by 0x5115DF3: re_compile_internal (regcomp.c:760)
==18690== by 0x51161AB: regcomp (regcomp.c:506)
==18690== by 0x4E34313: conf_parse_file (in /usr/lib/x86_64-linux-gnu/libnfc.so.4.0.0)
==18690== by 0x4E349F5: conf_devices_load.constprop.1 (in /usr/lib/x86_64-linux-gnu/libnfc.so.4.0.0)
==18690== by 0x4E362C0: nfc_context_new (in /usr/lib/x86_64-linux-gnu/libnfc.so.4.0.0)
==18690== by 0x4E34D08: nfc_init (in /usr/lib/x86_64-linux-gnu/libnfc.so.4.0.0)
Now call only once usb_init(); usb_find_busses(); usb_find_devices()
instead of multiple calls in several scan() then open()
This fixes the following leaks:
==1159== 8 bytes in 1 blocks are definitely lost in loss record 9 of 102
==1159== at 0x4C28BED: malloc (vg_replace_malloc.c:263)
==1159== by 0x53D9931: usb_parse_configuration (in /lib/x86_64-linux-gnu/libusb-0.1.so.4.4.4)
==1159== by 0x53DB8B1: usb_os_find_devices (in /lib/x86_64-linux-gnu/libusb-0.1.so.4.4.4)
==1159== by 0x53D8FDC: usb_find_devices (in /lib/x86_64-linux-gnu/libusb-0.1.so.4.4.4)
==1159== by 0x4E41D79: pn53x_usb_scan (in /usr/lib/x86_64-linux-gnu/libnfc.so.4.0.0)
==1159==
==1159== 8 bytes in 1 blocks are definitely lost in loss record 10 of 102
==1159== at 0x4C28BED: malloc (vg_replace_malloc.c:263)
==1159== by 0x53D9931: usb_parse_configuration (in /lib/x86_64-linux-gnu/libusb-0.1.so.4.4.4)
==1159== by 0x53DB8B1: usb_os_find_devices (in /lib/x86_64-linux-gnu/libusb-0.1.so.4.4.4)
==1159== by 0x53D8FDC: usb_find_devices (in /lib/x86_64-linux-gnu/libusb-0.1.so.4.4.4)
==1159== by 0x4E42CC7: pn53x_usb_open (in /usr/lib/x86_64-linux-gnu/libnfc.so.4.0.0)
==1159== by 0x4E351E6: nfc_open (in /usr/lib/x86_64-linux-gnu/libnfc.so.4.0.0)
* avoid hardcoded list sizes in #define
* merge card_link data into const_ca
* indexes start at 0, not 1, and use -1 as marker rather than 0
* fix bug in DESFire ATQA
* remove CL1 entries for double size UIDs, in practice we'll always get the latest SAK of the cascade
* remove CL2 tags, cf previous point
* compact const_cs considering the previous points
* keep const_cs strings only where they are informative
* premature halt of inner loop if there is no more SAK index to treat
* change atqa & sak types to uint16_t & uint8_t
* skip redundant matches in the old fingerprinting method
Adapt InDeselect & InRelease to RC-S360
nfc-list now supports discovery of several typeA tags properly
Current status of RC-S360 support is:
- nfc-list => ok except for B' & 3B
- nfc-anticol => fails to send raw frames before select
- nfc-mfultralight => ok
- nfc-mfclassic => ok
- pn53x-tamashell => ok
- pn53x-diagnose => ok
- nfc-dep-initiator => ok
- nfc-dep-target => fails in InitAsTarget
- nfc-emulate-* => fails in InitAsTarget
Commands momentarily disabled for RC-S360:
- select_passive_target for B'& 3B
Initialisation of RC-S360 in mode 0
Better generic nfc-list, does not rely only on DeSelect to avoid duplicates
Restore SetParameters for RC-S360
Handle Diagnose communication test properly
Tested:
- nfc-list => ok except for B' & 3B
- nfc-anticol => fails to send raw frames before select
- nfc-mfultralight => ok
- nfc-mfclassic => ok
- pn53x-tamashell => ok
- pn53x-diagnose => ok
- nfc-dep-initiator => ok
- nfc-dep-target => fails in InitAsTarget
- nfc-emulate-* => fails in InitAsTarget
Commands momentarily disabled for RC-S330:
- InDeselect
- InRelease
- select_passive_target for B'& 3B