From 2b81184b428ff4d4015b54a51ff6bdd7dcf41b82 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marco=20Trevisan=20=28Trevi=C3=B1o=29?= Date: Wed, 27 Jan 2021 17:06:29 +0100 Subject: [PATCH] device: Fail with any non-zero return value on storage print_data_save() When saving the prints we use g_file_set_contents under the hood and in case return its error code that is a positive value. So in such case we don't fail if we have a write failure at the end of the enrollment. While we could ensure in file storage to always return a negative value, it's always better to ensure that is has to be 0 when we didn't get an error. Add a test checking for this case. --- src/device.c | 2 +- tests/fprintd.py | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/device.c b/src/device.c index 806a895..e60902a 100644 --- a/src/device.c +++ b/src/device.c @@ -1791,7 +1791,7 @@ enroll_cb (FpDevice *dev, GAsyncResult *res, void *user_data) { int r; r = store.print_data_save (print); - if (r < 0) + if (r != 0) name = "enroll-failed"; } diff --git a/tests/fprintd.py b/tests/fprintd.py index c59d4ff..07d3f46 100644 --- a/tests/fprintd.py +++ b/tests/fprintd.py @@ -1603,6 +1603,10 @@ class FPrintdVirtualDeviceClaimedTest(FPrintdVirtualDeviceBaseTest): self.enroll_image('whorl', expected_result='enroll-failed') + def test_enroll_write_print_error(self): + self.set_print_not_writable('testuser', FPrint.Finger.LEFT_THUMB) + self.enroll_image('whorl', expected_result='enroll-failed', finger='left-thumb') + def test_verify_invalid_storage_dir(self): self.enroll_image('whorl') os.chmod(self.state_dir, mode=0o000)