From 665de7813be6c3e3fc4e52b1f5ae9c0e0b0b2d0b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marco=20Trevisan=20=28Trevi=C3=B1o=29?= Date: Sun, 24 Jan 2021 15:38:46 +0100 Subject: [PATCH] fpi-device: Ensure we're receiving a valid number of enroll stages --- libfprint/fpi-device.c | 1 + tests/test-fpi-device.c | 14 +++++++++++++- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/libfprint/fpi-device.c b/libfprint/fpi-device.c index de51192..f59d430 100644 --- a/libfprint/fpi-device.c +++ b/libfprint/fpi-device.c @@ -216,6 +216,7 @@ fpi_device_set_nr_enroll_stages (FpDevice *device, FpDevicePrivate *priv = fp_device_get_instance_private (device); g_return_if_fail (FP_IS_DEVICE (device)); + g_return_if_fail (enroll_stages > 0); priv->nr_enroll_stages = enroll_stages; g_object_notify (G_OBJECT (device), "nr-enroll-stages"); diff --git a/tests/test-fpi-device.c b/tests/test-fpi-device.c index 57e5cf9..ab5a108 100644 --- a/tests/test-fpi-device.c +++ b/tests/test-fpi-device.c @@ -433,7 +433,7 @@ test_driver_set_nr_enroll_stages (void) g_autoptr(FpDevice) device = g_object_new (FPI_TYPE_DEVICE_FAKE, NULL); g_autoptr(GParamSpec) pspec = NULL; FpiDeviceFake *fake_dev = FPI_DEVICE_FAKE (device); - int expected_stages = g_random_int_range (G_MININT32, G_MAXINT32); + int expected_stages = g_random_int_range (1, G_MAXINT32); g_signal_connect (device, "notify::nr-enroll-stages", G_CALLBACK (on_device_notify), NULL); fpi_device_set_nr_enroll_stages (device, expected_stages); @@ -443,6 +443,18 @@ test_driver_set_nr_enroll_stages (void) pspec = g_steal_pointer (&fake_dev->user_data); g_assert_cmpstr (pspec->name, ==, "nr-enroll-stages"); + + g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL, + "*enroll_stages > 0*"); + fpi_device_set_nr_enroll_stages (device, 0); + g_assert_cmpint (fp_device_get_nr_enroll_stages (device), ==, expected_stages); + g_test_assert_expected_messages (); + + g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL, + "*enroll_stages > 0*"); + fpi_device_set_nr_enroll_stages (device, -2); + g_assert_cmpint (fp_device_get_nr_enroll_stages (device), ==, expected_stages); + g_test_assert_expected_messages (); } static void