From 3985c45ad97a3b2729f3970a8fbcf989a093ca44 Mon Sep 17 00:00:00 2001 From: Andreas Schneider Date: Wed, 6 Aug 2025 14:40:34 +0200 Subject: [PATCH] auth:creds: Allow to reset the realm by passing NULL This is e.g. done by cli_credentials_set_anonymous(). We can't call TALLOC_FREE(cred->realm), as this would break cli_credentials_shallow_copy(). BUG: https://bugzilla.samba.org/show_bug.cgi?id=15893 Signed-off-by: Andreas Schneider Reviewed-by: Alexander Bokovoy (cherry picked from commit e5608cdb2e5a7ef2641ec0e7b0ce0b4640a02ce1) --- auth/credentials/credentials.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/auth/credentials/credentials.c b/auth/credentials/credentials.c index c31470a81d2..5588a355c74 100644 --- a/auth/credentials/credentials.c +++ b/auth/credentials/credentials.c @@ -933,7 +933,14 @@ _PUBLIC_ bool cli_credentials_set_realm(struct cli_credentials *cred, enum credentials_obtained obtained) { if (obtained >= cred->realm_obtained) { - cred->realm = strupper_talloc(cred, val); + /* If `val = NULL` is passed, realm is reset */ + cred->realm = NULL; + if (val != NULL) { + cred->realm = strupper_talloc(cred, val); + if (cred->realm == NULL) { + return false; + } + } cred->realm_obtained = obtained; cli_credentials_invalidate_ccache(cred, cred->realm_obtained); return true; -- 2.47.3