<?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>65926</bug_id>
          
          <creation_ts>2011-08-09 10:08:45 -0700</creation_ts>
          <short_desc>ResourceLoader::didReceiveDataArray() does not handle m_shouldBufferData correctly</short_desc>
          <delta_ts>2011-08-12 13:35:58 -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>Platform</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</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>
          
          <blocked>61863</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Pratik Solanki">psolanki</reporter>
          <assigned_to name="Pratik Solanki">psolanki</assigned_to>
          <cc>ap</cc>
    
    <cc>jberlin</cc>
    
    <cc>psolanki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>448641</commentid>
    <comment_count>0</comment_count>
    <who name="Pratik Solanki">psolanki</who>
    <bug_when>2011-08-09 10:08:45 -0700</bug_when>
    <thetext>This was noticed in &lt;https://bugs.webkit.org/show_bug.cgi?id=61863#c11&gt; by Alexey. ResourceLoader::didReceiveDataArray() does an early bailout if m_shouldBufferData is set to false. It does not call through to the client and pass the data like didReceiveData() does.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>449271</commentid>
    <comment_count>1</comment_count>
      <attachid>103510</attachid>
    <who name="Pratik Solanki">psolanki</who>
    <bug_when>2011-08-10 11:44:55 -0700</bug_when>
    <thetext>Created attachment 103510
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>450291</commentid>
    <comment_count>2</comment_count>
    <who name="Pratik Solanki">psolanki</who>
    <bug_when>2011-08-11 22:19:14 -0700</bug_when>
    <thetext>I was going to check this in and then I realized that the current code was avoiding copies by calling SharedBuffer::append(CFDataRef). If I change it to call addData() then we end up calling SharedBuffer::append(const char*, int) which would end up copying the char* buffer passed in. I am going to rework this so I can continue to call the SharedBuffer::append(CFDataRef).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>450327</commentid>
    <comment_count>3</comment_count>
      <attachid>103745</attachid>
    <who name="Pratik Solanki">psolanki</who>
    <bug_when>2011-08-12 00:00:58 -0700</bug_when>
    <thetext>Created attachment 103745
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>450337</commentid>
    <comment_count>4</comment_count>
      <attachid>103745</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-08-12 00:38:24 -0700</bug_when>
    <thetext>Comment on attachment 103745
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=103745&amp;action=review

&gt; Source/WebCore/loader/mac/ResourceLoaderMac.mm:80
&gt;      if (!m_resourceData)
&gt;          m_resourceData = SharedBuffer::create();

I don&apos;t think that we are supposed to create m_resourceData unless we&apos;re buffering.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>450440</commentid>
    <comment_count>5</comment_count>
      <attachid>103775</attachid>
    <who name="Pratik Solanki">psolanki</who>
    <bug_when>2011-08-12 08:36:20 -0700</bug_when>
    <thetext>Created attachment 103775
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>450450</commentid>
    <comment_count>6</comment_count>
      <attachid>103775</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-08-12 09:08:24 -0700</bug_when>
    <thetext>Comment on attachment 103775
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=103775&amp;action=review

This patch looks fine, but I had a look at SharedBuffer code, and that doesn&apos;t look correct to me.

1. SharedBuffer(CFDataRef) doesn&apos;t set m_size, which may or may not be by design, but is extremely confusing. If this m_size data member only counts sizes of some data representations, the variable should be called appropriately. And then SharedBuffer::append(CFDataRef) increments m_size?!
2. SharedBuffer::maybeTransferPlatformData() doesn&apos;t set m_size after copying in CFData.
3. SharedBuffer::clearPlatformData() doesn&apos;t clear m_size.
4. SharedBuffer::platformDataSize() only looks at the first chunk, and never at m_dataArray.
5. SharedBuffer::maybeTransferPlatformData() doesn&apos;t transfer m_dataArray.

&gt; Source/WebCore/loader/mac/ResourceLoaderMac.mm:87
&gt; +            if (!m_resourceData)
&gt; +                m_resourceData = SharedBuffer::create();
&gt; +            m_resourceData-&gt;append(data);

