]> git.ipfire.org Git - thirdparty/cups.git/blobdiff - scheduler/ipp.c
Kerberos credentials could get truncated when printing to a shared printer.
[thirdparty/cups.git] / scheduler / ipp.c
index 60232325f53dc25a339baa08549b4a9098579f9b..83041d64b3a222759cc988a55d20aa4e5a8073f6 100644 (file)
@@ -9043,7 +9043,7 @@ save_auth_info(
   fchown(cupsFileNumber(fp), 0, 0);
   fchmod(cupsFileNumber(fp), 0400);
 
-  cupsFilePuts(fp, "CUPSD-AUTH-V2\n");
+  cupsFilePuts(fp, "CUPSD-AUTH-V3\n");
 
   for (i = 0;
        i < (int)(sizeof(job->auth_env) / sizeof(job->auth_env[0]));
@@ -9061,9 +9061,15 @@ save_auth_info(
             i < (int)(sizeof(job->auth_env) / sizeof(job->auth_env[0]));
         i ++)
     {
-      httpEncode64_2(line, sizeof(line), auth_info->values[i].string.text,
-                     strlen(auth_info->values[i].string.text));
-      cupsFilePutConf(fp, dest->auth_info_required[i], line);
+      if (strcmp(dest->auth_info_required[i], "negotiate"))
+      {
+       httpEncode64_2(line, sizeof(line), auth_info->values[i].string.text,
+                      strlen(auth_info->values[i].string.text));
+       cupsFilePutConf(fp, dest->auth_info_required[i], line);
+      }
+      else
+       cupsFilePutConf(fp, dest->auth_info_required[i],
+                       auth_info->values[i].string.text);
 
       if (!strcmp(dest->auth_info_required[i], "username"))
         cupsdSetStringf(job->auth_env + i, "AUTH_USERNAME=%s",