[Webkit-unassigned] [Bug 14853] New: Incorrect implementation of ArrayImpl's equality operator

bugzilla-daemon at webkit.org bugzilla-daemon at webkit.org
Wed Aug 1 12:04:03 PDT 2007


http://bugs.webkit.org/show_bug.cgi?id=14853

           Summary: Incorrect implementation of ArrayImpl's equality
                    operator
           Product: WebKit
           Version: 312.x
          Platform: All
        OS/Version: All
            Status: UNCONFIRMED
          Severity: Minor
          Priority: P3
         Component: WebCore Misc.
        AssignedTo: webkit-unassigned at lists.webkit.org
        ReportedBy: rick at writhe.org.uk


The ArrayImpl class (as defined in WebCore/platform/ArrayImpl.{h,cpp}) has a
typo in it's equality operator which could lead to an incorrect equality test
and also a buffer overrun (and therefore a potential crash).

The fix is a trivial change to one line of code. The erroneous code contains
the test:
        d->itemSize == d->itemSize
which should be:
        d->itemSize == a.d->itemSize



In practice, the bug will probably never be seen as the only (current) use of
the ArrayImpl class is by DeprecatedArray (and it's subclass
DeprecatedCString). This means that the value of itemSize will always be
sizeof(char) (i.e. 1) for both objects being compared and the equality test
will work correctly.



On the other hand, this bug appears in the exact same form in much older
versions of ArrayImpl. In particular, the existing code has been copied from
WebCore/kwq/KWQArrayImpl.cpp (which was copied from
WebCore/kwq/KWQArrayImpl.mm).

I didn't dig too deep but previous versions of WebKit may have additional
dependencies on these older classes and cases where itemSize is different. This
bug may therefore be more serious in older versions of WebKit.


-- 
Configure bugmail: http://bugs.webkit.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug, or are watching the assignee.



More information about the webkit-unassigned mailing list