From 62448492af7a3412267cf68be55e24d7eb530855 Mon Sep 17 00:00:00 2001
From: hermanlin <herman.lin@emc.com.tw>
Date: Tue, 10 Aug 2021 16:22:54 +0800
Subject: [PATCH] elanmoc: Adjustments to protocol change (passing an empty
 user ID)

---
 libfprint/drivers/elanmoc/elanmoc.c |   2 +-
 libfprint/drivers/elanmoc/elanmoc.h |   2 +-
 tests/elanmoc/custom.pcapng         | Bin 29940 -> 19368 bytes
 tests/elanmoc/device                | 334 ++++++++++++++--------------
 4 files changed, 170 insertions(+), 168 deletions(-)

diff --git a/libfprint/drivers/elanmoc/elanmoc.c b/libfprint/drivers/elanmoc/elanmoc.c
index 49ea267..2a9b526 100644
--- a/libfprint/drivers/elanmoc/elanmoc.c
+++ b/libfprint/drivers/elanmoc/elanmoc.c
@@ -431,7 +431,7 @@ elan_enroll_run_state (FpiSsm *ssm, FpDevice *dev)
     case MOC_ENROLL_REENROLL_CHECK:
       data = fpi_ssm_get_data (ssm);
       cmd_buf = elanmoc_compose_cmd (&elanmoc_check_reenroll_cmd);
-      cmd_buf[4] = data[16];
+      memcpy (cmd_buf + 3, data, ELAN_USERDATE_SIZE);
       elanmoc_get_cmd (dev, cmd_buf, elanmoc_check_reenroll_cmd.cmd_len, elanmoc_check_reenroll_cmd.resp_len, 0, elanmoc_reenroll_cb);
       break;
 
