From 52ceae8d6ca99b3521d6d5cd3e20592f00870945 Mon Sep 17 00:00:00 2001 From: Dmitry Shachnev Date: Sun, 7 Aug 2022 19:19:03 +0300 Subject: [PATCH 1/2] Fix regression which made libsecret backend unusable in v23.8.0 libsecret/secret-schema.h has this enum: typedef enum { SECRET_SCHEMA_ATTRIBUTE_STRING = 0, SECRET_SCHEMA_ATTRIBUTE_INTEGER = 1, SECRET_SCHEMA_ATTRIBUTE_BOOLEAN = 2, } SecretSchemaAttributeType; Because of this, bool(Secret.SchemaAttributeType.STRING) evaluates to False. So when we do this in schema property, _query code ignores the second argument: self._query( Secret.SchemaAttributeType.STRING, Secret.SchemaAttributeType.STRING, application=Secret.SchemaAttributeType.STRING, ) And it causes any use of libsecret backend to fail with this error: >>> import keyring.backends.libsecret >>> k = keyring.backends.libsecret.Keyring() >>> k.set_password('foo', 'bar', 'baz') (process:26311): libsecret-CRITICAL **: 19:22:53.299: secret_password_storev_sync: invalid username attribute for org.freedesktop.Secret.Generic schema Traceback (most recent call last): File "", line 1, in File "/home/dmitry/upstream/keyring/keyring/backends/libsecret.py", line 98, in set_password raise PasswordSetError("Failed to store password!") keyring.errors.PasswordSetError: Failed to store password! --- keyring/backend.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/keyring/backend.py b/keyring/backend.py index 05b5d5ab..731b5073 100644 --- a/keyring/backend.py +++ b/keyring/backend.py @@ -250,7 +250,7 @@ def _query(self, service, username=None, **base): scheme['username']: username, scheme['service']: service, } - if username + if username is not None else { scheme['service']: service, }, From 4b2d9e559f7b6fa79002859937b91213cad80ef4 Mon Sep 17 00:00:00 2001 From: "Jason R. Coombs" Date: Sun, 7 Aug 2022 16:16:36 -0400 Subject: [PATCH 2/2] Update changelog --- CHANGES.rst | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/CHANGES.rst b/CHANGES.rst index 0e3cff47..1c3d5a49 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -1,3 +1,8 @@ +v23.8.1 +------- + +* #587: Fix regression in ``libsecret``. + v23.8.0 -------