Module Name:    src
Committed By:   elric
Date:           Thu May 16 13:02:12 UTC 2013

Modified Files:
        src/crypto/external/bsd/libsaslc/dist/src: mech_gssapi.c

Log Message:
AUTHCID is optional for the GSSAPI mechanism.


To generate a diff of this commit:
cvs rdiff -u -r1.6 -r1.7 \
    src/crypto/external/bsd/libsaslc/dist/src/mech_gssapi.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/crypto/external/bsd/libsaslc/dist/src/mech_gssapi.c
diff -u src/crypto/external/bsd/libsaslc/dist/src/mech_gssapi.c:1.6 src/crypto/external/bsd/libsaslc/dist/src/mech_gssapi.c:1.7
--- src/crypto/external/bsd/libsaslc/dist/src/mech_gssapi.c:1.6	Sun Feb 20 01:59:46 2011
+++ src/crypto/external/bsd/libsaslc/dist/src/mech_gssapi.c	Thu May 16 13:02:12 2013
@@ -1,4 +1,4 @@
-/* $NetBSD: mech_gssapi.c,v 1.6 2011/02/20 01:59:46 christos Exp $ */
+/* $NetBSD: mech_gssapi.c,v 1.7 2013/05/16 13:02:12 elric Exp $ */
 
 /* Copyright (c) 2010 The NetBSD Foundation, Inc.
  * All rights reserved.
@@ -35,7 +35,7 @@
  * POSSIBILITY OF SUCH DAMAGE.
  */
 #include <sys/cdefs.h>
-__RCSID("$NetBSD: mech_gssapi.c,v 1.6 2011/02/20 01:59:46 christos Exp $");
+__RCSID("$NetBSD: mech_gssapi.c,v 1.7 2013/05/16 13:02:12 elric Exp $");
 
 #include <assert.h>
 #include <errno.h>
@@ -582,21 +582,18 @@ wrap_output_token(saslc_sess_t *sess, gs
 	/* through fourth octets containing in network byte order the       */
 	/* maximum size output_message the client is able to receive, and   */
 	/* the remaining octets containing the authorization identity.  The */
-	/* client passes the data to GSS_Wrap with conf_flag set to FALSE,  */
-	/* and responds with the generated output_message.  The client can  */
-	/* then consider the server authenticated.                          */
+	/* authorization identity is optional in mechanisms where it is     */
+	/* encoded in the exchange such as GSSAPI.  The client passes the   */
+	/* data to GSS_Wrap with conf_flag set to FALSE, and responds with  */
+	/* the generated output_message.  The client can then consider the  */
+	/* server authenticated.                                            */
 	/********************************************************************/
 
 	ms = sess->mech_sess;
 
-	if ((authcid = saslc_sess_getprop(sess, SASLC_GSSAPI_AUTHCID))
-	    == NULL) {
-		saslc__error_set(ERR(sess), ERROR_MECH,
-		    "authcid is required for an authentication");
-		return -1;
-	}
+	authcid = saslc_sess_getprop(sess, SASLC_GSSAPI_AUTHCID);
 
-	len = asprintf(&input_value, "qmax%s", authcid);
+	len = asprintf(&input_value, "qmax%s", authcid ? authcid : "");
 	if (len == -1) {
 		saslc__error_set_errno(ERR(sess), ERROR_NOMEM);
 		return -1;

Reply via email to