Описание
Метод update_credential принимает metadata: dict | None = None и делает self._credentials[name]["metadata"].update(metadata). Если у существующего credential нет ключа "metadata", будет KeyError.
Где
packages/libraries/src/rpaforge_libraries/Credentials/library.py
def update_credential(
self, name, username=None, password=None, metadata=None
):
...
if metadata is not None:
self._credentials[name]["metadata"].update(metadata)
# Если "metadata" нет в словаре -> KeyError
Воспроизведение
- Создать credential через
store_credential с metadata=None
- Вызвать
update_credential с metadata={"key": "val"}
- Получить
KeyError: 'metadata'
Фикс
if metadata is not None:
existing = self._credentials[name].setdefault("metadata", {})
existing.update(metadata)
Severity
🔵 LOW — Редкий edge case, но возможная потеря данных.
Описание
Метод
update_credentialпринимаетmetadata: dict | None = Noneи делаетself._credentials[name]["metadata"].update(metadata). Если у существующего credential нет ключа"metadata", будетKeyError.Где
packages/libraries/src/rpaforge_libraries/Credentials/library.pyВоспроизведение
store_credentialсmetadata=Noneupdate_credentialсmetadata={"key": "val"}KeyError: 'metadata'Фикс
Severity
🔵 LOW — Редкий edge case, но возможная потеря данных.