<?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>80465</bug_id>
          
          <creation_ts>2012-03-06 18:04:11 -0800</creation_ts>
          <short_desc>Integer overflow check code in arithmetic operation in classic interpreter</short_desc>
          <delta_ts>2012-03-12 10:31:47 -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>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</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>Minor</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="SangGyu Lee">sg5.lee</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>barraclough</cc>
    
    <cc>fpizlo</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>572382</commentid>
    <comment_count>0</comment_count>
    <who name="SangGyu Lee">sg5.lee</who>
    <bug_when>2012-03-06 18:04:11 -0800</bug_when>
    <thetext>Classic Interpreter checks whether integer arithmetic operation will cause overflow in privateExecute().

Currently the check code is like followings:

    DEFINE_OPCODE(op_add) {
        /* add dst(r) src1(r) src2(r)

           Adds register src1 and register src2, and puts the result
           in register dst. (JS add may be string concatenation or
           numeric add, depending on the types of the operands.)
        */
        int dst = vPC[1].u.operand;
        JSValue src1 = callFrame-&gt;r(vPC[2].u.operand).jsValue();
        JSValue src2 = callFrame-&gt;r(vPC[3].u.operand).jsValue();
        if (src1.isInt32() &amp;&amp; src2.isInt32() &amp;&amp; !(src1.asInt32() | (src2.asInt32() &amp; 0xc0000000))) // no overflow            callFrame-&gt;uncheckedR(dst) = jsNumber(src1.asInt32() + src2.asInt32());
        else {
            JSValue result = jsAdd(callFrame, src1, src2);
            CHECK_FOR_EXCEPTION();
            callFrame-&gt;uncheckedR(dst) = result;
        }


I can&apos;t understand the test condition

   ... &amp;&amp; !(src1.asInt32() | (src2.asInt32() &amp; 0xc0000000))) // no overflow

If src1 is not zero, it would falling to else condition (jsAdd).

For simple example, both src1 and src2 is 1, it fails the condition:

   ... &amp;&amp; !((src1.asInt32() | src2.asInt32()) &amp; 0xc0000000))


I wonder if is a mistake, and the original intention is 

   ... &amp;&amp; !((src1.asInt32() | src2.asInt32()) &amp; 0xc0000000))


Please see the change in parenthesis.

If both of src1 and src2 have most two significant bits as zero, no overflow can occurs.
Although, it is conservative, but is fast and simple check.

op_sub has same condition.


I have same question about op_mul.


        if (src1.isInt32() &amp;&amp; src2.isInt32() &amp;&amp; !(src1.asInt32() | src2.asInt32() &gt;&gt; 15)) // no overflow


the test expression should be like followings:


 ... &amp;&amp; !( (src1.asInt32() | src2.asInt32()) &gt;&gt; 15)) // no overflow


Please see added parenthesis. 
Since bit-shift operator&apos;s precedence is high than bit OR, parenthesis is necessary.