diff --git a/libfprint/drivers/elanmoc/elanmoc.h b/libfprint/drivers/elanmoc/elanmoc.h
index 84eed7e..daf630e 100644
--- a/libfprint/drivers/elanmoc/elanmoc.h
+++ b/libfprint/drivers/elanmoc/elanmoc.h
@@ -135,7 +135,7 @@ static const struct elanmoc_cmd elanmoc_set_mod_cmd = {
 
 static const struct elanmoc_cmd elanmoc_check_reenroll_cmd = {
   .cmd_header = {0x40, 0xff, 0x22},
-  .cmd_len = 5,
+  .cmd_len = 3 + ELAN_USERDATE_SIZE,
   .resp_len = 2,
 };
 
diff --git a/tests/elanmoc/custom.pcapng b/tests/elanmoc/custom.pcapng
index 63d2a4588c268cb0daee4036358410507c2d0329..a41ac1626fe77062bf0bbfe81773715dd8a9a222 100644
GIT binary patch
literal 19368
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
QnE!q=SN$Uy0ZttM1Ehp|k^lez

literal 29940
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

diff --git a/tests/elanmoc/device b/tests/elanmoc/device
index 8876b8c..8d47c2d 100644
--- a/tests/elanmoc/device
+++ b/tests/elanmoc/device
@@ -1,14 +1,14 @@
-P: /devices/pci0000:00/0000:00:14.0/usb1/1-3
-N: bus/usb/001/017=1201000200000040F3047E0C06030102000109025300010100A0320904000008FF0000000921100100012215000705810240000107050102400001070582024000010705020240000107058302400001070503024000010705840240000107050402400001
-E: DEVNAME=/dev/bus/usb/001/017
+P: /devices/pci0000:00/0000:00:14.0/usb1/1-1
+N: bus/usb/001/010=1201000200000040F3047E0C05030102000109025300010103A0320904000008FF0000000921100100012215000705810240000107050102400001070582024000010705020240000107058302400001070503024000010705840240000107050402400001
+E: DEVNAME=/dev/bus/usb/001/010
 E: DEVTYPE=usb_device
 E: DRIVER=usb
-E: PRODUCT=4f3/c7e/306
+E: PRODUCT=4f3/c7e/305
 E: TYPE=0/0/0
 E: BUSNUM=001
-E: DEVNUM=017
+E: DEVNUM=010
 E: MAJOR=189
-E: MINOR=16
+E: MINOR=9
 E: SUBSYSTEM=usb
 E: ID_VENDOR=ELAN
 E: ID_VENDOR_ENC=ELAN
@@ -16,208 +16,210 @@ E: ID_VENDOR_ID=04f3
 E: ID_MODEL=ELAN:ARM-M4
 E: ID_MODEL_ENC=ELAN:ARM-M4
 E: ID_MODEL_ID=0c7e
-E: ID_REVISION=0306
+E: ID_REVISION=0305
 E: ID_SERIAL=ELAN_ELAN:ARM-M4
 E: ID_BUS=usb
 E: ID_USB_INTERFACES=:ff0000:
 E: ID_VENDOR_FROM_DATABASE=Elan Microelectronics Corp.
-E: ID_PATH=pci-0000:00:14.0-usb-0:3
-E: ID_PATH_TAG=pci-0000_00_14_0-usb-0_3
-E: ID_FOR_SEAT=usb-pci-0000_00_14_0-usb-0_3
-E: TAGS=:seat:
-E: CURRENT_TAGS=:seat:
-A: authorized=1\n
-A: avoid_reset_quirk=0\n
-A: bConfigurationValue=1\n
-A: bDeviceClass=00\n
-A: bDeviceProtocol=00\n
-A: bDeviceSubClass=00\n
-A: bMaxPacketSize0=64\n
-A: bMaxPower=100mA\n
-A: bNumConfigurations=1\n
-A: bNumInterfaces= 1\n
-A: bcdDevice=0306\n
-A: bmAttributes=a0\n
-A: busnum=1\n
-A: configuration=
-H: descriptors=1201000200000040F3047E0C06030102000109025300010100A0320904000008FF0000000921100100012215000705810240000107050102400001070582024000010705020240000107058302400001070503024000010705840240000107050402400001
-A: dev=189:16\n
-A: devnum=17\n
-A: devpath=3\n
+E: ID_PATH=pci-0000:00:14.0-usb-0:1
+E: ID_PATH_TAG=pci-0000_00_14_0-usb-0_1
+A: authorized=1
+A: avoid_reset_quirk=0
+A: bConfigurationValue=1
+A: bDeviceClass=00
+A: bDeviceProtocol=00
+A: bDeviceSubClass=00
+A: bMaxPacketSize0=64
+A: bMaxPower=100mA
+A: bNumConfigurations=1
+A: bNumInterfaces= 1
+A: bcdDevice=0305
+A: bmAttributes=a0
+A: busnum=1
+A: configuration=add909c9-e67e-4126-a6f7-1e31179e27d9
+H: descriptors=1201000200000040F3047E0C05030102000109025300010103A0320904000008FF0000000921100100012215000705810240000107050102400001070582024000010705020240000107058302400001070503024000010705840240000107050402400001
+A: dev=189:9
+A: devnum=10
+A: devpath=1
 L: driver=../../../../../bus/usb/drivers/usb
-L: firmware_node=../../../../LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:1c/device:1d/device:20
-A: idProduct=0c7e\n
-A: idVendor=04f3\n
-A: ltm_capable=no\n
-A: manufacturer=ELAN\n
-A: maxchild=0\n
-L: port=../1-0:1.0/usb1-port3
-A: power/active_duration=2748\n
-A: power/autosuspend=2\n
-A: power/autosuspend_delay_ms=2000\n
-A: power/connected_duration=18266\n
-A: power/control=auto\n
-A: power/level=auto\n
-A: power/persist=1\n
-A: power/runtime_active_time=2603\n
-A: power/runtime_status=active\n
-A: power/runtime_suspended_time=15422\n
-A: power/wakeup=disabled\n
-A: power/wakeup_abort_count=\n
-A: power/wakeup_active=\n
-A: power/wakeup_active_count=\n
-A: power/wakeup_count=\n
-A: power/wakeup_expire_count=\n
-A: power/wakeup_last_time_ms=\n
-A: power/wakeup_max_time_ms=\n
-A: power/wakeup_total_time_ms=\n
-A: product=ELAN:ARM-M4\n
-A: quirks=0x0\n
-A: removable=removable\n
-A: rx_lanes=1\n
-A: speed=12\n
-A: tx_lanes=1\n
-A: urbnum=12\n
-A: version= 2.00\n
+A: idProduct=0c7e
+A: idVendor=04f3
+A: ltm_capable=no
+A: manufacturer=ELAN
+A: maxchild=0
+L: port=../1-0:1.0/usb1-port1
+A: power/active_duration=94712
+A: power/async=enabled
+A: power/autosuspend=2
+A: power/autosuspend_delay_ms=2000
+A: power/connected_duration=94712
+A: power/control=on
+A: power/level=on
+A: power/persist=1
+A: power/runtime_active_kids=0
+A: power/runtime_active_time=94436
+A: power/runtime_enabled=forbidden
+A: power/runtime_status=active
+A: power/runtime_suspended_time=0
+A: power/runtime_usage=1
+A: power/wakeup=disabled
+A: power/wakeup_abort_count=
+A: power/wakeup_active=
+A: power/wakeup_active_count=
+A: power/wakeup_count=
+A: power/wakeup_expire_count=
+A: power/wakeup_last_time_ms=
+A: power/wakeup_max_time_ms=
+A: power/wakeup_total_time_ms=
+A: product=ELAN:ARM-M4
+A: quirks=0x0
+A: removable=removable
+A: rx_lanes=1
+A: speed=12
+A: tx_lanes=1
+A: urbnum=12
+A: version= 2.00
 
 P: /devices/pci0000:00/0000:00:14.0/usb1
-N: bus/usb/001/001=12010002090001406B1D020012050302010109021900010100E0000904000001090000000705810304000C
+N: bus/usb/001/001=12010002090001406B1D020004050302010109021900010100E0000904000001090000000705810304000C
 E: DEVNAME=/dev/bus/usb/001/001
 E: DEVTYPE=usb_device
 E: DRIVER=usb
-E: PRODUCT=1d6b/2/512
+E: PRODUCT=1d6b/2/504
 E: TYPE=9/0/1
 E: BUSNUM=001
 E: DEVNUM=001
 E: MAJOR=189
 E: MINOR=0
 E: SUBSYSTEM=usb
-E: ID_VENDOR=Linux_5.12.12-300.fc34.x86_64_xhci-hcd
-E: ID_VENDOR_ENC=Linux\x205.12.12-300.fc34.x86_64\x20xhci-hcd
+E: ID_VENDOR=Linux_5.4.0-42-generic_xhci-hcd
+E: ID_VENDOR_ENC=Linux\x205.4.0-42-generic\x20xhci-hcd
 E: ID_VENDOR_ID=1d6b
 E: ID_MODEL=xHCI_Host_Controller
 E: ID_MODEL_ENC=xHCI\x20Host\x20Controller
 E: ID_MODEL_ID=0002
-E: ID_REVISION=0512
-E: ID_SERIAL=Linux_5.12.12-300.fc34.x86_64_xhci-hcd_xHCI_Host_Controller_0000:00:14.0
+E: ID_REVISION=0504
+E: ID_SERIAL=Linux_5.4.0-42-generic_xhci-hcd_xHCI_Host_Controller_0000:00:14.0
 E: ID_SERIAL_SHORT=0000:00:14.0
 E: ID_BUS=usb
 E: ID_USB_INTERFACES=:090000:
 E: ID_VENDOR_FROM_DATABASE=Linux Foundation
-E: ID_AUTOSUSPEND=1
 E: ID_MODEL_FROM_DATABASE=2.0 root hub
 E: ID_PATH=pci-0000:00:14.0
 E: ID_PATH_TAG=pci-0000_00_14_0
 E: ID_FOR_SEAT=usb-pci-0000_00_14_0
 E: TAGS=:seat:
-E: CURRENT_TAGS=:seat:
-A: authorized=1\n
-A: authorized_default=1\n
-A: avoid_reset_quirk=0\n
-A: bConfigurationValue=1\n
-A: bDeviceClass=09\n
-A: bDeviceProtocol=01\n
-A: bDeviceSubClass=00\n
-A: bMaxPacketSize0=64\n
-A: bMaxPower=0mA\n
-A: bNumConfigurations=1\n
-A: bNumInterfaces= 1\n
-A: bcdDevice=0512\n
-A: bmAttributes=e0\n
-A: busnum=1\n
+A: authorized=1
+A: authorized_default=1
+A: avoid_reset_quirk=0
+A: bConfigurationValue=1
+A: bDeviceClass=09
+A: bDeviceProtocol=01
+A: bDeviceSubClass=00
+A: bMaxPacketSize0=64
+A: bMaxPower=0mA
+A: bNumConfigurations=1
+A: bNumInterfaces= 1
+A: bcdDevice=0504
+A: bmAttributes=e0
+A: busnum=1
 A: configuration=
-H: descriptors=12010002090001406B1D020012050302010109021900010100E0000904000001090000000705810304000C
-A: dev=189:0\n
-A: devnum=1\n
-A: devpath=0\n
+H: descriptors=12010002090001406B1D020004050302010109021900010100E0000904000001090000000705810304000C
+A: dev=189:0
+A: devnum=1
+A: devpath=0
 L: driver=../../../../bus/usb/drivers/usb
-L: firmware_node=../../../LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:1c/device:1d
-A: idProduct=0002\n
-A: idVendor=1d6b\n
-A: interface_authorized_default=1\n
-A: ltm_capable=no\n
-A: manufacturer=Linux 5.12.12-300.fc34.x86_64 xhci-hcd\n
-A: maxchild=12\n
-A: power/active_duration=187216979\n
-A: power/autosuspend=0\n
-A: power/autosuspend_delay_ms=0\n
-A: power/connected_duration=187239996\n
-A: power/control=auto\n
-A: power/level=auto\n
-A: power/runtime_active_time=187220224\n
-A: power/runtime_status=active\n
-A: power/runtime_suspended_time=0\n
-A: power/wakeup=disabled\n
-A: power/wakeup_abort_count=\n
-A: power/wakeup_active=\n
-A: power/wakeup_active_count=\n
-A: power/wakeup_count=\n
-A: power/wakeup_expire_count=\n
-A: power/wakeup_last_time_ms=\n
-A: power/wakeup_max_time_ms=\n
-A: power/wakeup_total_time_ms=\n
-A: product=xHCI Host Controller\n
-A: quirks=0x0\n
-A: removable=unknown\n
-A: rx_lanes=1\n
-A: serial=0000:00:14.0\n
-A: speed=480\n
-A: tx_lanes=1\n
-A: urbnum=3372\n
-A: version= 2.00\n
+A: idProduct=0002
+A: idVendor=1d6b
+A: interface_authorized_default=1
+A: ltm_capable=no
+A: manufacturer=Linux 5.4.0-42-generic xhci-hcd
+A: maxchild=12
+A: power/active_duration=74604360
+A: power/async=enabled
+A: power/autosuspend=0
+A: power/autosuspend_delay_ms=0
+A: power/connected_duration=74606456
+A: power/control=auto
+A: power/level=auto
+A: power/runtime_active_kids=4
+A: power/runtime_active_time=74605838
+A: power/runtime_enabled=enabled
+A: power/runtime_status=active
+A: power/runtime_suspended_time=0
+A: power/runtime_usage=0
+A: power/wakeup=disabled
+A: power/wakeup_abort_count=
+A: power/wakeup_active=
+A: power/wakeup_active_count=
+A: power/wakeup_count=
+A: power/wakeup_expire_count=
+A: power/wakeup_last_time_ms=
+A: power/wakeup_max_time_ms=
+A: power/wakeup_total_time_ms=
+A: product=xHCI Host Controller
+A: quirks=0x0
+A: removable=unknown
+A: rx_lanes=1
+A: serial=0000:00:14.0
+A: speed=480
+A: tx_lanes=1
+A: urbnum=490
+A: version= 2.00
 
 P: /devices/pci0000:00/0000:00:14.0
 E: DRIVER=xhci_hcd
 E: PCI_CLASS=C0330
 E: PCI_ID=8086:9DED
-E: PCI_SUBSYS_ID=17AA:2292
+E: PCI_SUBSYS_ID=103C:85EF
 E: PCI_SLOT_NAME=0000:00:14.0
-E: MODALIAS=pci:v00008086d00009DEDsv000017AAsd00002292bc0Csc03i30
+E: MODALIAS=pci:v00008086d00009DEDsv0000103Csd000085EFbc0Csc03i30
 E: SUBSYSTEM=pci
 E: ID_PCI_CLASS_FROM_DATABASE=Serial bus controller
 E: ID_PCI_SUBCLASS_FROM_DATABASE=USB controller
 E: ID_PCI_INTERFACE_FROM_DATABASE=XHCI
 E: ID_VENDOR_FROM_DATABASE=Intel Corporation
-E: ID_AUTOSUSPEND=1
 E: ID_MODEL_FROM_DATABASE=Cannon Point-LP USB 3.1 xHCI Controller
-A: ari_enabled=0\n
-A: broken_parity_status=0\n
-A: class=0x0c0330\n
-H: config=8680ED9D060490021130030C00008000040022EA000000000000000000000000000000000000000000000000AA179222000000007000000000000000FF010000
-A: consistent_dma_mask_bits=64\n
-A: d3cold_allowed=1\n
-A: dbc=disabled\n
-A: device=0x9ded\n
-A: dma_mask_bits=64\n
+A: ari_enabled=0
+A: broken_parity_status=0
+A: class=0x0c0330
+H: config=8680ED9D060490023030030C00008000040030A10000000000000000000000000000000000000000000000003C10EF85000000007000000000000000FF010000FD0134808FC6FF8300000000000000007F6DDC0F00000000181C030400000000316000000000000000000000000000000180C2C1080000000000000000000000059087007802E0FE0000000000000000090014F01000400100000000C10A080000080E00001800008F40020000010000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000B50F300112000000
+A: consistent_dma_mask_bits=64
+A: d3cold_allowed=1
+A: dbc=disabled
+A: device=0x9ded
+A: dma_mask_bits=64
 L: driver=../../../bus/pci/drivers/xhci_hcd
-A: driver_override=(null)\n
-A: enable=1\n
-L: firmware_node=../../LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:1c
-A: irq=128\n
-A: local_cpulist=0-7\n
-A: local_cpus=ff\n
-A: modalias=pci:v00008086d00009DEDsv000017AAsd00002292bc0Csc03i30\n
-A: msi_bus=1\n
-A: msi_irqs/128=msi\n
-A: numa_node=-1\n
-A: pools=poolinfo - 0.1\nbuffer-2048         0    0 2048  0\nbuffer-512          0    0  512  0\nbuffer-128          0    0  128  0\nbuffer-32           0    0   32  0\nxHCI 1KB stream ctx arrays    0    0 1024  0\nxHCI 256 byte stream ctx arrays    0    0  256  0\nxHCI input/output contexts   11   12 2112 12\nxHCI ring segments   58   62 4096 62\nbuffer-2048         0    0 2048  0\nbuffer-512          0    0  512  0\nbuffer-128          6   32  128  1\nbuffer-32           0    0   32  0\n
-A: power/control=on\n
-A: power/runtime_active_time=187221117\n
-A: power/runtime_status=active\n
-A: power/runtime_suspended_time=0\n
-A: power/wakeup=enabled\n
-A: power/wakeup_abort_count=0\n
-A: power/wakeup_active=0\n
-A: power/wakeup_active_count=0\n
-A: power/wakeup_count=0\n
-A: power/wakeup_expire_count=0\n
-A: power/wakeup_last_time_ms=0\n
-A: power/wakeup_max_time_ms=0\n
-A: power/wakeup_total_time_ms=0\n
-A: power_state=D0\n
-A: resource=0x00000000ea220000 0x00000000ea22ffff 0x0000000000140204\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n
-A: revision=0x11\n
-A: subsystem_device=0x2292\n
-A: subsystem_vendor=0x17aa\n
-A: vendor=0x8086\n
+A: driver_override=(null)
+A: enable=1
+A: irq=124
+A: local_cpulist=0-3
+A: local_cpus=f
+A: modalias=pci:v00008086d00009DEDsv0000103Csd000085EFbc0Csc03i30
+A: msi_bus=1
+A: msi_irqs/124=msi
+A: numa_node=-1
+A: pools=poolinfo - 0.1\nbuffer-2048         0    0 2048  0\nbuffer-512          0    0  512  0\nbuffer-128          0   32  128  1\nbuffer-32           0    0   32  0\nxHCI 1KB stream ctx arrays    0    0 1024  0\nxHCI 256 byte stream ctx arrays    0    0  256  0\nxHCI input/output contexts   11   12 2112 12\nxHCI ring segments   54   54 4096 54\nbuffer-2048         0    0 2048  0\nbuffer-512          0    0  512  0\nbuffer-128          9   32  128  1\nbuffer-32           0    0   32  0
+A: power/async=enabled
+A: power/control=auto
+A: power/runtime_active_kids=1
+A: power/runtime_active_time=74606194
+A: power/runtime_enabled=enabled
+A: power/runtime_status=active
+A: power/runtime_suspended_time=0
+A: power/runtime_usage=0
+A: power/wakeup=enabled
+A: power/wakeup_abort_count=0
+A: power/wakeup_active=0
+A: power/wakeup_active_count=0
+A: power/wakeup_count=0
+A: power/wakeup_expire_count=0
+A: power/wakeup_last_time_ms=0
+A: power/wakeup_max_time_ms=0
+A: power/wakeup_total_time_ms=0
+A: resource=0x00000000a1300000 0x00000000a130ffff 0x0000000000140204\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000
+A: revision=0x30
+A: subsystem_device=0x85ef
+A: subsystem_vendor=0x103c
+A: vendor=0x8086