Auths: fix cyrus-sasl driver for gssapi use. Bug 2524
[exim.git] / src / src / auths / cyrus_sasl.c
index bb6c02c500662f35e11f23d9b53748147a8a5693..28592a1a0863673f7f06243dcd1dab0393fda392 100644 (file)
@@ -290,7 +290,6 @@ for (int i = 0; i < 2; ++i)
   const uschar * label;
   uschar * address_port;
   const char *s_err;
-  socklen_t sslen;
 
   if (i)
     {
@@ -331,10 +330,10 @@ for (rc = SASL_CONTINUE; rc == SASL_CONTINUE; )
     }
   else
     {
-    /* make sure that we have a null-terminated string */
-    out2 = string_copyn(output, outlen);
+    /* auth_get_data() takes a length-specfied block of binary
+    which can include zeroes; no terminating NUL is needed */
 
-    if ((rc = auth_get_data(&input, out2, outlen)) != OK)
+    if ((rc = auth_get_data(&input, output, outlen)) != OK)
       {
       /* we couldn't get the data, so free up the library before
       returning whatever error we get */
@@ -373,7 +372,7 @@ for (rc = SASL_CONTINUE; rc == SASL_CONTINUE; )
   /* Get the username and copy it into $auth1 and $1. The former is now the
   preferred variable; the latter is the original variable. */
 
-  if ((sasl_getprop(conn, SASL_USERNAME, (const void **)(&out2))) != SASL_OK)
+  if ((sasl_getprop(conn, SASL_USERNAME, (const void **)&out2)) != SASL_OK)
     {
     HDEBUG(D_auth)
       debug_printf("Cyrus SASL library will not tell us the username: %s\n",