r8520: fixed a pile of warnings from the build farm gcc -Wall output on
[ab/samba.git/.git] / source4 / auth / gensec / gensec_gssapi.c
index 2b7c4ca2cc0c45d05cb7c4e7cac97922cb04fffa..a080e75d5cc0d09bf71866670547a0e5e30d8b56 100644 (file)
@@ -228,6 +228,16 @@ static NTSTATUS gensec_gssapi_client_start(struct gensec_security *gensec_securi
        NTSTATUS nt_status;
        gss_buffer_desc name_token;
        OM_uint32 maj_stat, min_stat;
+       const char *hostname = gensec_get_target_hostname(gensec_security);
+
+       if (!hostname) {
+               DEBUG(1, ("Could not determine hostname for target computer, cannot use kerberos\n"));
+               return NT_STATUS_INVALID_PARAMETER;
+       }
+       if (is_ipaddress(hostname)) {
+               DEBUG(2, ("Cannot do GSSAPI to a IP address"));
+               return NT_STATUS_INVALID_PARAMETER;
+       }
 
        nt_status = gensec_gssapi_start(gensec_security);
        if (!NT_STATUS_IS_OK(nt_status)) {
@@ -238,7 +248,7 @@ static NTSTATUS gensec_gssapi_client_start(struct gensec_security *gensec_securi
 
        name_token.value = talloc_asprintf(gensec_gssapi_state, "%s@%s", 
                                           gensec_get_target_service(gensec_security), 
-                                          gensec_get_target_hostname(gensec_security));
+                                          hostname);
        name_token.length = strlen(name_token.value);
 
        maj_stat = gss_import_name (&min_stat,
@@ -704,7 +714,8 @@ static NTSTATUS gensec_gssapi_session_key(struct gensec_security *gensec_securit
                                                        &skey);
                
                if (maj_stat == 0) {
-                       DEBUG(10, ("Got KRB5 session key of length %d\n",  skey.length));
+                       DEBUG(10, ("Got KRB5 session key of length %d\n",  
+                                  (int)skey.length));
                        gensec_gssapi_state->session_key = data_blob_talloc(gensec_gssapi_state, 
                                                                            skey.value, skey.length);
                        *session_key = gensec_gssapi_state->session_key;
@@ -786,7 +797,7 @@ static NTSTATUS gensec_gssapi_session_info(struct gensec_security *gensec_securi
                /* decode and verify the pac */
                nt_status = kerberos_decode_pac(mem_ctx, &logon_info, pac_blob,
                                                gensec_gssapi_state->smb_krb5_context,
-                                               keyblock);
+                                               NULL, keyblock);
 
                if (NT_STATUS_IS_OK(nt_status)) {
                        union netr_Validation validation;