Add hostname to service name in gsscon_connect().
authorMargaret Wasserman <mrw@painless-security.com>
Tue, 4 Mar 2014 12:40:01 +0000 (07:40 -0500)
committerMargaret Wasserman <mrw@painless-security.com>
Tue, 4 Mar 2014 12:40:01 +0000 (07:40 -0500)
gsscon/gsscon_active.c

index 310f4a9..eb572c8 100755 (executable)
@@ -72,6 +72,7 @@ int gsscon_connect (const char *inHost, int inPort, const char *inServiceName, i
     char *inputTokenBuffer = NULL;
     size_t inputTokenBufferLength = 0;
     gss_buffer_desc inputToken;  /* buffer received from the server */
+    gss_buffer_desc nameBuffer;
     gss_buffer_t inputTokenPtr = GSS_C_NO_BUFFER;
 
     if (!inServiceName) { err = EINVAL; }
@@ -164,8 +165,9 @@ int gsscon_connect (const char *inHost, int inPort, const char *inServiceName, i
      */
     
     if (!err) {
-      gss_buffer_desc nameBuffer = { strlen (inServiceName), (char *) inServiceName };
-        
+      nameBuffer.length = asprintf(&name, "%s@%s", inServiceName, inHost);
+      nameBuffer.value = name;
+
       majorStatus = gss_import_name (&minorStatus, &nameBuffer, (gss_OID) GSS_KRB5_NT_PRINCIPAL_NAME, &serviceName); 
       if (majorStatus != GSS_S_COMPLETE) { 
        gsscon_print_gss_errors ("gss_import_name(inServiceName)", majorStatus, minorStatus);