Tim Waugh e2e55c
diff -up cups-1.4.4/cups/ipp.c.CVE-2010-2941 cups-1.4.4/cups/ipp.c
Tim Waugh e2e55c
--- cups-1.4.4/cups/ipp.c.CVE-2010-2941	2010-04-23 19:56:34.000000000 +0100
Tim Waugh e2e55c
+++ cups-1.4.4/cups/ipp.c	2010-11-11 11:30:28.566745595 +0000
Tim Waugh e2e55c
@@ -1275,7 +1275,9 @@ ippReadIO(void       *src,		/* I - Data 
Tim Waugh e2e55c
 
Tim Waugh e2e55c
 	      attr->value_tag = tag;
Tim Waugh e2e55c
 	    }
Tim Waugh e2e55c
-	    else if ((value_tag >= IPP_TAG_TEXTLANG &&
Tim Waugh e2e55c
+	    else if (value_tag == IPP_TAG_TEXTLANG ||
Tim Waugh e2e55c
+	             value_tag == IPP_TAG_NAMELANG ||
Tim Waugh e2e55c
+		     (value_tag >= IPP_TAG_TEXT &&
Tim Waugh e2e55c
 		      value_tag <= IPP_TAG_MIMETYPE))
Tim Waugh e2e55c
             {
Tim Waugh e2e55c
 	     /*
Tim Waugh e2e55c
@@ -1283,8 +1285,9 @@ ippReadIO(void       *src,		/* I - Data 
Tim Waugh e2e55c
 	      * forms; accept sets of differing values...
Tim Waugh e2e55c
 	      */
Tim Waugh e2e55c
 
Tim Waugh e2e55c
-	      if ((tag < IPP_TAG_TEXTLANG || tag > IPP_TAG_MIMETYPE) &&
Tim Waugh e2e55c
-	          tag != IPP_TAG_NOVALUE)
Tim Waugh e2e55c
+	      if (tag != IPP_TAG_TEXTLANG && tag != IPP_TAG_NAMELANG &&
Tim Waugh e2e55c
+	          (tag < IPP_TAG_TEXT || tag > IPP_TAG_MIMETYPE) &&
Tim Waugh e2e55c
+		  tag != IPP_TAG_NOVALUE)
Tim Waugh e2e55c
 	      {
Tim Waugh e2e55c
 		DEBUG_printf(("1ippReadIO: 1setOf value tag %x(%s) != %x(%s)",
Tim Waugh e2e55c
 			      value_tag, ippTagString(value_tag), tag,
Tim Waugh e2e55c
@@ -2766,6 +2769,7 @@ _ippFreeAttr(ipp_attribute_t *attr)	/* I
Tim Waugh e2e55c
   {
Tim Waugh e2e55c
     case IPP_TAG_TEXT :
Tim Waugh e2e55c
     case IPP_TAG_NAME :
Tim Waugh e2e55c
+    case IPP_TAG_RESERVED_STRING :
Tim Waugh e2e55c
     case IPP_TAG_KEYWORD :
Tim Waugh e2e55c
     case IPP_TAG_URI :
Tim Waugh e2e55c
     case IPP_TAG_URISCHEME :
Tim Waugh e2e55c
diff -up cups-1.4.4/cups/ipp.h.CVE-2010-2941 cups-1.4.4/cups/ipp.h
Tim Waugh e2e55c
--- cups-1.4.4/cups/ipp.h.CVE-2010-2941	2010-04-23 19:56:34.000000000 +0100
Tim Waugh e2e55c
+++ cups-1.4.4/cups/ipp.h	2010-11-11 11:30:28.568745537 +0000
Tim Waugh e2e55c
@@ -93,7 +93,8 @@ typedef enum ipp_tag_e			/**** Format ta
Tim Waugh e2e55c
   IPP_TAG_END_COLLECTION,		/* End of collection value */
Tim Waugh e2e55c
   IPP_TAG_TEXT = 0x41,			/* Text value */
Tim Waugh e2e55c
   IPP_TAG_NAME,				/* Name value */
Tim Waugh e2e55c
-  IPP_TAG_KEYWORD = 0x44,		/* Keyword value */
Tim Waugh e2e55c
+  IPP_TAG_RESERVED_STRING,		/* Reserved for future string value @private@ */
Tim Waugh e2e55c
+  IPP_TAG_KEYWORD,			/* Keyword value */
Tim Waugh e2e55c
   IPP_TAG_URI,				/* URI value */
Tim Waugh e2e55c
   IPP_TAG_URISCHEME,			/* URI scheme value */
Tim Waugh e2e55c
   IPP_TAG_CHARSET,			/* Character set value */