From 1803a80590bebf5b273df335d1364478a44c8672 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Eivind=20J=C3=B8lsgard?= Date: Wed, 8 Jan 2025 08:32:52 +0100 Subject: [PATCH] lib: modem_key_mgmt: fix duplicate deletion of last cred type MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Because of the ok\r\n in response from modem, the while loop iterates an extra round with scanf not matching any arguments. As the sectag matched the last credential is attempted deleted again and the function return an error. This commit fixes the issue by only deleting the credential in the modem if we match the sectag and credential type in scanf. Signed-off-by: Eivind Jølsgard --- .../releases/release-notes-changelog.rst | 4 ++++ lib/modem_key_mgmt/modem_key_mgmt.c | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/doc/nrf/releases_and_maturity/releases/release-notes-changelog.rst b/doc/nrf/releases_and_maturity/releases/release-notes-changelog.rst index 4aec7205b928..cb45cd80b225 100644 --- a/doc/nrf/releases_and_maturity/releases/release-notes-changelog.rst +++ b/doc/nrf/releases_and_maturity/releases/release-notes-changelog.rst @@ -483,6 +483,10 @@ Modem libraries * Fixed handling of ``%NCELLMEAS`` notification with status 2 (measurement interrupted) and no cells. +* :ref:`modem_key_mgmt` library: + + * Fixed an issue with the :c:func:`modem_key_mgmt_clear` function where it returned ``-ENOENT`` when the credential was cleared. + Multiprotocol Service Layer libraries ------------------------------------- diff --git a/lib/modem_key_mgmt/modem_key_mgmt.c b/lib/modem_key_mgmt/modem_key_mgmt.c index 7e95a9ace307..8b796235038f 100644 --- a/lib/modem_key_mgmt/modem_key_mgmt.c +++ b/lib/modem_key_mgmt/modem_key_mgmt.c @@ -306,7 +306,7 @@ int modem_key_mgmt_clear(nrf_sec_tag_t sec_tag) while (token != NULL) { err = sscanf(token, "%%CMNG: %u,%u,\"", &tag, &type); - if (tag == sec_tag) { + if (tag == sec_tag && err == 2) { err = nrf_modem_at_printf("AT%%CMNG=3,%u,%u", sec_tag, type); } token = strtok(NULL, "\n");