Commit graph

573 commits

Author SHA1 Message Date
Romain Tartière
d946230aec Fix compiler warning. 2015-05-11 18:39:32 +02:00
Romain Tartière
b710ba5abd Fix memory leak. 2015-04-20 14:43:15 +02:00
Romain Tartière
4acd3ac72b Remove now useless extra buffer size. 2015-04-20 14:41:31 +02:00
Romain Tartière
a0ba196b49 Fix buffer overrun when reading record files.
When reading from a record file, length is set to the number of records to
read, and needs to be multiplied by the record size in order to allocate
enougth memory for reading the response.
2015-04-15 17:14:02 +02:00
Romain Tartière
f6c7f7692b Check malloc(3) return value. 2015-04-15 17:11:14 +02:00
Romain Tartière
65894ca3b4 Unbreak automake.
Now that README is named README.md for Github integration, automake will fail
if not told we use a foreign way of naming files.
2015-04-13 15:10:35 +02:00
Romain Tartière
515fc66050 Update and rename README to README.md 2015-04-13 14:34:13 +02:00
Romain Tartière
ffde4d4d92 Fix mifare_desfire_get_[iso_]file_ids() prototype.
The "files" parameter is not an array of pointer to uint8_t (uint8_t
*files[]), but rather an pointer to an array of uint8_t (uint8_t
(*files)[]).  Since this syntax confuses the compiler (the program
attempt to assign a value to what "files" is pointing to, which is
supposed to be an array, which is not assignable), declare "files" as a
pointer to a pointer to uint8_t (uint8_t **files) which makes everybody
happy.

Fixes issue 26.
2014-04-16 02:35:40 +02:00
Romain Tartière
27d33775dc Don't make me think! 2014-04-16 02:02:50 +02:00
Romain Tartière
57e1fceb6b Prevent mifare_desfire_read_data() overflow.
Depending on the communication settings, mifare_desfire_read_data() may
write more than the provided "length" bytes to the "data" buffer,
possibly causing data corruption or crashes if no special care is taken.

Since the test suite is precisely a "no special care is taken" example,
assume only "length" bytes can be written to the "data" buffer and rely
on a temporary buffer for cryptographic operations.

Fixes  issue 28.
2014-04-16 01:54:14 +02:00
Romain Tartière
8290d3d8cc Keys are supposed to be const. 2014-04-13 20:29:57 +02:00
Romain Tartière
32c585db69 rnda & rndb are 16 bytes long in 3K3DS and AES mode. 2014-04-13 20:01:44 +02:00
Romain Tartière
646a20da34 Add missing break.
This had no incidence on the code, but this change make things more
consistent.
2014-04-13 19:47:56 +02:00
Romain Tartière
c42dfce78d Style. 2014-04-13 19:41:17 +02:00
Romain Tartière
e848cf9ced Ignore a few more files. 2014-04-06 14:14:12 +02:00
Romain Tartière
510d8a4b85 Reindent after last commit. 2014-04-06 14:14:01 +02:00
Romain Tartière
3085408bf2 Check malloc() return value.
Fixes issue 25.
2014-04-06 13:38:12 +02:00
Robert Clausecker
0ad6a09cda Tell apart malloc failure from no application in mifare_application_write() 2014-03-19 18:55:09 +01:00
Robert Clausecker
3e53c7811a Check for NULL pointer in mifare_application_free()
This changeset alters the return type of mifare_application_free() from void to
int. This change is necessary to be able to inform the caller whether the call
to malloc() inside mifare_application_find() failed.
2014-03-19 18:55:04 +01:00
Philippe Teuwen
c4e657f8cd Return EACCES when authentication to a DESFire tag fails
Note that in case the tag didn't authenticate us, we've also
tag->last_picc_error = AUTHENTICATION_ERROR
But in the unlikely event that we didn't authenticate the tag
(e.g. if the tag is fake and pretends the auth was ok)
only errno = EACCES will be set
2014-03-14 22:50:17 +01:00
Philippe Teuwen
c72a55993b Return EACCES when authentication to a MIFARE Classic tag fails 2014-03-14 22:31:48 +01:00
Robert Clausecker
184c5dcbdf Return EACCES when authentication to an ultralight tag fails 2014-03-13 14:07:41 +01:00
Philippe Teuwen
7ae729a65d Use 424kbits/s when talking to DESFire
PN532 does not support 847kbits/s, oops
2014-03-11 22:09:53 +01:00
Philippe Teuwen
e6b80856c9 Use 847kbits/s when talking to DESFire
This has effects only with libnfc >= libnfc-1.7.1-5-g108de27
2014-03-11 00:16:07 +01:00
Philippe Teuwen
7933adc57e mifare_desfire_connect(): select Desfire AID 2014-02-11 17:24:50 +01:00
Philippe Teuwen
2960f704f8 Let's redirect NFC phones to Desfire as they're ISO14443-4 2014-02-11 17:24:38 +01:00
Philippe Teuwen
dbb88cd184 mifare_cryto_postprocess_data: add safety checks 2014-01-27 18:24:55 +01:00
Philippe Teuwen
e797ee2a2e Add freefare_selected_tag_is_present() 2014-01-27 16:32:23 +01:00
Maxim Chechel
9ee3687280 Support for Dual Interface cards like UICC/eSE SmartMX based emulation 2013-12-18 19:14:50 +04:00
Romuald Conty
530ccbc193 Update changelog for 0.4.0 2013-12-04 11:03:40 +01:00
Romuald Conty
cd481cb70e Use bzip2 instead of gzip compression algorithm 2013-12-04 11:03:33 +01:00
Romuald Conty
c3d0942c3b Updates invalid email address 2013-12-03 16:22:23 +01:00
Don Coleman
14219ab145 add -y flag to mifare-classic-write-ndef
write without confirmation
2013-07-14 22:55:56 +02:00
Philippe Teuwen
f86ad5a183 mifare-classic-read-ndef: skip NULL TLV & proprio TLV 2013-07-14 21:18:28 +02:00
Philippe Teuwen
ea496c441d Merge remote-tracking branch 'dheidler/master'
* dheidler/master:
  mifare-classic-format option: read keys from dump