You could also copy how it&apos;s done in addData():

        if (!m_resourceData)
            m_resourceData = SharedBuffer::create(data);
        else
            m_resourceData-&gt;append(data);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>450583</commentid>
    <comment_count>7</comment_count>
    <who name="Pratik Solanki">psolanki</who>
    <bug_when>2011-08-12 12:51:39 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 103775 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=103775&amp;action=review
&gt; 
&gt; This patch looks fine, but I had a look at SharedBuffer code, and that doesn&apos;t look correct to me.

I think the confusions stem from the fact that SharedBuffer takes on different roles in different scenarios. In one of the reviews, David Kilzer had suggested we refactor SharedBuffer but I don&apos;t think I filed bug for it.

The data array part of SharedBuffer is different from the CFDataRef part. The latter is used when you create a SharedBuffer that is a wrapper around a single CFDataRef, whereas the data array part behaves more like the version that takes char* buffers.
 
&gt; 1. SharedBuffer(CFDataRef) doesn&apos;t set m_size, which may or may not be by design, but is extremely confusing. If this m_size data member only counts sizes of some data representations, the variable should be called appropriately. And then SharedBuffer::append(CFDataRef) increments m_size?!

I do not expect SharedBuffer::append(CFDataRef) to be called on a SharedBuffer constructed via SharedBuffer(CFDataRef). But yeah, if that were to happen things won&apos;t work correctly. We have 2 fields in SharedBuffer

1. CFDataRef m_cfData - This is the &quot;platform data&quot;
2. Vector&lt;RetainPtr&lt;CFDataRef&gt; &gt; m_dataArray - This is the data array.

&gt; 2. SharedBuffer::maybeTransferPlatformData() doesn&apos;t set m_size after copying in CFData.

I think it should for correctness. Doesn&apos;t look like append() will work correctly. It probably works right now because we don&apos;t call append(const char*, int) on a SharedBuffer that was created with a CFDataRef (i.e. via wrapCFData()).

&gt; 3. SharedBuffer::clearPlatformData() doesn&apos;t clear m_size.

But that seems to be only called from SharedBuffer::clear() which sets m_size to 0.

&gt; 4. SharedBuffer::platformDataSize() only looks at the first chunk, and never at m_dataArray.

Right. the platformData functions only look at the CFDataRef.

&gt; 5. SharedBuffer::maybeTransferPlatformData() doesn&apos;t transfer m_dataArray.

Yeah, it probably should.

&gt; &gt; Source/WebCore/loader/mac/ResourceLoaderMac.mm:87
&gt; &gt; +            if (!m_resourceData)
&gt; &gt; +                m_resourceData = SharedBuffer::create();
&gt; &gt; +            m_resourceData-&gt;append(data);
&gt; 
&gt; You could also copy how it&apos;s done in addData():
&gt; 
&gt;         if (!m_resourceData)
&gt;             m_resourceData = SharedBuffer::create(data);
&gt;         else
&gt;             m_resourceData-&gt;append(data);

I&apos;ll keep it the way I have it since, the CFDataRef constructor won&apos;t work with CFDataArrayRef code.

I think SharedBuffer class is calling for a cleanup!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>450619</commentid>
    <comment_count>8</comment_count>
    <who name="Pratik Solanki">psolanki</who>
    <bug_when>2011-08-12 13:33:25 -0700</bug_when>
    <thetext>Committed r92985: &lt;http://trac.webkit.org/changeset/92985&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>450622</commentid>
    <comment_count>9</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-08-12 13:35:58 -0700</bug_when>
    <thetext>&gt; Right. the platformData functions only look at the CFDataRef.

This means that SharedBuffer::size() will always return a wrong size when m_dataArray is non-empty.

Even though the code has been tested in practice, I&apos;m not convinced that it actually always works without losing parts of response data today.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>103510</attachid>
            <date>2011-08-10 11:44:55 -0700</date>
            <delta_ts>2011-08-11 22:22:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-65926-20110810114454.patch</filename>
            <type>text/plain</type>
            <size>2468</size>
            <attacher name="Pratik Solanki">psolanki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTI3NzcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBjMDEwZmE5NWEyOGVkNTVi
