vishalmishra434 / rpms / openssh

Forked from rpms/openssh a month ago
Clone
Tomáš Mráz 993dd1
Written-by: Nalin Dahyabhai <nalin@redhat.com>
Tomáš Mráz 993dd1
Reviewed-by: Tomas Mraz <tmraz@redhat.com>
Tomáš Mráz ec5276
diff -up openssh-5.1p1/auth2-gss.c.gssapi-role openssh-5.1p1/auth2-gss.c
Tomáš Mráz ec5276
--- openssh-5.1p1/auth2-gss.c.gssapi-role	2007-12-02 12:59:45.000000000 +0100
Tomáš Mráz ec5276
+++ openssh-5.1p1/auth2-gss.c	2008-07-23 19:18:15.000000000 +0200
Tomáš Mráz ec5276
@@ -258,6 +258,7 @@ input_gssapi_mic(int type, u_int32_t ple
Tomáš Mráz 993dd1
 	Authctxt *authctxt = ctxt;
Tomáš Mráz 993dd1
 	Gssctxt *gssctxt;
Tomáš Mráz 993dd1
 	int authenticated = 0;
Tomáš Mráz 993dd1
+	char *micuser;
Tomáš Mráz 993dd1
 	Buffer b;
Tomáš Mráz 993dd1
 	gss_buffer_desc mic, gssbuf;
Tomáš Mráz 993dd1
 	u_int len;
Tomáš Mráz ec5276
@@ -270,7 +271,11 @@ input_gssapi_mic(int type, u_int32_t ple
Tomáš Mráz 993dd1
 	mic.value = packet_get_string(&len;;
Tomáš Mráz 993dd1
 	mic.length = len;
Tomáš Mráz 993dd1
 
Tomáš Mráz 993dd1
-	ssh_gssapi_buildmic(&b, authctxt->user, authctxt->service,
Tomáš Mráz 993dd1
+	if (authctxt->role && (strlen(authctxt->role) > 0))
Tomáš Mráz 993dd1
+		xasprintf(&micuser, "%s/%s", authctxt->user, authctxt->role);
Tomáš Mráz 993dd1
+	else
Tomáš Mráz 993dd1
+		micuser = authctxt->user;
Tomáš Mráz 993dd1
+	ssh_gssapi_buildmic(&b, micuser, authctxt->service,
Tomáš Mráz 993dd1
 	    "gssapi-with-mic");
Tomáš Mráz 993dd1
 
Tomáš Mráz 993dd1
 	gssbuf.value = buffer_ptr(&b);
Tomáš Mráz ec5276
@@ -282,6 +287,8 @@ input_gssapi_mic(int type, u_int32_t ple
Tomáš Mráz ec5276
 		logit("GSSAPI MIC check failed");
Tomáš Mráz 993dd1
 
Tomáš Mráz 993dd1
 	buffer_free(&b);
Tomáš Mráz 993dd1
+	if (micuser != authctxt->user)
Tomáš Mráz 993dd1
+		xfree(micuser);
Tomáš Mráz 993dd1
 	xfree(mic.value);
Tomáš Mráz 993dd1
 
Tomáš Mráz 993dd1
 	authctxt->postponed = 0;