1810 Commits

Author SHA1 Message Date
Xavier AVERBOUCH
d5bbda3d67 added mfcuk + fix compil on Visaul studio 2022 (via Cmake)
mfcuk  added to utils
cmakelist modified
acr122_usb.C et pn53x_usb.c modified to remove errors when compiling on Visual Studio 2022 on Windows
2022-11-01 21:07:44 +01:00
Lucien Judert
5f71a79b56 Allow cross-compilation from mingw-w64 using libusb/libusbx 1.0.18 2014-01-27 23:30:45 +01:00
Philippe Teuwen
c2504e0825 libusb-compat: usbbus_bulk_read/write -> transfer 2013-10-15 02:31:00 +02:00
Philippe Teuwen
a4129edb69 libusb-compat: use libusb 1.0 native error codes 2013-10-15 02:30:55 +02:00
Philippe Teuwen
2334a35202 libusb-compat: get rid of usbbus_dev_handle 2013-10-15 01:21:56 +02:00
Philippe Teuwen
1a6217060a libusb: remove warning, make style 2013-10-14 23:07:09 +02:00
Philippe Teuwen
05f3c61013 CMake: search for libusb-1.0
Unfortunately libusb-1.0 header file brings some extra warnings

/usr/include/libusb-1.0/libusb.h:1431:9: warning:
cast from 'unsigned char *' to 'struct libusb_control_setup *' increases required alignment from 1 to 2 [-Wcast-align]
        return (struct libusb_control_setup *) transfer->buffer;
               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/libusb-1.0/libusb.h:1460:39: warning:
cast from 'unsigned char *' to 'struct libusb_control_setup *' increases required alignment from 1 to 2 [-Wcast-align]
        struct libusb_control_setup *setup = (struct libusb_control_setup *) buffer;
                                             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/libusb-1.0/libusb.h:1505:39: warning:
cast from 'unsigned char *' to 'struct libusb_control_setup *' increases required alignment from 1 to 2 [-Wcast-align]
        struct libusb_control_setup *setup = (struct libusb_control_setup *) buffer;
                                             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2013-10-14 22:51:20 +02:00