ODgyZjI2YzM5YTEwOGVjMjk1ODFjNjA3Li5jNWM4OTQxZjQ4ZmYwZDNlMTc1ZjU5OTNlZDMxNWEz
OTc3ZDQ4ZjM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTEtMDgtMTAgIFByYXRp
ayBTb2xhbmtpICA8cHNvbGFua2lAYXBwbGUuY29tPgorCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NTkyNgorICAgICAgICBSZXNvdXJjZUxvYWRlcjo6
ZGlkUmVjZWl2ZURhdGFBcnJheSgpIGRvZXMgbm90IGhhbmRsZSBtX3Nob3VsZEJ1ZmZlckRhdGEg
Y29ycmVjdGx5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBsb2FkZXIvbWFjL1Jlc291cmNlTG9hZGVyTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6
UmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhQXJyYXkpOiBNYWtlIHN1cmUgd2UgY2FsbCB0
aGUgY2xpZW50IGNhbGxiYWNrcyB3aGVuCisgICAgICAgIG1fc2hvdWxkQnVmZmVyRGF0YSBpcyBz
ZXQgdG8gZmFsc2UuCisKIDIwMTEtMDgtMTAgIFZzZXZvbG9kIFZsYXNvdiAgPHZzZXZpa0BjaHJv
bWl1bS5vcmc+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogY29uc29sZSBtZXNzYWdlcyBtYXJr
ZXJzIGFyZSBsb3N0IGluIFJlc291cmNlcyBwYW5lbCBhZnRlciBwYWdlIHJlbG9hZApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL21hYy9SZXNvdXJjZUxvYWRlck1hYy5tbSBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9tYWMvUmVzb3VyY2VMb2FkZXJNYWMubW0KaW5kZXggMzJmM2Jm
NDIzOTVlYmZmYmQwMzcwMzIwYzA4YTRhOGFjYzg2ZTQ0My4uZWEzZDBjMzVjZDExOTZjYThhMjQ1
MDU1ZTc5MGE3YzBkMDY3OTY1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL21h
Yy9SZXNvdXJjZUxvYWRlck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvbWFjL1Jl
c291cmNlTG9hZGVyTWFjLm1tCkBAIC03NiwyNCArNzYsMTkgQEAgdm9pZCBSZXNvdXJjZUxvYWRl
cjo6ZGlkUmVjZWl2ZURhdGFBcnJheShDRkFycmF5UmVmIGRhdGFBcnJheSkKICAgICAvLyBhbnl0
aGluZyBpbmNsdWRpbmcgcG9zc2libHkgZGVyZWZpbmcgdGhpczsgb25lIGV4YW1wbGUgb2YgdGhp
cyBpcyBSYWRhciAzMjY2MjE2LgogICAgIFJlZlB0cjxSZXNvdXJjZUxvYWRlcj4gcHJvdGVjdG9y
KHRoaXMpOwogCi0gICAgaWYgKCFtX3Nob3VsZEJ1ZmZlckRhdGEpCi0gICAgICAgIHJldHVybjsK
LQotICAgIGlmICghbV9yZXNvdXJjZURhdGEpCi0gICAgICAgIG1fcmVzb3VyY2VEYXRhID0gU2hh
cmVkQnVmZmVyOjpjcmVhdGUoKTsKLQogICAgIENGSW5kZXggYXJyYXlDb3VudCA9IENGQXJyYXlH
ZXRDb3VudChkYXRhQXJyYXkpOwogICAgIGZvciAoQ0ZJbmRleCBpID0gMDsgaSA8IGFycmF5Q291
bnQ7ICsraSkgewogICAgICAgICBDRkRhdGFSZWYgZGF0YSA9IHN0YXRpY19jYXN0PENGRGF0YVJl
Zj4oQ0ZBcnJheUdldFZhbHVlQXRJbmRleChkYXRhQXJyYXksIGkpKTsKICAgICAgICAgaW50IGRh
dGFMZW4gPSBzdGF0aWNfY2FzdDxpbnQ+KENGRGF0YUdldExlbmd0aChkYXRhKSk7CisgICAgICAg
IGNvbnN0IGNoYXIqIGJ5dGVzID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oQ0ZEYXRh
R2V0Qnl0ZVB0cihkYXRhKSk7CiAKLSAgICAgICAgbV9yZXNvdXJjZURhdGEtPmFwcGVuZChkYXRh
KTsKKyAgICAgICAgYWRkRGF0YShieXRlcywgZGF0YUxlbiwgZmFsc2UpOwogCiAgICAgICAgIC8v
IEZJWE1FOiBJZiB3ZSBnZXQgYSByZXNvdXJjZSB3aXRoIG1vcmUgdGhhbiAyQiBieXRlcywgdGhp
cyBjb2RlIHdvbid0IGRvIHRoZSByaWdodCB0aGluZy4KICAgICAgICAgLy8gSG93ZXZlciwgd2l0
aCB0b2RheSdzIGNvbXB1dGVycyBhbmQgbmV0d29ya2luZyBzcGVlZHMsIHRoaXMgd29uJ3QgaGFw
cGVuIGluIHByYWN0aWNlLgogICAgICAgICAvLyBDb3VsZCBiZSBhbiBpc3N1ZSB3aXRoIGEgZ2lh
bnQgbG9jYWwgZmlsZS4KICAgICAgICAgaWYgKG1fc2VuZFJlc291cmNlTG9hZENhbGxiYWNrcyAm
JiBtX2ZyYW1lKQotICAgICAgICAgICAgZnJhbWVMb2FkZXIoKS0+bm90aWZpZXIoKS0+ZGlkUmVj
ZWl2ZURhdGEodGhpcywgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oQ0ZEYXRhR2V0Qnl0
ZVB0cihkYXRhKSksIGRhdGFMZW4sIGRhdGFMZW4pOworICAgICAgICAgICAgZnJhbWVMb2FkZXIo
KS0+bm90aWZpZXIoKS0+ZGlkUmVjZWl2ZURhdGEodGhpcywgYnl0ZXMsIGRhdGFMZW4sIGRhdGFM
ZW4pOwogICAgIH0KIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>103745</attachid>
            <date>2011-08-12 00:00:58 -0700</date>
            <delta_ts>2011-08-12 08:36:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-65926-20110812000056.patch</filename>
            <type>text/plain</type>
            <size>2012</size>
            <attacher name="Pratik Solanki">psolanki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTI5MTQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA3Yjc1YTQ2MTM1ZmIyNzg5
