Avoid overflows in variantHash()
Fixes: oss-fuzz-24702 Change-Id: I876bac9e2c276693e59802dfeeea2229a873ee34 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> (cherry picked from commit e0da5159dc4f53fcf725ef6e3aa4e04862bcbae0)
This commit is contained in:
parent
5508942081
commit
4ef7856603
@ -290,13 +290,13 @@ static inline uint variantHash(const QVariant &variant)
|
|||||||
switch (variant.userType()) { // sorted by occurrence frequency
|
switch (variant.userType()) { // sorted by occurrence frequency
|
||||||
case QVariant::String: return qHash(variant.toString());
|
case QVariant::String: return qHash(variant.toString());
|
||||||
case QVariant::Double: return qHash(variant.toDouble());
|
case QVariant::Double: return qHash(variant.toDouble());
|
||||||
case QVariant::Int: return 0x811890 + variant.toInt();
|
case QVariant::Int: return 0x811890U + variant.toInt();
|
||||||
case QVariant::Brush:
|
case QVariant::Brush:
|
||||||
return 0x01010101 + hash(qvariant_cast<QBrush>(variant));
|
return 0x01010101 + hash(qvariant_cast<QBrush>(variant));
|
||||||
case QVariant::Bool: return 0x371818 + variant.toBool();
|
case QVariant::Bool: return 0x371818 + variant.toBool();
|
||||||
case QVariant::Pen: return 0x02020202 + hash(qvariant_cast<QPen>(variant));
|
case QVariant::Pen: return 0x02020202 + hash(qvariant_cast<QPen>(variant));
|
||||||
case QVariant::List:
|
case QVariant::List:
|
||||||
return 0x8377 + qvariant_cast<QVariantList>(variant).count();
|
return 0x8377U + qvariant_cast<QVariantList>(variant).count();
|
||||||
case QVariant::Color: return hash(qvariant_cast<QColor>(variant));
|
case QVariant::Color: return hash(qvariant_cast<QColor>(variant));
|
||||||
case QVariant::TextLength:
|
case QVariant::TextLength:
|
||||||
return 0x377 + hash(qvariant_cast<QTextLength>(variant).rawValue());
|
return 0x377 + hash(qvariant_cast<QTextLength>(variant).rawValue());
|
||||||
|
Loading…
x
Reference in New Issue
Block a user