Skip to content

Commit 6d69a2c

Browse files
committed
Fix out-of-bound reading in parity
1 parent 6be5559 commit 6d69a2c

File tree

1 file changed

+4
-4
lines changed

1 file changed

+4
-4
lines changed

client/src/wiegand_formats.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -53,12 +53,12 @@ Card Number 11111111111111111111 = 0FFFFF
5353
//E E E E E |E E E E E |EO O O O O| O O O O O| O
5454
set_bit_by_position(packed,
5555
evenparity32(
56-
get_nonlinear_field(packed, 16, (uint8_t[]) {2, 4, 6, 8, 10, 12, 14, 16, 18, 20}))
56+
get_nonlinear_field(packed, 10, (uint8_t[]) {2, 4, 6, 8, 10, 12, 14, 16, 18, 20}))
5757
, 0);
5858

5959
set_bit_by_position(packed,
6060
oddparity32(
61-
get_nonlinear_field(packed, 16, (uint8_t[]) {21, 23, 25, 27, 29, 31, 33, 35, 37, 39}))
61+
get_nonlinear_field(packed, 10, (uint8_t[]) {21, 23, 25, 27, 29, 31, 33, 35, 37, 39}))
6262
, 41);
6363
if (preamble)
6464
return add_HID_header(packed);
@@ -76,9 +76,9 @@ static bool Unpack_Defcon32(wiegand_message_t *packed, wiegand_card_t *card) {
7676

7777
card->ParityValid =
7878
(get_bit_by_position(packed, 41) == oddparity32(
79-
get_nonlinear_field(packed, 16, (uint8_t[]) {21, 23, 25, 27, 29, 31, 33, 35, 37, 39})))&&
79+
get_nonlinear_field(packed, 10, (uint8_t[]) {21, 23, 25, 27, 29, 31, 33, 35, 37, 39})))&&
8080
(get_bit_by_position(packed, 0) ==
81-
evenparity32(get_nonlinear_field(packed, 16, (uint8_t[]) {2, 4, 6, 8, 10, 12, 14, 16, 18, 20})));
81+
evenparity32(get_nonlinear_field(packed, 10, (uint8_t[]) {2, 4, 6, 8, 10, 12, 14, 16, 18, 20})));
8282
return true;
8383
}
8484

0 commit comments

Comments
 (0)