aboutsummaryrefslogtreecommitdiffstats
path: root/dev-util/nfcutils/files/nfcutils-fix-segfault.patch
blob: 91e381c54f38cd9db30e7e3739c6f4d8615b991d (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
--- src/lsnfc.c	(revision 1072)
+++ src/lsnfc.c	(working copy)
@@ -88,7 +88,8 @@
   };
   if((res = nfc_initiator_select_passive_target(pnd, nm, nai.abtUid, nai.szUidLen, NULL)) >= 0 ) {
     nfc_device_set_property_bool (pnd, NP_EASY_FRAMING, false);
-    if ((res = nfc_initiator_transceive_bytes(pnd, abtCmd,sizeof(abtCmd), abtRx, sizeof(abtRx), 0)) >= 0) {
+    szRxLen = sizeof(abtRx);
+    if ((res = nfc_initiator_transceive_bytes(pnd, abtCmd,sizeof(abtCmd), abtRx, &szRxLen, 0)) >= 0) {
       // AUTH step1 command success, so it's a Ultralight C
       nfc_device_set_property_bool (pnd, NP_EASY_FRAMING, true);
       nfc_initiator_deselect_target(pnd);
@@ -126,12 +127,14 @@
     .nbr = NBR_106
   };
   if((nfcRes = nfc_initiator_select_passive_target(pnd, nm, nai.abtUid, nai.szUidLen, NULL)) >= 0 ) {
-    if ((nfcRes = nfc_initiator_transceive_bytes(pnd, abtCmd, sizeof(abtCmd), abtRx, sizeof(abtRx), 0)) >= 0) {
+    szRxLen = sizeof(abtRx);
+    if ((nfcRes = nfc_initiator_transceive_bytes(pnd, abtCmd, sizeof(abtCmd), abtRx, &szRxLen, 0)) >= 0) {
       // MIFARE DESFire GetVersion command success, decoding...
       if( nfcRes == 8 ) { // GetVersion should reply 8 bytes
         memcpy( abtDESFireVersion, abtRx + 1, 7 );
         abtCmd[0] = 0xAF; // ask for GetVersion next bytes
-        if ((nfcRes = nfc_initiator_transceive_bytes(pnd, abtCmd, sizeof(abtCmd), abtRx, sizeof(abtRx), 0)) >= 0) {
+        szRxLen = sizeof(abtRx);
+        if ((nfcRes = nfc_initiator_transceive_bytes(pnd, abtCmd, sizeof(abtCmd), abtRx, &szRxLen, 0)) >= 0) {
           if( nfcRes == 8 ) { // GetVersion should reply 8 bytes
             memcpy( abtDESFireVersion + 7, abtRx + 1, 7 );
             res = malloc(16); // We can alloc res: we will be able to provide information