File cups-1.3.9-CVE-2010-2941.patch of Package cups
--- cups/ipp.c.orig 2008-07-12 00:48:49.000000000 +0200
+++ cups/ipp.c 2010-10-29 15:38:22.000000000 +0200
@@ -1187,15 +1187,18 @@ ippReadIO(void *src, /* I - Data
attr->value_tag = tag;
}
- else if (value_tag >= IPP_TAG_TEXTLANG &&
- value_tag <= IPP_TAG_MIMETYPE)
+ else if (value_tag == IPP_TAG_TEXTLANG ||
+ value_tag == IPP_TAG_NAMELANG ||
+ (value_tag >= IPP_TAG_TEXT &&
+ value_tag <= IPP_TAG_MIMETYPE))
{
/*
* String values can sometimes come across in different
* forms; accept sets of differing values...
*/
- if (tag < IPP_TAG_TEXTLANG || tag > IPP_TAG_MIMETYPE)
+ if (tag != IPP_TAG_TEXTLANG && tag != IPP_TAG_NAMELANG &&
+ (tag < IPP_TAG_TEXT || tag > IPP_TAG_MIMETYPE))
return (IPP_ERROR);
}
else if (value_tag != tag)
@@ -2529,6 +2532,7 @@ _ippFreeAttr(ipp_attribute_t *attr) /* I
{
case IPP_TAG_TEXT :
case IPP_TAG_NAME :
+ case IPP_TAG_RESERVED_STRING :
case IPP_TAG_KEYWORD :
case IPP_TAG_URI :
case IPP_TAG_URISCHEME :
--- cups/ipp.h.orig 2008-07-12 00:48:49.000000000 +0200
+++ cups/ipp.h 2010-10-29 15:39:37.000000000 +0200
@@ -94,7 +94,8 @@ typedef enum ipp_tag_e /**** Format ta
IPP_TAG_END_COLLECTION, /* End of collection value */
IPP_TAG_TEXT = 0x41, /* Text value */
IPP_TAG_NAME, /* Name value */
- IPP_TAG_KEYWORD = 0x44, /* Keyword value */
+ IPP_TAG_RESERVED_STRING, /* Reserved for future string value @private@ */
+ IPP_TAG_KEYWORD, /* Keyword value */
IPP_TAG_URI, /* URI value */
IPP_TAG_URISCHEME, /* URI scheme value */
IPP_TAG_CHARSET, /* Character set value */