Philippe Teuwen
15582d7063 libusb-compat: fix warnings 2013-10-14 22:30:55 +02:00
Philippe Teuwen
3d901ced5c libusb-compat merged into usbbus.c 2013-10-14 22:17:31 +02:00
Philippe Teuwen
d7af911cb1 libusb compat: peel the oignon 2013-10-14 01:14:42 +02:00
Philippe Teuwen
c19cea25bb libusb compat: remove debug layer 2013-10-14 01:14:30 +02:00
Philippe Teuwen
7d076334a7 libusb compat: merge libusb-compat-usbi.h into libusb-compat-usb.h 2013-10-14 01:13:39 +02:00
Philippe Teuwen
0d29ba2073 libusb compat: peel the oignon 2013-10-14 01:11:53 +02:00
Philippe Teuwen
37ded96ed3 libusb: libusbx is supposed to support all platforms including Windows so let's drop 0.1 and libusb-win32 2013-10-13 23:15:54 +02:00
Philippe Teuwen
856d689748 cppcheck: remove more unused elements in libusb 0.1 compat 2013-10-13 22:06:04 +02:00
Philippe Teuwen
2065164033 libusb compat: silent warnings 2013-10-13 21:44:59 +02:00
Philippe Teuwen
a9ec5e79fa Remove unused elements in libusb 0.1 compat 2013-10-13 21:35:55 +02:00
Philippe Teuwen
8adddbab28 Using libnfc-1.0 through compat layer 2013-10-13 17:52:01 +02:00
Ludovic Rousseau
275170eb46 Use libusb-1.0 instead of libusb-0.1 2013-10-13 17:03:06 +02:00
Philippe Teuwen
b12cc161c4 Isolate libusb dependencies in buses/usbbus.c 2013-10-13 16:50:45 +02:00
Philippe Teuwen
7e5257dd44 Update Changelog 2013-10-01 14:29:51 +02:00
Philippe Teuwen
186cccfe6a pn532_uart: make use of log level for pn53x_check_communication() 2013-10-01 14:14:00 +02:00
Philippe Teuwen
1d0d3c3b45 uart_flush_input() can now wait a bit
Calling ioctl flush too fast before actual garbage bytes arrive was useless.
It solves an issue e.g. when config asks for scanning for multiple incompatible serial devices:
One scan can mess up the reader and we've to wait & flush properly for the next driver to be able to scan correctly
2013-10-01 14:09:15 +02:00
Philippe Teuwen
de1ca46066 Add envvars LIBNFC_DEVICE (to force only one device, no matter the conf files) and LIBNFC_AUTO_SCAN 2013-10-01 14:08:57 +02:00
Philippe Teuwen
1596255506 driver Arygon: don't try to send commands if reset failed 2013-10-01 12:27:19 +02:00
Philippe Teuwen
252f590d5c Revert "Check data from getenv("LIBNFC_LOG_LEVEL") and config file"
This reverts commit 846189b62c9640c29049c51e56d502131af7f165.
It didn't solve Coverity somplain and it broke bitfield support of log_level
2013-09-22 19:55:31 +02:00
Philippe Teuwen
846189b62c Check data from getenv("LIBNFC_LOG_LEVEL") and config file
Problem reported by Coverity:
CID 1090344 (#1 of 1): Use of untrusted string value (TAINTED_STRING)
. tainted_string: Passing tainted string "res->log_level" to "log_init(nfc_context const *)", which cannot accept tainted data.[show details]
2013-09-22 19:32:37 +02:00
Philippe Teuwen
9bb568b799 driver acr122_usb: fix dead code issue
Redundant result check leading to dead code was probably indicative
of a missing return value check of acr122_usb_send_apdu()

Problem reported by Coverity:
  at_least: At condition "res < 0", the value of "res" must be at least 12.
  cannot_single: At condition "res < 0", the value of "res" cannot be equal to -6.
  dead_error_condition: The condition "res < 0" cannot be true.
CID 1090327 (#1 of 1): Logically dead code (DEADCODE)
  dead_error_begin: Execution cannot reach this statement "acr122_usb_ack(pnd);".
2013-09-22 19:08:26 +02:00
Philippe Teuwen
117b58f501 nfc-read-forum-tag3: avoid passing large struct as parameter
Problem reported by Coverity:
CID 1090334 (#1 of 1): Big parameter passed by value (PASS_BY_VALUE)
  pass_by_value: Passing parameter nt of type nfc_target const (size 291 bytes) by value.
2013-09-22 18:32:47 +02:00
Philippe Teuwen
4a91859150 Fix unharmful warning
Commit 54729fb4581d8cbe722292eb3ba73e76711bd461 removed some dead code spotted by Coverity
but it had as effect to trigger a gcc warning, which prefers to see all enum in a switch rather than dead code:

pn53x.c: In function 'pn53x_InJumpForDEP':
pn53x.c:2552:5: warning: enumeration value 'NBR_UNDEFINED' not handled in switch [-Wswitch]
pn53x.c:2552:5: warning: enumeration value 'NBR_847' not handled in switch [-Wswitch]

So both switches were merged, which slightly optimizes the code for speed.
2013-09-22 12:02:31 +02:00
Philippe Teuwen
7cb8fd3833 verify return of pn53x_set_property_bool()
Problem reported by Coverity:
CID 1090321 (#1 of 1): Unchecked return value (CHECKED_RETURN)
  unchecked_value: No check of the return value of "pn53x_set_property_bool(pnd, NP_INFINITE_SELECT, true)".
2013-09-22 03:36:45 +02:00
Philippe Teuwen
2e51318bcb pn53x_usb driver: verify return of pn53x_build_frame()
Problem reported by Coverity:
CID 1090322 (#1 of 1): Unchecked return value (CHECKED_RETURN)
  unchecked_value: No check of the return value of "pn53x_build_frame(abtFrame, &szFrame, pbtData, szData)".
2013-09-22 03:31:50 +02:00
Philippe Teuwen
90160d6507 Fix possible overflow
Note that this could happen e.g. if a fake PN533 sends malicious frames over USB

CID 1090329 (#1 of 1): Overflowed return value (INTEGER_OVERFLOW)
  overflow_sink: Overflowed or truncated value (or a value computed from an overflowed or truncated value) "res" used as return value.
2013-09-22 03:26:33 +02:00
Philippe Teuwen
618ca1e92b Remove dead code
Problem reported by Coverity:
at_most: At condition "io_res < 0", the value of "io_res" must be at most -1.
dead_error_condition: The condition "io_res < 0" must be true.
CID 1090328 (#1 of 1): Logically dead code (DEADCODE)
  dead_error_line: Execution cannot reach this expression "0" inside statement "return (io_res < 0) ? io_re...".
2013-09-22 03:13:09 +02:00
Philippe Teuwen
54729fb458 Remove dead code
Problem reported by Coverity:
  dead_error_condition: The switch value "nbr" cannot be "NBR_UNDEFINED".
  CID 1090326 (#1 of 2): Logically dead code (DEADCODE)
  dead_error_begin: Execution cannot reach this statement "case NBR_UNDEFINED:".
2013-09-22 03:09:08 +02:00
Philippe Teuwen
cedbefb880 nfc-relay-picc: sleep() expects unsigned int
This avoids Coverity being unhappy that only lower bound was defined, well I hope

lower_bounds: Checking lower bounds of signed scalar "waiting_time" by "waiting_time > 0".
CID 1090343 (#1 of 1): Untrusted value as argument (TAINTED_SCALAR)
  tainted_data: Passing tainted variable "waiting_time" to a tainted sink.
  sleep(waiting_time);
2013-09-22 03:00:58 +02:00
Philippe Teuwen
61884967ea nfc-mfclassic: verify return of nfc_initiator_select_passive_target()
Problem reported by Coverity:
CID 1090323 (#1 of 1): Unchecked return value (CHECKED_RETURN)
  unchecked_value: No check of the return value of "nfc_initiator_select_passive_target(pnd, nmMifare, nt.nti.nai.abtUid, nt.nti.nai.szUidLen, NULL)".
2013-09-22 02:45:23 +02:00
Philippe Teuwen
a4f466df06 Verify return of nfc_device_set_property_bool()
Problem reported by Coverity:
CID 1090325 (#1 of 1): Unchecked return value (CHECKED_RETURN)
  unchecked_value: No check of the return value of "nfc_device_set_property_bool(pnd, NP_AUTO_ISO14443_4, false)".
2013-09-22 02:41:11 +02:00
Philippe Teuwen
e2135dbaa5 pn53x-sam: fix truncated stdio return value
Problem reported by Coverity:
CID 1090318 (#1 of 1): Truncated stdio return value (CHAR_IO)
char_io: Assigning the return value of "getchar(void)" to char "input" truncates its value
2013-09-22 02:38:17 +02:00
Philippe Teuwen
679897d0a1 nfc-emulate-forum-tag4: fix TOCTOU
Hopefully fix TOCTOU by calling fopen() before stat()

At least this should prevent Coverity to complain about it:
CID 1090346 (#1 of 1): Time of check time of use (TOCTOU)
  fs_check_call: Calling function "stat(char const *, struct stat *)" to perform check on "filename".
  toctou: Calling function "fopen(char const * restrict, char const * restrict)" that uses "filename" after a check function. This can cause a time-of-check, time-of-use race condition.

Note that it seems pretty hard to avoid completely:
https://en.wikipedia.org/wiki/Time_of_check_to_time_of_use#Preventing_TOCTTOU
2013-09-22 02:29:07 +02:00
Philippe Teuwen
feb5f37aa3 nfc-read-forum-tag3: remove redundant error
switch case was redundant as getopt was already telling the issue:

  nfc-read-forum-tag3: option requires an argument -- 'o'
  Option -o requires an argument.

This fixes also a problem reported by Coverity about missing break:

CID 1090330 (#1 of 1): Missing break in switch (MISSING_BREAK)
  unterminated_case: This case (value 63) is not terminated by a 'break' statement.
2013-09-22 02:14:08 +02:00
Philippe Teuwen
70048a0b2c uart.c: check return of read()
Fix warning
uart.c:146:3: warning: ignoring return value of 'read', declared with attribute warn_unused_result [-Wunused-result]

Also reported by Coverity:
CID undefined (#1 of 1): Ignoring number of bytes read (CHECKED_RETURN)
  check_return: "read(int, void *, size_t)" returns the number of bytes read, but it is ignored.
2013-09-22 02:06:58 +02:00
Philippe Teuwen
b5d76a327d Fix strcpy into fixed size buffer in conf.c
Problem reported by Coverity:

CID 1090340 (#1 of 2): Copy into fixed size buffer (STRING_OVERFLOW)
  fixed_size_dest: You might overrun the 256 byte fixed-size string "context->user_defined_devices[context->user_defined_device_count - 1U].name" by copying "value" without checking the length.
  parameter_as_source: Note: This defect has an elevated risk because the source argument is a parameter of the current function.
CID 1090340 (#2 of 2): Copy into fixed size buffer (STRING_OVERFLOW)[select issue]
2013-09-22 01:57:58 +02:00
Philippe Teuwen
d9854cfdd9 Fix out-of-bounds access in driver acr122_pcsc
Problem reported by Coverity:
CID 1091328 (#1 of 1): Out-of-bounds access (OVERRUN)
  overrun-buffer-arg: Overrunning buffer pointed to by "&abtTxBuf[6]" of 271 bytes by passing it to a function which accesses it at byte offset 271 using argument "szData" (which evaluates to 266).
2013-09-22 01:47:15 +02:00
Philippe Teuwen
d9b531f50f Verify return of nfc_device_set_property_bool()
Problem reported by Coverity
CID 1090319 (#1 of 1): Unchecked return value (CHECKED_RETURN)
  unchecked_value: No check of the return value of "nfc_device_set_property_bool(pnd, NP_EASY_FRAMING, nt.nti.nai.btSak & 0x20)".
CID 1090320 (#1 of 1): Unchecked return value (CHECKED_RETURN)
  unchecked_value: No check of the return value of "nfc_device_set_property_bool(dev, NP_HANDLE_CRC, false)".
CID 1090324 (#1 of 2): Unchecked return value (CHECKED_RETURN)
  unchecked_value: No check of the return value of "nfc_device_set_property_bool(pnd, NP_ACTIVATE_FIELD, true)".
CID 1090325 (#1 of 1): Unchecked return value (CHECKED_RETURN)
  unchecked_value: No check of the return value of "nfc_device_set_property_bool(pnd, NP_AUTO_ISO14443_4, false)".
2013-09-22 01:31:45 +02:00
Philippe Teuwen
ddf58f2d69 Changing conditions to avoid Coverity to complain in artificial situations
CID 1090331 (#1 of 1): Out-of-bounds access (OVERRUN)
11. overrun-buffer-arg: Overrunning array "pnti->nai.abtUid" of 10 bytes by passing it to a function which accesses it at byte offset 11 using argument "pnti->nai.szUidLen" (which evaluates to 12).
2013-09-20 00:13:21 +02:00
Philippe Teuwen
a5e7dec797 Initialize array to keep Coverity happy
as Coverity fails seeing that szTargetTypes will always be = 0 in the case believed to lead to reading unitialized data in apttTargetTypes.

CID 1090347 (#1 of 1): Uninitialized scalar variable (UNINIT)
4. uninit_use_in_call: Using uninitialized element of array "apttTargetTypes" when calling "pn53x_InAutoPoll(struct nfc_device *, pn53x_target_type const *, size_t const, uint8_t const, uint8_t const, nfc_target *, int const)".
2013-09-20 00:01:41 +02:00
Philippe Teuwen
30fdf1d9c2 Fix unbounded source buffer
source could be larger than destination

Problem reported by Coverity
CID 1090342 (#1 of 1): Unbounded source buffer (STRING_SIZE)
10. string_size: Passing string "envvar" of unknown size to "strcpy(char * restrict, char const * restrict)", which expects a string of a particular size.
2013-09-19 23:48:44 +02:00
Philippe Teuwen
9240770ab1 acr122s_scan should not return -1 if of type size_t 2013-09-19 23:39:03 +02:00
Philippe Teuwen
3d040d73f3 Fix memory leak
Problems reported by Coverity:

CID 1090335 (#1 of 1): Resource leak (RESOURCE_LEAK)
24. leaked_storage: Variable "acPorts" going out of scope leaks the storage it points to.

CID 1090336 (#1 of 1): Resource leak (RESOURCE_LEAK)
10. leaked_storage: Variable "acPorts" going out of scope leaks the storage it points to.

CID 1090337 (#1 of 1): Resource leak (RESOURCE_LEAK)
21. leaked_storage: Variable "i2cPorts" going out of scope leaks the storage it points to.

CID 1090338 (#1 of 1): Resource leak (RESOURCE_LEAK)
21. leaked_storage: Variable "acPorts" going out of scope leaks the storage it points to.

CID 1090339 (#1 of 1): Resource leak (RESOURCE_LEAK)
23. leaked_storage: Variable "acPorts" going out of scope leaks the storage it points to.
2013-09-19 23:34:52 +02:00