<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>15104</bug_id>
          
          <creation_ts>2007-08-28 14:48:59 -0700</creation_ts>
          <short_desc>GIFImageDecoder.cpp buffer overrun prevention bug</short_desc>
          <delta_ts>2007-08-29 10:36:21 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Images</component>
          <version>523.x (Safari 3)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Peter Kasting">pkasting</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1319</commentid>
    <comment_count>0</comment_count>
    <who name="Peter Kasting">pkasting</who>
    <bug_when>2007-08-28 14:48:59 -0700</bug_when>
    <thetext>GIFImageDecoder.cpp (not used by Safari, but used by Cairo/QT) has a bug in some buffer overflow prevention code that results in the frame buffer never being written for rows near the bottom of some interlaced GIFs (resulting in either nothing or garbage showing up for those rows).

Specifically, the repeated rows code in haveDecodedRow() double-compensates for sizeof(unsigned) in its buffer overrun check, by adding a pre-multiplied scalar to a pointer (which causes the compiler to multiply it again).

Patch coming shortly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1317</commentid>
    <comment_count>1</comment_count>
      <attachid>16148</attachid>
    <who name="Peter Kasting">pkasting</who>
    <bug_when>2007-08-28 15:09:54 -0700</bug_when>
    <thetext>Created attachment 16148
patch v1

Simple fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1305</commentid>
    <comment_count>2</comment_count>
      <attachid>16148</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2007-08-28 20:26:51 -0700</bug_when>
    <thetext>Comment on attachment 16148
patch v1

r=me

It might also be helpful to provide a test case of a bad gif like this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1249</commentid>
    <comment_count>3</comment_count>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2007-08-29 10:36:21 -0700</bug_when>
    <thetext>Landed in r25293.  Peter, can you please be sure to use spaces rather than tabs for indentation in your ChangeLog entries?  Thanks! :)</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>16148</attachid>
            <date>2007-08-28 15:09:54 -0700</date>
            <delta_ts>2007-08-28 20:26:51 -0700</delta_ts>
            <desc>patch v1</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>1794</size>
            <attacher name="Peter Kasting">pkasting</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyNTI3OSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTUgQEAKKzIwMDctMDgtMjggIFBldGVyIEthc3RpbmcgIDx6ZXJvZHB4QGdtYWls
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAt
IGZpeCBodHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTEwNAorCURvbid0
IGRvdWJsZS1jb21wZW5zYXRlIGZvciBzaXplb2YodW5zaWduZWQpIHdoZW4gbWFraW5nIGEgYnVm
ZmVyCisJb3ZlcmZsb3cgY2hlY2sgaW4gdGhlIEdJRiBkZWNvZGVyLiAgTm93IGludGVybGFjZWQg
R0lGcyBkb24ndAorCXNvbWV0aW1lcyBnZXQgbm90aGluZy9nYXJiYWdlIGluIHNvbWUgb2YgdGhl
IGJvdHRvbSByb3dzLgorCisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJ
RkltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHSUZJbWFnZURlY29kZXI6Omhh
dmVEZWNvZGVkUm93KToKKwogMjAwNy0wOC0yOCAgTWFyayBSb3dlICA8bXJvd2VAYXBwbGUuY29t
PgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgpJbmRleDogV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuY3Bw
CShyZXZpc2lvbiAyNTI2NykKKysrIFdlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lm
L0dJRkltYWdlRGVjb2Rlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0NSwxMiArMzQ1LDEzIEBA
IHZvaWQgR0lGSW1hZ2VEZWNvZGVyOjpoYXZlRGVjb2RlZFJvdyh1bnMKIAogICAgIGlmIChyZXBl
YXRDb3VudCA+IDEpIHsKICAgICAgICAgLy8gQ29weSB0aGUgcm93IHxyZXBlYXRDb3VudHwtMSB0
aW1lcy4KLSAgICAgICAgdW5zaWduZWQgc2l6ZSA9IChjdXJyRHN0IC0gZHN0KSAqIHNpemVvZih1
bnNpZ25lZCk7CisgICAgICAgIHVuc2lnbmVkIG51bSA9IGN1cnJEc3QgLSBkc3Q7CisgICAgICAg
IHVuc2lnbmVkIHNpemUgPSBudW0gKiBzaXplb2YodW5zaWduZWQpOwogICAgICAgICB1bnNpZ25l
ZCB3aWR0aCA9IG1fc2l6ZS53aWR0aCgpOwogICAgICAgICB1bnNpZ25lZCogZW5kID0gYnVmZmVy
LmJ5dGVzKCkuZGF0YSgpICsgd2lkdGggKiBtX3NpemUuaGVpZ2h0KCk7CiAgICAgICAgIGN1cnJE
c3QgPSBkc3QgKyB3aWR0aDsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMTsgaSA8IHJlcGVh
dENvdW50OyBpKyspIHsKLSAgICAgICAgICAgIGlmIChjdXJyRHN0ICsgc2l6ZSA+IGVuZCkgLy8g
UHJvdGVjdCBhZ2FpbnN0IGEgYnVmZmVyIG92ZXJydW4gZnJvbSBhIGJvZ3VzIHJlcGVhdENvdW50
LgorICAgICAgICAgICAgaWYgKGN1cnJEc3QgKyBudW0gPiBlbmQpIC8vIFByb3RlY3QgYWdhaW5z
dCBhIGJ1ZmZlciBvdmVycnVuIGZyb20gYSBib2d1cyByZXBlYXRDb3VudC4KICAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgIG1lbWNweShjdXJyRHN0LCBkc3QsIHNpemUpOwogICAg
ICAgICAgICAgY3VyckRzdCArPSB3aWR0aDsK
</data>
<flag name="review"
          id="6785"
          type_id="1"
          status="+"
          setter="mjs"
    />
          </attachment>
      

    </bug>

</bugzilla>