Skip to content

Commit a44f380

Browse files
committed
store/keychain: linux service only unlock if collection is locked
Signed-off-by: Alano Terblanche <18033717+Benehiko@users.noreply.github.com>
1 parent ea55e3d commit a44f380

1 file changed

Lines changed: 16 additions & 4 deletions

File tree

store/keychain/keychain_linux.go

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,10 @@ func (k *keychainStore[T]) Delete(ctx context.Context, id store.ID) error {
9494
}
9595

9696
err = k.isCollectionLocked(service)
97-
if err != nil {
97+
if err != nil && !errors.Is(err, errCollectionLocked) {
98+
return err
99+
}
100+
if errors.Is(err, errCollectionLocked) {
98101
if err := service.Unlock([]dbus.ObjectPath{objectPath}); err != nil {
99102
return err
100103
}
@@ -131,7 +134,10 @@ func (k *keychainStore[T]) Get(ctx context.Context, id store.ID) (store.Secret,
131134
}
132135

133136
err = k.isCollectionLocked(service)
134-
if err != nil {
137+
if err != nil && !errors.Is(err, errCollectionLocked) {
138+
return nil, err
139+
}
140+
if errors.Is(err, errCollectionLocked) {
135141
if err := service.Unlock([]dbus.ObjectPath{objectPath}); err != nil {
136142
return nil, err
137143
}
@@ -178,7 +184,10 @@ func (k *keychainStore[T]) GetAll(ctx context.Context) (map[store.ID]store.Secre
178184
}
179185

180186
err = k.isCollectionLocked(service)
181-
if err != nil {
187+
if err != nil && !errors.Is(err, errCollectionLocked) {
188+
return nil, err
189+
}
190+
if errors.Is(err, errCollectionLocked) {
182191
if err := service.Unlock([]dbus.ObjectPath{objectPath}); err != nil {
183192
return nil, err
184193
}
@@ -243,7 +252,10 @@ func (k *keychainStore[T]) Save(ctx context.Context, id store.ID, secret store.S
243252
}
244253

245254
err = k.isCollectionLocked(service)
246-
if err != nil {
255+
if err != nil && !errors.Is(err, errCollectionLocked) {
256+
return err
257+
}
258+
if errors.Is(err, errCollectionLocked) {
247259
if err := service.Unlock([]dbus.ObjectPath{objectPath}); err != nil {
248260
return err
249261
}

0 commit comments

Comments
 (0)