81 lines
2.5 KiB
Diff
81 lines
2.5 KiB
Diff
From 69e742e6208bd471eb509795bd753a0c98392bf6 Mon Sep 17 00:00:00 2001
|
|
From: Joseph Sutton <josephsutton@catalyst.net.nz>
|
|
Date: Wed, 18 May 2022 17:11:49 +1200
|
|
Subject: [PATCH 78/99] s4:kpasswd: Restructure code for clarity
|
|
|
|
View with 'git show -b'.
|
|
|
|
Signed-off-by: Joseph Sutton <josephsutton@catalyst.net.nz>
|
|
Reviewed-by: Andreas Schneider <asn@samba.org>
|
|
---
|
|
source4/kdc/kpasswd-service-heimdal.c | 46 +++++++++++++--------------
|
|
1 file changed, 22 insertions(+), 24 deletions(-)
|
|
|
|
diff --git a/source4/kdc/kpasswd-service-heimdal.c b/source4/kdc/kpasswd-service-heimdal.c
|
|
index 1a6c2b60d03..a0352d1ad35 100644
|
|
--- a/source4/kdc/kpasswd-service-heimdal.c
|
|
+++ b/source4/kdc/kpasswd-service-heimdal.c
|
|
@@ -160,30 +160,7 @@ static krb5_error_code kpasswd_set_password(struct kdc_server *kdc,
|
|
return 0;
|
|
}
|
|
|
|
- if (chpw.targname != NULL && chpw.targrealm != NULL) {
|
|
- code = krb5_build_principal_ext(context,
|
|
- &target_principal,
|
|
- strlen(*chpw.targrealm),
|
|
- *chpw.targrealm,
|
|
- 0);
|
|
- if (code != 0) {
|
|
- free_ChangePasswdDataMS(&chpw);
|
|
- return kpasswd_make_error_reply(mem_ctx,
|
|
- KRB5_KPASSWD_MALFORMED,
|
|
- "Failed to parse principal",
|
|
- kpasswd_reply);
|
|
- }
|
|
- code = copy_PrincipalName(chpw.targname,
|
|
- &target_principal->name);
|
|
- if (code != 0) {
|
|
- free_ChangePasswdDataMS(&chpw);
|
|
- krb5_free_principal(context, target_principal);
|
|
- return kpasswd_make_error_reply(mem_ctx,
|
|
- KRB5_KPASSWD_MALFORMED,
|
|
- "Failed to parse principal",
|
|
- kpasswd_reply);
|
|
- }
|
|
- } else {
|
|
+ if (chpw.targname == NULL || chpw.targrealm == NULL) {
|
|
free_ChangePasswdDataMS(&chpw);
|
|
return kpasswd_change_password(kdc,
|
|
mem_ctx,
|
|
@@ -193,7 +170,28 @@ static krb5_error_code kpasswd_set_password(struct kdc_server *kdc,
|
|
kpasswd_reply,
|
|
error_string);
|
|
}
|
|
+ code = krb5_build_principal_ext(context,
|
|
+ &target_principal,
|
|
+ strlen(*chpw.targrealm),
|
|
+ *chpw.targrealm,
|
|
+ 0);
|
|
+ if (code != 0) {
|
|
+ free_ChangePasswdDataMS(&chpw);
|
|
+ return kpasswd_make_error_reply(mem_ctx,
|
|
+ KRB5_KPASSWD_MALFORMED,
|
|
+ "Failed to parse principal",
|
|
+ kpasswd_reply);
|
|
+ }
|
|
+ code = copy_PrincipalName(chpw.targname,
|
|
+ &target_principal->name);
|
|
free_ChangePasswdDataMS(&chpw);
|
|
+ if (code != 0) {
|
|
+ krb5_free_principal(context, target_principal);
|
|
+ return kpasswd_make_error_reply(mem_ctx,
|
|
+ KRB5_KPASSWD_MALFORMED,
|
|
+ "Failed to parse principal",
|
|
+ kpasswd_reply);
|
|
+ }
|
|
|
|
if (target_principal->name.name_string.len >= 2) {
|
|
is_service_principal = true;
|
|
--
|
|
2.25.1
|