2013-06-20 14:27:58 +02:00
Philippe Teuwen
f0c4db2f4b Fix MIFARE_ULTRALIGHT_C_PAGE_COUNT_READ
Fixes issue #12
Reading page 0x2b of an ULC was refused
2013-06-20 00:00:55 +02:00
Jan Engelhardt
089b6006b1 libfreefare: resolve compiler warning on breakage of strict aliasing
gcc warns:
mifare_classic.c:353:45: warning: dereferencing type-punned pointer
will break strict-aliasing rules [-Wstrict-aliasing]

There is another problem with this code: "data", being a 16-byte
array, may not be suitably aligned for the other types in the union.
This patch resolves this.
2013-06-05 19:37:32 +02:00
Dominik Heidler
cc36619f13 mifare-classic-format option: read keys from dump 2013-05-03 09:58:22 +02:00
Philippe Teuwen
00e999dd52 Ugly fix as workaround of FIXME mifare_desfire.c read_data() 2013-04-29 00:51:06 +02:00
Philippe Teuwen
29235a0295 Debian: fix libnfc dependency now that rc7 has a name 2013-04-05 16:18:58 +02:00
Philippe Teuwen
296ab78fad Debian: allow compilation against libnfc RC releases 2013-03-31 00:02:01 +01:00
Philippe Teuwen
061b41ed2d Align with libnfc API change: test nfc_init() result 2013-03-30 18:07:34 +01:00
Philippe Teuwen
86c194ef6c Changelog from git2cl, to be beautified 2013-02-18 17:13:40 +01:00
Philippe Teuwen
2d3cff48e7 Add support for 7-byte UID MIFARE Classic cards 2013-01-29 23:26:32 +01:00
Philippe Teuwen
42e731b492 DF cutter tests: detect if DF is too small for tests 2013-01-29 22:47:50 +01:00
Philippe Teuwen
bfa8bc69fc Document how to run cutter tests, all pass now 2013-01-29 22:05:27 +01:00
Philippe Teuwen
57f93fbeda Fix buffer size in desfire_get_version, now cutter is happy on DF EV1
38 test(s), 8120 assertion(s), 0 failure(s), 0 error(s), 0 pending(s), 19 omission(s), 0 notification(s)
100% passed
2013-01-29 22:05:27 +01:00
Philippe Teuwen
601b75333f DF EV1 Cutter tests must be done with at least a 4k card, still 2 tests failed
38 test(s), 8041 assertion(s), 2 failure(s), 0 error(s), 0 pending(s), 19 omission(s), 0 notification(s)
94.7368% passed

.errorlibnfc.chip.pn53xBuffer size is too short: 23o available(s), 24o needed
F
===============================================================================
Failure: test_mifare_desfire_ev1_aes2
Wrong return value
<-1 != res>
expected: <-1>
  actual: <-1>
./test_mifare_desfire_ev1.c:75: test_mifare_desfire_ev1_aes2(): cut_assert_not_equal_int(-1, res)
===============================================================================
F
===============================================================================
Failure: test_mifare_desfire_ev1_iso
Wrong DF count
<count == 0>
expected: <1>
  actual: <0>
./test_mifare_desfire_ev1_iso.c:48: test_mifare_desfire_ev1_iso(): cut_assert_equal_int(count, 0, cut_test_context_set_current_result_user_message( cut_test_context_current_
===============================================================================
2013-01-29 22:05:27 +01:00
Philippe Teuwen
fbb5434f24 Adjusting DESFire frame sizes, cutter still not entirely satisfied
Desfire (old) 4k:

write large ndef OK
read large ndef OK
cutter: OK
31 test(s), 2576 assertion(s), 0 failure(s), 0 error(s), 0 pending(s), 26 omission(s), 0 notification(s)
100% passed

Desfire EV1 2k:

write large ndef OK
read large ndef OK
cutter: FAIL
38 test(s), 5257 assertion(s), 6 failure(s), 0 error(s), 0 pending(s), 19 omission(s), 0 notification(s)
84.2105% passed
2013-01-29 22:05:27 +01:00
Romain Tartière
5fa9f2cbc3 Remove a few static.
Cutter can't test suche methods.
2013-01-28 15:55:22 +01:00