If both src1 and src2 have most 16 significant bits as zero, no overflow can occurs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>572638</commentid>
    <comment_count>1</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2012-03-07 00:24:43 -0800</bug_when>
    <thetext>(In reply to comment #0)
&gt; I wonder if is a mistake, and the original intention is 

Ouch, yes, I think you&apos;re right.

&gt; Although, it is conservative, but is fast and simple check.

Yes, that is the intention.

&gt; If both src1 and src2 have most 16 significant bits as zero, no overflow can occurs.

Yes, again I think you&apos;re right.

One detail, actually you need the top 17 bits to be zero.  Multiplying two 16 bit values requires nearly the full 32-bit range (2^16 - 1)^2 == 2^32 - 2^17 + 1, so cannot be  represented with a signed integer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>575873</commentid>
    <comment_count>2</comment_count>
      <attachid>131266</attachid>
    <who name="SangGyu Lee">sg5.lee</who>
    <bug_when>2012-03-11 18:20:24 -0700</bug_when>
    <thetext>Created attachment 131266
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>575895</commentid>
    <comment_count>3</comment_count>
      <attachid>131266</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2012-03-11 19:28:11 -0700</bug_when>
    <thetext>Comment on attachment 131266
Patch

See my last comment, changing the value &apos;15&apos; to &apos;16&apos; is incorrect, you will fail to detect overflow in the case of values such as 0xFFFF * 0xFFFF.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>575901</commentid>
    <comment_count>4</comment_count>
    <who name="SangGyu Lee">sg5.lee</who>
    <bug_when>2012-03-11 19:49:48 -0700</bug_when>
    <thetext>I am sorry for my mistake. I incorrectly assumed the operand is a unsigned number. As your kind and concise comment, 16 bit is not enough for the cases like 0xFFFF x 0xFFFF.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>575902</commentid>
    <comment_count>5</comment_count>
      <attachid>131274</attachid>
    <who name="SangGyu Lee">sg5.lee</who>
    <bug_when>2012-03-11 19:52:36 -0700</bug_when>
    <thetext>Created attachment 131274
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>575938</commentid>
    <comment_count>6</comment_count>
      <attachid>131274</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2012-03-11 22:17:15 -0700</bug_when>
    <thetext>Comment on attachment 131274
Patch

Sorry, still not quite there! - we need to check the top 17 bits are all zero - we can ignore the bottom 15 bits.  So the shift count needs to be 15, not 17!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>576016</commentid>
    <comment_count>7</comment_count>
    <who name="SangGyu Lee">sg5.lee</who>
    <bug_when>2012-03-12 02:15:46 -0700</bug_when>
    <thetext>I am sorry, and thank you for fixing my stupid mistake.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>576019</commentid>
    <comment_count>8</comment_count>
      <attachid>131299</attachid>
    <who name="SangGyu Lee">sg5.lee</who>
    <bug_when>2012-03-12 02:20:47 -0700</bug_when>
    <thetext>Created attachment 131299
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>576209</commentid>
    <comment_count>9</comment_count>
      <attachid>131299</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2012-03-12 10:04:10 -0700</bug_when>
    <thetext>Comment on attachment 131299
Patch

Looks good, great catch - thanks for fixing this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>576246</commentid>
    <comment_count>10</comment_count>
      <attachid>131299</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-12 10:31:42 -0700</bug_when>
    <thetext>Comment on attachment 131299
Patch

Clearing flags on attachment: 131299

Committed r110443: &lt;http://trac.webkit.org/changeset/110443&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>576247</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-12 10:31:47 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>131266</attachid>
            <date>2012-03-11 18:20:24 -0700</date>
            <delta_ts>2012-03-11 19:52:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-80465-20120312102022.patch</filename>
            <type>text/plain</type>
            <size>3068</size>
            <attacher name="SangGyu Lee">sg5.lee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEwMjQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
MjAwMDg5MTIwNzRjYmVhYWE3M2JlYjFmNmZmNTJiZDRjMGRmNGZjLi4yMzViOGU1MGJhNmQ0YzEy
MDZmOGMxMTUxYzdiOTgzMDYzMmRiNTQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMyBAQAorMjAxMi0wMy0xMSAgU2FuZ0d5dSBMZWUgIDxzZzUubGVlQHNhbXN1bmcuY29t
PgorCisgICAgICAgIEludGVnZXIgb3ZlcmZsb3cgY2hlY2sgY29kZSBpbiBhcml0aG1ldGljIG9w
ZXJhdGlvbiBpbiBjbGFzc2ljIGludGVycHJldGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MDQ2NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwOgorICAg
ICAgICAoSlNDOjpJbnRlcnByZXRlcjo6cHJpdmF0ZUV4ZWN1dGUpOgorCiAyMDEyLTAzLTA4ICBS
eW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIE1hYyBidWlsZCBmaXgg
Zm9yIG1pY3JvIGRhdGEgQVBJLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
dGVycHJldGVyL0ludGVycHJldGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnBy
ZXRlci9JbnRlcnByZXRlci5jcHAKaW5kZXggYTc0ZDNkZTg5MTE2OGFhMzY1Nzc5ZTAyMDBhZTY3
ZWQyOGZmYjcyMS4uZjY0Y2ZlYzJjZWIwZDg4ZmY0NDBhNWRhNWM2MjgxYWViNTk3NTlkNCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3Bw
CkBAIC0yMzUyLDcgKzIzNTIsNyBAQCBKU1ZhbHVlIEludGVycHJldGVyOjpwcml2YXRlRXhlY3V0
ZShFeGVjdXRpb25GbGFnIGZsYWcsIFJlZ2lzdGVyRmlsZSogcmVnaXN0ZXJGaQogICAgICAgICBp
bnQgZHN0ID0gdlBDWzFdLnUub3BlcmFuZDsKICAgICAgICAgSlNWYWx1ZSBzcmMxID0gY2FsbEZy
YW1lLT5yKHZQQ1syXS51Lm9wZXJhbmQpLmpzVmFsdWUoKTsKICAgICAgICAgSlNWYWx1ZSBzcmMy
ID0gY2FsbEZyYW1lLT5yKHZQQ1szXS51Lm9wZXJhbmQpLmpzVmFsdWUoKTsKLSAgICAgICAgaWYg
KHNyYzEuaXNJbnQzMigpICYmIHNyYzIuaXNJbnQzMigpICYmICEoc3JjMS5hc0ludDMyKCkgfCAo
c3JjMi5hc0ludDMyKCkgJiAweGMwMDAwMDAwKSkpIC8vIG5vIG92ZXJmbG93CisgICAgICAgIGlm
IChzcmMxLmlzSW50MzIoKSAmJiBzcmMyLmlzSW50MzIoKSAmJiAhKChzcmMxLmFzSW50MzIoKSB8
IHNyYzIuYXNJbnQzMigpKSAmIDB4YzAwMDAwMDApKSAvLyBubyBvdmVyZmxvdwogICAgICAgICAg
ICAgY2FsbEZyYW1lLT51bmNoZWNrZWRSKGRzdCkgPSBqc051bWJlcihzcmMxLmFzSW50MzIoKSAr
IHNyYzIuYXNJbnQzMigpKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBKU1ZhbHVlIHJl
c3VsdCA9IGpzQWRkKGNhbGxGcmFtZSwgc3JjMSwgc3JjMik7CkBAIC0yMzcxLDcgKzIzNzEsNyBA
QCBKU1ZhbHVlIEludGVycHJldGVyOjpwcml2YXRlRXhlY3V0ZShFeGVjdXRpb25GbGFnIGZsYWcs
IFJlZ2lzdGVyRmlsZSogcmVnaXN0ZXJGaQogICAgICAgICBpbnQgZHN0ID0gdlBDWzFdLnUub3Bl
cmFuZDsKICAgICAgICAgSlNWYWx1ZSBzcmMxID0gY2FsbEZyYW1lLT5yKHZQQ1syXS51Lm9wZXJh
bmQpLmpzVmFsdWUoKTsKICAgICAgICAgSlNWYWx1ZSBzcmMyID0gY2FsbEZyYW1lLT5yKHZQQ1sz
XS51Lm9wZXJhbmQpLmpzVmFsdWUoKTsKLSAgICAgICAgaWYgKHNyYzEuaXNJbnQzMigpICYmIHNy
YzIuaXNJbnQzMigpICYmICEoc3JjMS5hc0ludDMyKCkgfCBzcmMyLmFzSW50MzIoKSA+PiAxNSkp
IC8vIG5vIG92ZXJmbG93CisgICAgICAgIGlmIChzcmMxLmlzSW50MzIoKSAmJiBzcmMyLmlzSW50
MzIoKSAmJiAhKHNyYzEuYXNJbnQzMigpIHwgc3JjMi5hc0ludDMyKCkpID4+IDE2KSAvLyBubyBv
dmVyZmxvdwogICAgICAgICAgICAgICAgIGNhbGxGcmFtZS0+dW5jaGVja2VkUihkc3QpID0ganNO
dW1iZXIoc3JjMS5hc0ludDMyKCkgKiBzcmMyLmFzSW50MzIoKSk7CiAgICAgICAgIGVsc2Ugewog
ICAgICAgICAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihzcmMxLnRvTnVtYmVyKGNhbGxG
cmFtZSkgKiBzcmMyLnRvTnVtYmVyKGNhbGxGcmFtZSkpOwpAQCAtMjQzOSw3ICsyNDM5LDcgQEAg
SlNWYWx1ZSBJbnRlcnByZXRlcjo6cHJpdmF0ZUV4ZWN1dGUoRXhlY3V0aW9uRmxhZyBmbGFnLCBS
ZWdpc3RlckZpbGUqIHJlZ2lzdGVyRmkKICAgICAgICAgaW50IGRzdCA9IHZQQ1sxXS51Lm9wZXJh
bmQ7CiAgICAgICAgIEpTVmFsdWUgc3JjMSA9IGNhbGxGcmFtZS0+cih2UENbMl0udS5vcGVyYW5k
KS5qc1ZhbHVlKCk7CiAgICAgICAgIEpTVmFsdWUgc3JjMiA9IGNhbGxGcmFtZS0+cih2UENbM10u
dS5vcGVyYW5kKS5qc1ZhbHVlKCk7Ci0gICAgICAgIGlmIChzcmMxLmlzSW50MzIoKSAmJiBzcmMy
LmlzSW50MzIoKSAmJiAhKHNyYzEuYXNJbnQzMigpIHwgKHNyYzIuYXNJbnQzMigpICYgMHhjMDAw
MDAwMCkpKSAvLyBubyBvdmVyZmxvdworICAgICAgICBpZiAoc3JjMS5pc0ludDMyKCkgJiYgc3Jj
Mi5pc0ludDMyKCkgJiYgISgoc3JjMS5hc0ludDMyKCkgfCBzcmMyLmFzSW50MzIoKSkgJiAweGMw
MDAwMDAwKSkgLy8gbm8gb3ZlcmZsb3cKICAgICAgICAgICAgIGNhbGxGcmFtZS0+dW5jaGVja2Vk
Uihkc3QpID0ganNOdW1iZXIoc3JjMS5hc0ludDMyKCkgLSBzcmMyLmFzSW50MzIoKSk7CiAgICAg
ICAgIGVsc2UgewogICAgICAgICAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihzcmMxLnRv
TnVtYmVyKGNhbGxGcmFtZSkgLSBzcmMyLnRvTnVtYmVyKGNhbGxGcmFtZSkpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>131274</attachid>
            <date>2012-03-11 19:52:36 -0700</date>
            <delta_ts>2012-03-12 02:20:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-80465-20120312115234.patch</filename>
            <type>text/plain</type>
            <size>3068</size>
            <attacher name="SangGyu Lee">sg5.lee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEwMjQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
MjAwMDg5MTIwNzRjYmVhYWE3M2JlYjFmNmZmNTJiZDRjMGRmNGZjLi4yMzViOGU1MGJhNmQ0YzEy
MDZmOGMxMTUxYzdiOTgzMDYzMmRiNTQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMyBAQAorMjAxMi0wMy0xMSAgU2FuZ0d5dSBMZWUgIDxzZzUubGVlQHNhbXN1bmcuY29t
PgorCisgICAgICAgIEludGVnZXIgb3ZlcmZsb3cgY2hlY2sgY29kZSBpbiBhcml0aG1ldGljIG9w
ZXJhdGlvbiBpbiBjbGFzc2ljIGludGVycHJldGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MDQ2NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwOgorICAg
ICAgICAoSlNDOjpJbnRlcnByZXRlcjo6cHJpdmF0ZUV4ZWN1dGUpOgorCiAyMDEyLTAzLTA4ICBS
eW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIE1hYyBidWlsZCBmaXgg
Zm9yIG1pY3JvIGRhdGEgQVBJLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
dGVycHJldGVyL0ludGVycHJldGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnBy
ZXRlci9JbnRlcnByZXRlci5jcHAKaW5kZXggYTc0ZDNkZTg5MTE2OGFhMzY1Nzc5ZTAyMDBhZTY3
ZWQyOGZmYjcyMS4uYmNjNmRkMGRhMTM0ZTg2ZmIyNDU3YTkxYmUxMDg0ZTYwNWE4NjBlNiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3Bw
CkBAIC0yMzUyLDcgKzIzNTIsNyBAQCBKU1ZhbHVlIEludGVycHJldGVyOjpwcml2YXRlRXhlY3V0
ZShFeGVjdXRpb25GbGFnIGZsYWcsIFJlZ2lzdGVyRmlsZSogcmVnaXN0ZXJGaQogICAgICAgICBp
bnQgZHN0ID0gdlBDWzFdLnUub3BlcmFuZDsKICAgICAgICAgSlNWYWx1ZSBzcmMxID0gY2FsbEZy
YW1lLT5yKHZQQ1syXS51Lm9wZXJhbmQpLmpzVmFsdWUoKTsKICAgICAgICAgSlNWYWx1ZSBzcmMy
ID0gY2FsbEZyYW1lLT5yKHZQQ1szXS51Lm9wZXJhbmQpLmpzVmFsdWUoKTsKLSAgICAgICAgaWYg
KHNyYzEuaXNJbnQzMigpICYmIHNyYzIuaXNJbnQzMigpICYmICEoc3JjMS5hc0ludDMyKCkgfCAo
c3JjMi5hc0ludDMyKCkgJiAweGMwMDAwMDAwKSkpIC8vIG5vIG92ZXJmbG93CisgICAgICAgIGlm
IChzcmMxLmlzSW50MzIoKSAmJiBzcmMyLmlzSW50MzIoKSAmJiAhKChzcmMxLmFzSW50MzIoKSB8
IHNyYzIuYXNJbnQzMigpKSAmIDB4YzAwMDAwMDApKSAvLyBubyBvdmVyZmxvdwogICAgICAgICAg
ICAgY2FsbEZyYW1lLT51bmNoZWNrZWRSKGRzdCkgPSBqc051bWJlcihzcmMxLmFzSW50MzIoKSAr
IHNyYzIuYXNJbnQzMigpKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBKU1ZhbHVlIHJl
c3VsdCA9IGpzQWRkKGNhbGxGcmFtZSwgc3JjMSwgc3JjMik7CkBAIC0yMzcxLDcgKzIzNzEsNyBA
QCBKU1ZhbHVlIEludGVycHJldGVyOjpwcml2YXRlRXhlY3V0ZShFeGVjdXRpb25GbGFnIGZsYWcs
IFJlZ2lzdGVyRmlsZSogcmVnaXN0ZXJGaQogICAgICAgICBpbnQgZHN0ID0gdlBDWzFdLnUub3Bl
cmFuZDsKICAgICAgICAgSlNWYWx1ZSBzcmMxID0gY2FsbEZyYW1lLT5yKHZQQ1syXS51Lm9wZXJh
bmQpLmpzVmFsdWUoKTsKICAgICAgICAgSlNWYWx1ZSBzcmMyID0gY2FsbEZyYW1lLT5yKHZQQ1sz
XS51Lm9wZXJhbmQpLmpzVmFsdWUoKTsKLSAgICAgICAgaWYgKHNyYzEuaXNJbnQzMigpICYmIHNy
YzIuaXNJbnQzMigpICYmICEoc3JjMS5hc0ludDMyKCkgfCBzcmMyLmFzSW50MzIoKSA+PiAxNSkp
IC8vIG5vIG92ZXJmbG93CisgICAgICAgIGlmIChzcmMxLmlzSW50MzIoKSAmJiBzcmMyLmlzSW50
MzIoKSAmJiAhKHNyYzEuYXNJbnQzMigpIHwgc3JjMi5hc0ludDMyKCkpID4+IDE3KSAvLyBubyBv
dmVyZmxvdwogICAgICAgICAgICAgICAgIGNhbGxGcmFtZS0+dW5jaGVja2VkUihkc3QpID0ganNO
dW1iZXIoc3JjMS5hc0ludDMyKCkgKiBzcmMyLmFzSW50MzIoKSk7CiAgICAgICAgIGVsc2Ugewog
ICAgICAgICAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihzcmMxLnRvTnVtYmVyKGNhbGxG
cmFtZSkgKiBzcmMyLnRvTnVtYmVyKGNhbGxGcmFtZSkpOwpAQCAtMjQzOSw3ICsyNDM5LDcgQEAg
SlNWYWx1ZSBJbnRlcnByZXRlcjo6cHJpdmF0ZUV4ZWN1dGUoRXhlY3V0aW9uRmxhZyBmbGFnLCBS
ZWdpc3RlckZpbGUqIHJlZ2lzdGVyRmkKICAgICAgICAgaW50IGRzdCA9IHZQQ1sxXS51Lm9wZXJh
bmQ7CiAgICAgICAgIEpTVmFsdWUgc3JjMSA9IGNhbGxGcmFtZS0+cih2UENbMl0udS5vcGVyYW5k
KS5qc1ZhbHVlKCk7CiAgICAgICAgIEpTVmFsdWUgc3JjMiA9IGNhbGxGcmFtZS0+cih2UENbM10u
dS5vcGVyYW5kKS5qc1ZhbHVlKCk7Ci0gICAgICAgIGlmIChzcmMxLmlzSW50MzIoKSAmJiBzcmMy
LmlzSW50MzIoKSAmJiAhKHNyYzEuYXNJbnQzMigpIHwgKHNyYzIuYXNJbnQzMigpICYgMHhjMDAw
MDAwMCkpKSAvLyBubyBvdmVyZmxvdworICAgICAgICBpZiAoc3JjMS5pc0ludDMyKCkgJiYgc3Jj
Mi5pc0ludDMyKCkgJiYgISgoc3JjMS5hc0ludDMyKCkgfCBzcmMyLmFzSW50MzIoKSkgJiAweGMw
MDAwMDAwKSkgLy8gbm8gb3ZlcmZsb3cKICAgICAgICAgICAgIGNhbGxGcmFtZS0+dW5jaGVja2Vk
Uihkc3QpID0ganNOdW1iZXIoc3JjMS5hc0ludDMyKCkgLSBzcmMyLmFzSW50MzIoKSk7CiAgICAg
ICAgIGVsc2UgewogICAgICAgICAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihzcmMxLnRv
TnVtYmVyKGNhbGxGcmFtZSkgLSBzcmMyLnRvTnVtYmVyKGNhbGxGcmFtZSkpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>131299</attachid>
            <date>2012-03-12 02:20:47 -0700</date>
            <delta_ts>2012-03-12 10:31:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-80465-20120312182043.patch</filename>
            <type>text/plain</type>
            <size>3068</size>
            <attacher name="SangGyu Lee">sg5.lee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEwMjQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
MjAwMDg5MTIwNzRjYmVhYWE3M2JlYjFmNmZmNTJiZDRjMGRmNGZjLi4yMzViOGU1MGJhNmQ0YzEy
MDZmOGMxMTUxYzdiOTgzMDYzMmRiNTQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMyBAQAorMjAxMi0wMy0xMSAgU2FuZ0d5dSBMZWUgIDxzZzUubGVlQHNhbXN1bmcuY29t
PgorCisgICAgICAgIEludGVnZXIgb3ZlcmZsb3cgY2hlY2sgY29kZSBpbiBhcml0aG1ldGljIG9w
ZXJhdGlvbiBpbiBjbGFzc2ljIGludGVycHJldGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MDQ2NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwOgorICAg
ICAgICAoSlNDOjpJbnRlcnByZXRlcjo6cHJpdmF0ZUV4ZWN1dGUpOgorCiAyMDEyLTAzLTA4ICBS
eW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIE1hYyBidWlsZCBmaXgg
Zm9yIG1pY3JvIGRhdGEgQVBJLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
dGVycHJldGVyL0ludGVycHJldGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnBy
ZXRlci9JbnRlcnByZXRlci5jcHAKaW5kZXggYTc0ZDNkZTg5MTE2OGFhMzY1Nzc5ZTAyMDBhZTY3
ZWQyOGZmYjcyMS4uY2M1YmIwMzkzYWQwOWVlZTk1YWFhYTRiOTFkZDkxZTdmMWJlOWEzZCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3Bw
CkBAIC0yMzUyLDcgKzIzNTIsNyBAQCBKU1ZhbHVlIEludGVycHJldGVyOjpwcml2YXRlRXhlY3V0
ZShFeGVjdXRpb25GbGFnIGZsYWcsIFJlZ2lzdGVyRmlsZSogcmVnaXN0ZXJGaQogICAgICAgICBp
bnQgZHN0ID0gdlBDWzFdLnUub3BlcmFuZDsKICAgICAgICAgSlNWYWx1ZSBzcmMxID0gY2FsbEZy
YW1lLT5yKHZQQ1syXS51Lm9wZXJhbmQpLmpzVmFsdWUoKTsKICAgICAgICAgSlNWYWx1ZSBzcmMy
ID0gY2FsbEZyYW1lLT5yKHZQQ1szXS51Lm9wZXJhbmQpLmpzVmFsdWUoKTsKLSAgICAgICAgaWYg
KHNyYzEuaXNJbnQzMigpICYmIHNyYzIuaXNJbnQzMigpICYmICEoc3JjMS5hc0ludDMyKCkgfCAo
c3JjMi5hc0ludDMyKCkgJiAweGMwMDAwMDAwKSkpIC8vIG5vIG92ZXJmbG93CisgICAgICAgIGlm
IChzcmMxLmlzSW50MzIoKSAmJiBzcmMyLmlzSW50MzIoKSAmJiAhKChzcmMxLmFzSW50MzIoKSB8
IHNyYzIuYXNJbnQzMigpKSAmIDB4YzAwMDAwMDApKSAvLyBubyBvdmVyZmxvdwogICAgICAgICAg
ICAgY2FsbEZyYW1lLT51bmNoZWNrZWRSKGRzdCkgPSBqc051bWJlcihzcmMxLmFzSW50MzIoKSAr
IHNyYzIuYXNJbnQzMigpKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBKU1ZhbHVlIHJl
c3VsdCA9IGpzQWRkKGNhbGxGcmFtZSwgc3JjMSwgc3JjMik7CkBAIC0yMzcxLDcgKzIzNzEsNyBA
QCBKU1ZhbHVlIEludGVycHJldGVyOjpwcml2YXRlRXhlY3V0ZShFeGVjdXRpb25GbGFnIGZsYWcs
IFJlZ2lzdGVyRmlsZSogcmVnaXN0ZXJGaQogICAgICAgICBpbnQgZHN0ID0gdlBDWzFdLnUub3Bl
cmFuZDsKICAgICAgICAgSlNWYWx1ZSBzcmMxID0gY2FsbEZyYW1lLT5yKHZQQ1syXS51Lm9wZXJh
bmQpLmpzVmFsdWUoKTsKICAgICAgICAgSlNWYWx1ZSBzcmMyID0gY2FsbEZyYW1lLT5yKHZQQ1sz
XS51Lm9wZXJhbmQpLmpzVmFsdWUoKTsKLSAgICAgICAgaWYgKHNyYzEuaXNJbnQzMigpICYmIHNy
YzIuaXNJbnQzMigpICYmICEoc3JjMS5hc0ludDMyKCkgfCBzcmMyLmFzSW50MzIoKSA+PiAxNSkp
IC8vIG5vIG92ZXJmbG93CisgICAgICAgIGlmIChzcmMxLmlzSW50MzIoKSAmJiBzcmMyLmlzSW50
MzIoKSAmJiAhKHNyYzEuYXNJbnQzMigpIHwgc3JjMi5hc0ludDMyKCkpID4+IDE1KSAvLyBubyBv
dmVyZmxvdwogICAgICAgICAgICAgICAgIGNhbGxGcmFtZS0+dW5jaGVja2VkUihkc3QpID0ganNO
dW1iZXIoc3JjMS5hc0ludDMyKCkgKiBzcmMyLmFzSW50MzIoKSk7CiAgICAgICAgIGVsc2Ugewog
ICAgICAgICAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihzcmMxLnRvTnVtYmVyKGNhbGxG
cmFtZSkgKiBzcmMyLnRvTnVtYmVyKGNhbGxGcmFtZSkpOwpAQCAtMjQzOSw3ICsyNDM5LDcgQEAg
SlNWYWx1ZSBJbnRlcnByZXRlcjo6cHJpdmF0ZUV4ZWN1dGUoRXhlY3V0aW9uRmxhZyBmbGFnLCBS
ZWdpc3RlckZpbGUqIHJlZ2lzdGVyRmkKICAgICAgICAgaW50IGRzdCA9IHZQQ1sxXS51Lm9wZXJh
bmQ7CiAgICAgICAgIEpTVmFsdWUgc3JjMSA9IGNhbGxGcmFtZS0+cih2UENbMl0udS5vcGVyYW5k
KS5qc1ZhbHVlKCk7CiAgICAgICAgIEpTVmFsdWUgc3JjMiA9IGNhbGxGcmFtZS0+cih2UENbM10u
dS5vcGVyYW5kKS5qc1ZhbHVlKCk7Ci0gICAgICAgIGlmIChzcmMxLmlzSW50MzIoKSAmJiBzcmMy
LmlzSW50MzIoKSAmJiAhKHNyYzEuYXNJbnQzMigpIHwgKHNyYzIuYXNJbnQzMigpICYgMHhjMDAw
MDAwMCkpKSAvLyBubyBvdmVyZmxvdworICAgICAgICBpZiAoc3JjMS5pc0ludDMyKCkgJiYgc3Jj
Mi5pc0ludDMyKCkgJiYgISgoc3JjMS5hc0ludDMyKCkgfCBzcmMyLmFzSW50MzIoKSkgJiAweGMw
MDAwMDAwKSkgLy8gbm8gb3ZlcmZsb3cKICAgICAgICAgICAgIGNhbGxGcmFtZS0+dW5jaGVja2Vk
Uihkc3QpID0ganNOdW1iZXIoc3JjMS5hc0ludDMyKCkgLSBzcmMyLmFzSW50MzIoKSk7CiAgICAg
ICAgIGVsc2UgewogICAgICAgICAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihzcmMxLnRv
TnVtYmVyKGNhbGxGcmFtZSkgLSBzcmMyLnRvTnVtYmVyKGNhbGxGcmFtZSkpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>