From 9a77171ccc2838c2fd7b666ed9ee9c7ba8ebd488 Mon Sep 17 00:00:00 2001 From: Giuseppe D'Angelo Date: Sat, 24 Mar 2012 08:50:02 +0000 Subject: QHash security fix (1.5/2): qHash two arguments overload support MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Algorithmic complexity attacks against hash tables have been known since 2003 (cf. [1, 2]), and they have been left unpatched for years until the 2011 attacks [3] against many libraries / (reference) implementations of programming languages. This patch adds a qHash overload taking two arguments: the value to be hashed, and a uint to be used as a seed for the hash function itself (support the global QHash seed was added in a previous patch). The seed itself is not used just yet; instead, 0 is passed. Compatibility with the one-argument qHash(T) implementation is kept through a catch-all template. [1] http://www.cs.rice.edu/~scrosby/hash/CrosbyWallach_UsenixSec2003.pdf [2] http://perldoc.perl.org/perlsec.html#Algorithmic-Complexity-Attacks [3] http://www.ocert.org/advisories/ocert-2011-003.html Task-number: QTBUG-23529 Change-Id: I1d0a84899476d134db455418c8043a349a7e5317 Reviewed-by: João Abecasis --- dist/changes-5.0.0 | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'dist') diff --git a/dist/changes-5.0.0 b/dist/changes-5.0.0 index 1258792029..cfb83a4093 100644 --- a/dist/changes-5.0.0 +++ b/dist/changes-5.0.0 @@ -346,6 +346,10 @@ QtCore * QEvent::AccessibilityPrepare, AccessibilityHelp and AccessibilityDescription removed: * The enum values simply didn't make sense in the first place and should simply be dropped. +* [QTBUG-23529] QHash is now more resilient to a family of denial of service + attacks exploiting algorithmic complexity, by supporting two-arguments overloads + of the qHash() hashing function. + QtGui ----- * Accessibility has been refactored. The hierachy of accessible objects is implemented via -- cgit v1.2.3