MTI1MjUxOTk5MWI2ZWY5ZTFjYjNkYWJmLi44OGRjNzM5ZWFlYTQ1ZTI4ZjFkNTA2Y2VlMzQ5YmFi
YmVjMmQ5OWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTEtMDgtMTEgIFByYXRp
ayBTb2xhbmtpICA8cHNvbGFua2lAYXBwbGUuY29tPgorCisgICAgICAgIFJlc291cmNlTG9hZGVy
OjpkaWRSZWNlaXZlRGF0YUFycmF5KCkgZG9lcyBub3QgaGFuZGxlIG1fc2hvdWxkQnVmZmVyRGF0
YSBjb3JyZWN0bHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTY1OTI2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBsb2FkZXIvbWFjL1Jlc291cmNlTG9hZGVyTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6
UmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhQXJyYXkpOiBNYWtlIHN1cmUgd2UgY2FsbCB0
aGUgY2xpZW50IGNhbGxiYWNrcyB3aGVuCisgICAgICAgIG1fc2hvdWxkQnVmZmVyRGF0YSBpcyBz
ZXQgdG8gZmFsc2UuCisKIDIwMTEtMDgtMTEgIEpvaG4gQmF1bWFuICA8amJhdW1hbkBjaHJvbWl1
bS5vcmc+CiAKICAgICAgICAgUmVhZGJhY2sgY29tcG9zaXRlZCB3ZWJnbCByZXN1bHRzIGZvciBw
cmludGluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL21hYy9SZXNvdXJjZUxv
YWRlck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9tYWMvUmVzb3VyY2VMb2FkZXJNYWMu
bW0KaW5kZXggMzJmM2JmNDIzOTVlYmZmYmQwMzcwMzIwYzA4YTRhOGFjYzg2ZTQ0My4uMjNkNzA0
NTJmMTY1MjJiMWNhNzRlM2ZhYWQxZjFhM2NmMDAzYmNhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL21hYy9SZXNvdXJjZUxvYWRlck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvbWFjL1Jlc291cmNlTG9hZGVyTWFjLm1tCkBAIC03Niw5ICs3Niw2IEBAIHZvaWQg
UmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhQXJyYXkoQ0ZBcnJheVJlZiBkYXRhQXJyYXkp
CiAgICAgLy8gYW55dGhpbmcgaW5jbHVkaW5nIHBvc3NpYmx5IGRlcmVmaW5nIHRoaXM7IG9uZSBl
eGFtcGxlIG9mIHRoaXMgaXMgUmFkYXIgMzI2NjIxNi4KICAgICBSZWZQdHI8UmVzb3VyY2VMb2Fk
ZXI+IHByb3RlY3Rvcih0aGlzKTsKIAotICAgIGlmICghbV9zaG91bGRCdWZmZXJEYXRhKQotICAg
ICAgICByZXR1cm47Ci0KICAgICBpZiAoIW1fcmVzb3VyY2VEYXRhKQogICAgICAgICBtX3Jlc291
cmNlRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CiAKQEAgLTg3LDcgKzg0LDggQEAgdm9p
ZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFBcnJheShDRkFycmF5UmVmIGRhdGFBcnJh
eSkKICAgICAgICAgQ0ZEYXRhUmVmIGRhdGEgPSBzdGF0aWNfY2FzdDxDRkRhdGFSZWY+KENGQXJy
YXlHZXRWYWx1ZUF0SW5kZXgoZGF0YUFycmF5LCBpKSk7CiAgICAgICAgIGludCBkYXRhTGVuID0g
c3RhdGljX2Nhc3Q8aW50PihDRkRhdGFHZXRMZW5ndGgoZGF0YSkpOwogCi0gICAgICAgIG1fcmVz
b3VyY2VEYXRhLT5hcHBlbmQoZGF0YSk7CisgICAgICAgIGlmIChtX3Nob3VsZEJ1ZmZlckRhdGEp
CisgICAgICAgICAgICBtX3Jlc291cmNlRGF0YS0+YXBwZW5kKGRhdGEpOwogCiAgICAgICAgIC8v
IEZJWE1FOiBJZiB3ZSBnZXQgYSByZXNvdXJjZSB3aXRoIG1vcmUgdGhhbiAyQiBieXRlcywgdGhp
cyBjb2RlIHdvbid0IGRvIHRoZSByaWdodCB0aGluZy4KICAgICAgICAgLy8gSG93ZXZlciwgd2l0
aCB0b2RheSdzIGNvbXB1dGVycyBhbmQgbmV0d29ya2luZyBzcGVlZHMsIHRoaXMgd29uJ3QgaGFw
cGVuIGluIHByYWN0aWNlLgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>103775</attachid>
            <date>2011-08-12 08:36:20 -0700</date>
            <delta_ts>2011-08-12 09:08:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-65926-20110812083622.patch</filename>
            <type>text/plain</type>
            <size>2140</size>
            <attacher name="Pratik Solanki">psolanki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTI5MTQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA3Yjc1YTQ2MTM1ZmIyNzg5
