aboutsummaryrefslogtreecommitdiffstats
path: root/dev-util/nfcutils/files/nfcutils-fix-segfault.patch
blob: cd1c6752bd700bdd8f6e1f3d582e6d242d0bd64c (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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
--- src/lsnfc.c	(revision 1072)
+++ src/lsnfc.c	(working copy)
@@ -76,6 +76,7 @@
 {
   uint8_t abtCmd[2];
   uint8_t abtRx[265];
+  size_t szRxLen;
   int res = 0;
 
   abtCmd[0] = 0x1A;  // MIFARE UltralightC Auth command
@@ -87,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);
@@ -115,6 +117,7 @@
 {
   uint8_t abtCmd[] = { 0x60 }; // MIFARE DESFire GetVersion command
   uint8_t abtRx[265];
+  size_t szRxLen;
   uint8_t abtDESFireVersion[14];
   char *res = NULL;
   int nfcRes = 0;
@@ -124,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