[PATCH v2 1/2] osxkeychain: lock for exclusive execution
- From
Koji Nakamaru via GitGitGadget <gitgitgadget@gmail.com>
- Date
- May 11, 2024, 11:55 UTC
- Message-ID
- <309c17c78f35296dd47e8b203413860eb62b239e.1715428542.git.gitgitgadget@gmail.com>
- In-Reply-To
- <pull.1729.v2.git.1715428542.gitgitgadget@gmail.com>
From: Koji Nakamaru <koji.nakamaru@gree.net>
Resolves "failed to store: -25299" when "fetch.parallel 0" is configured and there are many submodules.
The error code -25299 (errSecDuplicateItem) may be returned by SecItemUpdate() in add_internet_password() if multiple instances of git-credential-osxkeychain run in parallel. This patch introduces an exclusive lock to serialize execution for avoiding this and other potential issues.
Signed-off-by: Koji Nakamaru <koji.nakamaru@gree.net> --- contrib/credential/osxkeychain/git-credential-osxkeychain.c | 3 +++ 1 file changed, 3 insertions(+)
diff --git a/contrib/credential/osxkeychain/git-credential-osxkeychain.c b/contrib/credential/osxkeychain/git-credential-osxkeychain.c index 6a40917b1ef..0884db48d0a 100644 --- a/contrib/credential/osxkeychain/git-credential-osxkeychain.c +++ b/contrib/credential/osxkeychain/git-credential-osxkeychain.c @@ -414,6 +414,9 @@ int main(int argc, const char **argv) if (!argv[1]) die("%s", usage); + if (open(argv[0], O_RDONLY | O_EXLOCK) == -1) + die("failed to lock %s", argv[0]); + read_credential(); if (!strcmp(argv[1], "get"))
-- gitgitgadget