MTI1MjUxOTk5MWI2ZWY5ZTFjYjNkYWJmLi44OGRjNzM5ZWFlYTQ1ZTI4ZjFkNTA2Y2VlMzQ5YmFi
YmVjMmQ5OWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTEtMDgtMTEgIFByYXRp
ayBTb2xhbmtpICA8cHNvbGFua2lAYXBwbGUuY29tPgorCisgICAgICAgIFJlc291cmNlTG9hZGVy
OjpkaWRSZWNlaXZlRGF0YUFycmF5KCkgZG9lcyBub3QgaGFuZGxlIG1fc2hvdWxkQnVmZmVyRGF0
YSBjb3JyZWN0bHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTY1OTI2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBsb2FkZXIvbWFjL1Jlc291cmNlTG9hZGVyTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6
UmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhQXJyYXkpOiBNYWtlIHN1cmUgd2UgY2FsbCB0
aGUgY2xpZW50IGNhbGxiYWNrcyB3aGVuCisgICAgICAgIG1fc2hvdWxkQnVmZmVyRGF0YSBpcyBz
ZXQgdG8gZmFsc2UuCisKIDIwMTEtMDgtMTEgIEpvaG4gQmF1bWFuICA8amJhdW1hbkBjaHJvbWl1
bS5vcmc+CiAKICAgICAgICAgUmVhZGJhY2sgY29tcG9zaXRlZCB3ZWJnbCByZXN1bHRzIGZvciBw
cmludGluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL21hYy9SZXNvdXJjZUxv
YWRlck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9tYWMvUmVzb3VyY2VMb2FkZXJNYWMu
bW0KaW5kZXggMzJmM2JmNDIzOTVlYmZmYmQwMzcwMzIwYzA4YTRhOGFjYzg2ZTQ0My4uZWQ0YjVh
MThlZjM2M2Y4NjEwZWY5NTM2ODFhNTAwNjhkNjJiM2RkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL21hYy9SZXNvdXJjZUxvYWRlck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvbWFjL1Jlc291cmNlTG9hZGVyTWFjLm1tCkBAIC03NiwxOCArNzYsMTYgQEAgdm9p
ZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFBcnJheShDRkFycmF5UmVmIGRhdGFBcnJh
eSkKICAgICAvLyBhbnl0aGluZyBpbmNsdWRpbmcgcG9zc2libHkgZGVyZWZpbmcgdGhpczsgb25l
IGV4YW1wbGUgb2YgdGhpcyBpcyBSYWRhciAzMjY2MjE2LgogICAgIFJlZlB0cjxSZXNvdXJjZUxv
YWRlcj4gcHJvdGVjdG9yKHRoaXMpOwogCi0gICAgaWYgKCFtX3Nob3VsZEJ1ZmZlckRhdGEpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIGlmICghbV9yZXNvdXJjZURhdGEpCi0gICAgICAgIG1fcmVz
b3VyY2VEYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoKTsKLQogICAgIENGSW5kZXggYXJyYXlD
b3VudCA9IENGQXJyYXlHZXRDb3VudChkYXRhQXJyYXkpOwogICAgIGZvciAoQ0ZJbmRleCBpID0g
MDsgaSA8IGFycmF5Q291bnQ7ICsraSkgewogICAgICAgICBDRkRhdGFSZWYgZGF0YSA9IHN0YXRp
Y19jYXN0PENGRGF0YVJlZj4oQ0ZBcnJheUdldFZhbHVlQXRJbmRleChkYXRhQXJyYXksIGkpKTsK
ICAgICAgICAgaW50IGRhdGFMZW4gPSBzdGF0aWNfY2FzdDxpbnQ+KENGRGF0YUdldExlbmd0aChk
YXRhKSk7CiAKLSAgICAgICAgbV9yZXNvdXJjZURhdGEtPmFwcGVuZChkYXRhKTsKKyAgICAgICAg
aWYgKG1fc2hvdWxkQnVmZmVyRGF0YSkgeworICAgICAgICAgICAgaWYgKCFtX3Jlc291cmNlRGF0
YSkKKyAgICAgICAgICAgICAgICBtX3Jlc291cmNlRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KCk7CisgICAgICAgICAgICBtX3Jlc291cmNlRGF0YS0+YXBwZW5kKGRhdGEpOworICAgICAgICB9
CiAKICAgICAgICAgLy8gRklYTUU6IElmIHdlIGdldCBhIHJlc291cmNlIHdpdGggbW9yZSB0aGFu
IDJCIGJ5dGVzLCB0aGlzIGNvZGUgd29uJ3QgZG8gdGhlIHJpZ2h0IHRoaW5nLgogICAgICAgICAv
LyBIb3dldmVyLCB3aXRoIHRvZGF5J3MgY29tcHV0ZXJzIGFuZCBuZXR3b3JraW5nIHNwZWVkcywg
dGhpcyB3b24ndCBoYXBwZW4gaW4gcHJhY3RpY2UuCg==
</data>
<flag name="review"
          id="99477"
          type_id="1"
          status="+"
          setter="ap"
    />
          </attachment>
      

    </bug>

</bugzilla>