Blame SOURCES/cups-str4609.patch

87cf9a
diff -up cups-1.6.3/cgi-bin/ipp-var.c.str4609 cups-1.6.3/cgi-bin/ipp-var.c
87cf9a
--- cups-1.6.3/cgi-bin/ipp-var.c.str4609	2013-06-07 03:12:52.000000000 +0200
87cf9a
+++ cups-1.6.3/cgi-bin/ipp-var.c	2015-06-10 11:44:39.584600734 +0200
87cf9a
@@ -1230,21 +1230,7 @@ cgiSetIPPObjectVars(
87cf9a
 	      * Rewrite URIs...
87cf9a
 	      */
87cf9a
 
87cf9a
-              if (!strcmp(name, "member_uris"))
87cf9a
-	      {
87cf9a
-		char	url[1024];	/* URL for class member... */
87cf9a
-
87cf9a
-
87cf9a
-		cgiRewriteURL(attr->values[i].string.text, url,
87cf9a
-		              sizeof(url), NULL);
87cf9a
-
87cf9a
-                snprintf(valptr, sizeof(value) - (valptr - value),
87cf9a
-		         "%s", url,
87cf9a
-			 strrchr(attr->values[i].string.text, '/') + 1);
87cf9a
-	      }
87cf9a
-	      else
87cf9a
-		cgiRewriteURL(attr->values[i].string.text, valptr,
87cf9a
-		              sizeof(value) - (valptr - value), NULL);
87cf9a
+	      cgiRewriteURL(attr->values[i].string.text, valptr, sizeof(value) - (valptr - value), NULL);
87cf9a
               break;
87cf9a
             }
87cf9a
 
