]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
s4:kpasswd: Restructure code for clarity
authorJoseph Sutton <josephsutton@catalyst.net.nz>
Wed, 18 May 2022 05:11:49 +0000 (17:11 +1200)
committerJule Anger <janger@samba.org>
Sun, 24 Jul 2022 09:42:02 +0000 (11:42 +0200)
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

index 1a6c2b60d03f9feb71675c7a085b7848b2e0f6c2..a0352d1ad35fb22966e6503fbf1e8d044b4c2bf7 100644 (file)
@@ -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;