s4 make use of gensec_gssapi_try_kerberos()
authorStefan Metzmacher <metze@samba.org>
Thu, 9 Feb 2017 13:51:24 +0000 (14:51 +0100)
committerStefan Metzmacher <metze@samba.org>
Mon, 18 Feb 2019 12:38:24 +0000 (13:38 +0100)
source4/auth/gensec/gensec_gssapi.c

index a61b2b2659cbd4001e2acfd4afdccf4999d15fa3..fc1feaf49f2c3eaff91b4d13fa1eb99433982535 100644 (file)
@@ -364,25 +364,13 @@ static NTSTATUS gensec_gssapi_client_start(struct gensec_security *gensec_securi
        const char *service = gensec_get_target_service(gensec_security);
        const char *realm = cli_credentials_get_realm(creds);
 
-       target_principal = gensec_get_target_principal(gensec_security);
-       if (target_principal != NULL) {
-               goto do_start;
-       }
-
-       if (!hostname) {
-               DEBUG(3, ("No hostname for target computer passed in, cannot use kerberos for this connection\n"));
-               return NT_STATUS_INVALID_PARAMETER;
-       }
-       if (is_ipaddress(hostname)) {
-               DEBUG(2, ("Cannot do GSSAPI to an IP address\n"));
-               return NT_STATUS_INVALID_PARAMETER;
-       }
-       if (strcmp(hostname, "localhost") == 0) {
-               DEBUG(2, ("GSSAPI to 'localhost' does not make sense\n"));
-               return NT_STATUS_INVALID_PARAMETER;
+       nt_status = gensec_gssapi_try_kerberos(gensec_security);
+       if (!NT_STATUS_IS_OK(nt_status)) {
+               return nt_status;
        }
 
-       if (realm == NULL) {
+       target_principal = gensec_get_target_principal(gensec_security);
+       if (target_principal == NULL && realm == NULL) {
                char *cred_name = cli_credentials_get_unparsed_name(creds,
                                                                gensec_security);
                DEBUG(3, ("cli_credentials(%s) without realm, "
@@ -392,8 +380,6 @@ static NTSTATUS gensec_gssapi_client_start(struct gensec_security *gensec_securi
                return NT_STATUS_INVALID_PARAMETER;
        }
 
-do_start:
-
        nt_status = gensec_gssapi_start(gensec_security);
        if (!NT_STATUS_IS_OK(nt_status)) {
                return nt_status;