87cf9a
diff -up cups-1.6.3/cgi-bin/template.c.str4609 cups-1.6.3/cgi-bin/template.c
87cf9a
--- cups-1.6.3/cgi-bin/template.c.str4609	2013-06-07 03:12:52.000000000 +0200
87cf9a
+++ cups-1.6.3/cgi-bin/template.c	2015-06-10 11:44:39.584600734 +0200
87cf9a
@@ -659,39 +659,7 @@ cgi_puts(const char *s,			/* I - String
87cf9a
   while (*s)
87cf9a
   {
87cf9a
     if (*s == '<')
87cf9a
-    {
87cf9a
-     /*
87cf9a
-      * Pass  and , otherwise quote it...
87cf9a
-      */
87cf9a
-
87cf9a
-      if (!_cups_strncasecmp(s, "
87cf9a
-      {
87cf9a
-        fputs("
87cf9a
-	s += 9;
87cf9a
-
87cf9a
-	while (*s && *s != '\"')
87cf9a
-	{
87cf9a
-          if (*s == '&')
87cf9a
-            fputs("&", out);
87cf9a
-	  else
87cf9a
-	    putc(*s, out);
87cf9a
-
87cf9a
-	  s ++;
87cf9a
-	}
87cf9a
-
87cf9a
-        if (*s)
87cf9a
-	  s ++;
87cf9a
-
87cf9a
-	fputs("\">", out);
87cf9a
-      }
87cf9a
-      else if (!_cups_strncasecmp(s, "", 4))
87cf9a
-      {
87cf9a
-        fputs("", out);
87cf9a
-	s += 3;
87cf9a
-      }
87cf9a
-      else
87cf9a
-        fputs("<", out);
87cf9a
-    }
87cf9a
+      fputs("<", out);
87cf9a
     else if (*s == '>')
87cf9a
       fputs(">", out);
87cf9a
     else if (*s == '\"')
87cf9a
diff -up cups-1.6.3/scheduler/ipp.c.str4609 cups-1.6.3/scheduler/ipp.c
87cf9a
--- cups-1.6.3/scheduler/ipp.c.str4609	2015-06-10 11:44:39.577600753 +0200
87cf9a
+++ cups-1.6.3/scheduler/ipp.c	2015-06-10 11:44:39.585600731 +0200
87cf9a
@@ -482,8 +482,7 @@ cupsdProcessIPPRequest(
87cf9a
 	    * Remote unauthenticated user masquerading as local root...
87cf9a
 	    */
87cf9a
 
87cf9a
-	    _cupsStrFree(username->values[0].string.text);
87cf9a
-	    username->values[0].string.text = _cupsStrAlloc(RemoteRoot);
87cf9a
+            ippSetString(con->request, &username, 0, RemoteRoot);
87cf9a
 	  }
87cf9a
 	}
87cf9a
 
87cf9a
@@ -1665,7 +1664,7 @@ add_job(cupsd_client_t  *con,		/* I - Cl
87cf9a
     cupsdSetString(&job->username, con->username);
87cf9a
 
87cf9a
     if (attr)
87cf9a
-      cupsdSetString(&attr->values[0].string.text, con->username);
87cf9a
+      ippSetString(job->attrs, &attr, 0, con->username);
87cf9a
   }
87cf9a
   else if (attr)
87cf9a
   {
87cf9a
@@ -1683,9 +1682,8 @@ add_job(cupsd_client_t  *con,		/* I - Cl
87cf9a
                  "job-originating-user-name", NULL, job->username);
87cf9a
   else
87cf9a
   {
87cf9a
-    attr->group_tag = IPP_TAG_JOB;
87cf9a
-    _cupsStrFree(attr->name);
87cf9a
-    attr->name = _cupsStrAlloc("job-originating-user-name");
87cf9a
+    ippSetGroupTag(job->attrs, &attr, IPP_TAG_JOB);
87cf9a
+    ippSetName(job->attrs, &attr, "job-originating-user-name");
87cf9a
   }
87cf9a
 
87cf9a
   if (con->username[0] || auth_info)
87cf9a
@@ -1716,48 +1714,11 @@ add_job(cupsd_client_t  *con,		/* I - Cl
87cf9a
       * Also, we can only have 1 value and it must be a name value.
87cf9a
       */
87cf9a
 
87cf9a
-      switch (attr->value_tag)
87cf9a
-      {
87cf9a
-        case IPP_TAG_STRING :
87cf9a
-	case IPP_TAG_TEXTLANG :
87cf9a
-	case IPP_TAG_NAMELANG :
87cf9a
-	case IPP_TAG_TEXT :
87cf9a
-	case IPP_TAG_NAME :
87cf9a
-	case IPP_TAG_KEYWORD :
87cf9a
-	case IPP_TAG_URI :
87cf9a
-	case IPP_TAG_URISCHEME :
87cf9a
-	case IPP_TAG_CHARSET :
87cf9a
-	case IPP_TAG_LANGUAGE :
87cf9a
-	case IPP_TAG_MIMETYPE :
87cf9a
-	   /*
87cf9a
-	    * Free old strings...
87cf9a
-	    */
87cf9a
-
87cf9a
-	    for (i = 0; i < attr->num_values; i ++)
87cf9a
-	    {
87cf9a
-	      _cupsStrFree(attr->values[i].string.text);
87cf9a
-	      attr->values[i].string.text = NULL;
87cf9a
-	      if (attr->values[i].string.language)
87cf9a
-	      {
87cf9a
-		_cupsStrFree(attr->values[i].string.language);
87cf9a
-		attr->values[i].string.language = NULL;
87cf9a
-	      }
87cf9a
-            }
87cf9a
-
87cf9a
-	default :
87cf9a
-            break;
87cf9a
-      }
87cf9a
-
87cf9a
-     /*
87cf9a
-      * Use the default connection hostname instead...
87cf9a
-      */
87cf9a
-
87cf9a
-      attr->value_tag             = IPP_TAG_NAME;
87cf9a
-      attr->num_values            = 1;
87cf9a
-      attr->values[0].string.text = _cupsStrAlloc(con->http.hostname);
87cf9a
+      ippDeleteAttribute(job->attrs, attr);
87cf9a
+      ippAddString(job->attrs, IPP_TAG_JOB, IPP_TAG_NAME, "job-originating-host-name", NULL, con->http.hostname);
87cf9a
     }
87cf9a
-
87cf9a
-    attr->group_tag = IPP_TAG_JOB;
87cf9a
+    else
87cf9a
+      ippSetGroupTag(job->attrs, &attr, IPP_TAG_JOB);
87cf9a
   }
87cf9a
   else
87cf9a
   {
87cf9a
@@ -1854,8 +1815,8 @@ add_job(cupsd_client_t  *con,		/* I - Cl
87cf9a
 
87cf9a
       attr = ippAddStrings(job->attrs, IPP_TAG_JOB, IPP_TAG_NAME, "job-sheets",
87cf9a
                            2, NULL, NULL);
87cf9a
-      attr->values[0].string.text = _cupsStrRetain(printer->job_sheets[0]);
87cf9a
-      attr->values[1].string.text = _cupsStrRetain(printer->job_sheets[1]);
87cf9a
+      ippSetString(job->attrs, &attr, 0, printer->job_sheets[0]);
87cf9a
+      ippSetString(job->attrs, &attr, 1, printer->job_sheets[1]);
87cf9a
     }
87cf9a
 
87cf9a
     job->job_sheets = attr;
87cf9a
@@ -1881,7 +1842,7 @@ add_job(cupsd_client_t  *con,		/* I - Cl
87cf9a
           * Force the leading banner to have the classification on it...
87cf9a
 	  */
87cf9a
 
87cf9a
-          cupsdSetString(&attr->values[0].string.text, Classification);
87cf9a
+          ippSetString(job->attrs, &attr, 0, Classification);
87cf9a
 
87cf9a
 	  cupsdLogJob(job, CUPSD_LOG_NOTICE, "CLASSIFICATION FORCED "
87cf9a
 	                		     "job-sheets=\"%s,none\", "
87cf9a
@@ -1898,7 +1859,7 @@ add_job(cupsd_client_t  *con,		/* I - Cl
87cf9a
 	  * Can't put two different security markings on the same document!
87cf9a
 	  */
87cf9a
 
87cf9a
-          cupsdSetString(&attr->values[1].string.text, attr->values[0].string.text);
87cf9a
+          ippSetString(job->attrs, &attr, 1, attr->values[0].string.text);
87cf9a
 
87cf9a
 	  cupsdLogJob(job, CUPSD_LOG_NOTICE, "CLASSIFICATION FORCED "
87cf9a
 	                		     "job-sheets=\"%s,%s\", "
87cf9a
@@ -1938,18 +1899,18 @@ add_job(cupsd_client_t  *con,		/* I - Cl
87cf9a
         if (attr->num_values > 1 &&
87cf9a
 	    !strcmp(attr->values[0].string.text, attr->values[1].string.text))
87cf9a
 	{
87cf9a
-          cupsdSetString(&(attr->values[0].string.text), Classification);
87cf9a
-          cupsdSetString(&(attr->values[1].string.text), Classification);
87cf9a
+          ippSetString(job->attrs, &attr, 0, Classification);
87cf9a
+          ippSetString(job->attrs, &attr, 1, Classification);
87cf9a
 	}
87cf9a
         else
87cf9a
 	{
87cf9a
           if (attr->num_values == 1 ||
87cf9a
 	      strcmp(attr->values[0].string.text, "none"))
87cf9a
-            cupsdSetString(&(attr->values[0].string.text), Classification);
87cf9a
+            ippSetString(job->attrs, &attr, 0, Classification);
87cf9a
 
87cf9a
           if (attr->num_values > 1 &&
87cf9a
 	      strcmp(attr->values[1].string.text, "none"))
87cf9a
-            cupsdSetString(&(attr->values[1].string.text), Classification);
87cf9a
+	    ippSetString(job->attrs, &attr, 1, Classification);
87cf9a
         }
87cf9a
 
87cf9a
         if (attr->num_values > 1)
87cf9a
@@ -3185,8 +3146,8 @@ authenticate_job(cupsd_client_t  *con,	/
87cf9a
 
87cf9a
   if (attr)
87cf9a
   {
87cf9a
-    attr->value_tag = IPP_TAG_KEYWORD;
87cf9a
-    cupsdSetString(&(attr->values[0].string.text), "no-hold");
87cf9a
+    ippSetValueTag(job->attrs, &attr, IPP_TAG_KEYWORD);
87cf9a
+    ippSetString(job->attrs, &attr, 0, "no-hold");
87cf9a
   }
87cf9a
 
87cf9a
  /*
87cf9a
@@ -8413,11 +8374,7 @@ print_job(cupsd_client_t  *con,		/* I -
87cf9a
              filetype->type);
87cf9a
 
87cf9a
     if (format)
87cf9a
-    {
87cf9a
-      _cupsStrFree(format->values[0].string.text);
87cf9a
-
87cf9a
-      format->values[0].string.text = _cupsStrAlloc(mimetype);
87cf9a
-    }
87cf9a
+      ippSetString(con->request, &format, 0, mimetype);
87cf9a
     else
87cf9a
       ippAddString(con->request, IPP_TAG_JOB, IPP_TAG_MIMETYPE,
87cf9a
 	           "document-format", NULL, mimetype);
87cf9a
@@ -8952,10 +8909,8 @@ release_job(cupsd_client_t  *con,	/* I -
87cf9a
 
87cf9a
   if (attr)
87cf9a
   {
87cf9a
-    _cupsStrFree(attr->values[0].string.text);
87cf9a
-
87cf9a
-    attr->value_tag = IPP_TAG_KEYWORD;
87cf9a
-    attr->values[0].string.text = _cupsStrAlloc("no-hold");
87cf9a
+    ippSetValueTag(job->attrs, &attr, IPP_TAG_KEYWORD);
87cf9a
+    ippSetString(job->attrs, &attr, 0, "no-hold");
87cf9a
 
87cf9a
     cupsdAddEvent(CUPSD_EVENT_JOB_CONFIG_CHANGED, cupsdFindDest(job->dest), job,
87cf9a
                   "Job job-hold-until value changed by user.");
87cf9a
@@ -9648,11 +9603,7 @@ send_document(cupsd_client_t  *con,	/* I
87cf9a
 
87cf9a
     if ((jformat = ippFindAttribute(job->attrs, "document-format",
87cf9a
                                     IPP_TAG_MIMETYPE)) != NULL)
87cf9a
-    {
87cf9a
-      _cupsStrFree(jformat->values[0].string.text);
87cf9a
-
87cf9a
-      jformat->values[0].string.text = _cupsStrAlloc(mimetype);
87cf9a
-    }
87cf9a
+      ippSetString(job->attrs, &jformat, 0, mimetype);
87cf9a
     else
87cf9a
       ippAddString(job->attrs, IPP_TAG_JOB, IPP_TAG_MIMETYPE,
87cf9a
 	           "document-format", NULL, mimetype);
87cf9a
diff -up cups-1.6.3/scheduler/job.c.str4609 cups-1.6.3/scheduler/job.c
87cf9a
--- cups-1.6.3/scheduler/job.c.str4609	2015-06-10 11:44:39.495600976 +0200
87cf9a
+++ cups-1.6.3/scheduler/job.c	2015-06-10 11:44:39.586600728 +0200
87cf9a
@@ -430,7 +430,7 @@ cupsdCheckJobs(void)
87cf9a
 
87cf9a
           if ((attr = ippFindAttribute(job->attrs, "job-actual-printer-uri",
87cf9a
 	                               IPP_TAG_URI)) != NULL)
87cf9a
-            cupsdSetString(&attr->values[0].string.text, printer->uri);
87cf9a
+            ippSetString(job->attrs, &attr, 0, printer->uri);
87cf9a
 	  else
87cf9a
 	    ippAddString(job->attrs, IPP_TAG_JOB, IPP_TAG_URI,
87cf9a
 	                 "job-actual-printer-uri", NULL, printer->uri);
87cf9a
@@ -2138,7 +2138,7 @@ cupsdMoveJob(cupsd_job_t     *job,	/* I
87cf9a
 
87cf9a
   if ((attr = ippFindAttribute(job->attrs, "job-printer-uri",
87cf9a
                                IPP_TAG_URI)) != NULL)
87cf9a
-    cupsdSetString(&(attr->values[0].string.text), p->uri);
87cf9a
+    ippSetString(job->attrs, &attr, 0, p->uri);
87cf9a
 
87cf9a
   cupsdAddEvent(CUPSD_EVENT_JOB_STOPPED, p, job,
87cf9a
                 "Job #%d moved from %s to %s.", job->id, olddest,
87cf9a
@@ -2329,7 +2329,7 @@ cupsdSetJobHoldUntil(cupsd_job_t *job,	/
87cf9a
       attr = ippFindAttribute(job->attrs, "job-hold-until", IPP_TAG_NAME);
87cf9a
 
87cf9a
     if (attr)
87cf9a
-      cupsdSetString(&(attr->values[0].string.text), when);
87cf9a
+      ippSetString(job->attrs, &attr, 0, when);
87cf9a
     else
87cf9a
       attr = ippAddString(job->attrs, IPP_TAG_JOB, IPP_TAG_KEYWORD,
87cf9a
                           "job-hold-until", NULL, when);
87cf9a
@@ -2583,8 +2583,8 @@ cupsdSetJobState(
87cf9a
 
87cf9a
 	if (attr)
87cf9a
 	{
87cf9a
-	  attr->value_tag = IPP_TAG_KEYWORD;
87cf9a
-	  cupsdSetString(&(attr->values[0].string.text), "no-hold");
87cf9a
+	  ippSetValueTag(job->attrs, &attr, IPP_TAG_KEYWORD);
87cf9a
+	  ippSetString(job->attrs, &attr, 0, "no-hold");
87cf9a
 	}
87cf9a
 
87cf9a
     default :
87cf9a
@@ -4531,7 +4531,7 @@ start_job(cupsd_job_t     *job,		/* I -
87cf9a
                                             "job-printer-state-message",
87cf9a
                                             IPP_TAG_TEXT);
87cf9a
   if (job->printer_message)
87cf9a
-    cupsdSetString(&(job->printer_message->values[0].string.text), "");
87cf9a
+    ippSetString(job->attrs, &job->printer_message, 0, "");
87cf9a
 
87cf9a
   ippSetString(job->attrs, &job->reasons, 0, "job-printing");
87cf9a
   cupsdSetJobState(job, IPP_JOB_PROCESSING, CUPSD_JOB_DEFAULT, NULL);
87cf9a
@@ -5109,15 +5109,14 @@ update_job_attrs(cupsd_job_t *job,	/* I
87cf9a
   if (job->state_value != IPP_JOB_PROCESSING &&
87cf9a
       job->status_level == CUPSD_LOG_INFO)
87cf9a
   {
87cf9a
-    cupsdSetString(&(job->printer_message->values[0].string.text), "");
87cf9a
+    ippSetString(job->attrs, &job->printer_message, 0, "");
87cf9a
 
87cf9a
     job->dirty = 1;
87cf9a
     cupsdMarkDirty(CUPSD_DIRTY_JOBS);
87cf9a
   }
87cf9a
   else if (job->printer->state_message[0] && do_message)
87cf9a
   {
87cf9a
-    cupsdSetString(&(job->printer_message->values[0].string.text),
87cf9a
-		   job->printer->state_message);
87cf9a
+    ippSetString(job->attrs, &job->printer_message, 0, job->printer->state_message);
87cf9a
 
87cf9a
     job->dirty = 1;
87cf9a
     cupsdMarkDirty(CUPSD_DIRTY_JOBS);