<?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>72342</bug_id>
          
          <creation_ts>2011-11-14 17:57:21 -0800</creation_ts>
          <short_desc>Refactor SecurityOrigin::create to be easier to understand</short_desc>
          <delta_ts>2011-11-17 15:33:31 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</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>71745</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Adam Barth">abarth</reporter>
          <assigned_to name="Adam Barth">abarth</assigned_to>
          <cc>eric</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>502555</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-11-14 17:57:21 -0800</bug_when>
    <thetext>Refactor SecurityOrigin::create to be easier to understand</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>502557</commentid>
    <comment_count>1</comment_count>
      <attachid>115076</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-11-14 17:59:07 -0800</bug_when>
    <thetext>Created attachment 115076
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>502566</commentid>
    <comment_count>2</comment_count>
      <attachid>115076</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-11-14 18:15:45 -0800</bug_when>
    <thetext>Comment on attachment 115076
Patch

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

I&apos;d like to see one more round.

&gt; Source/WebCore/page/SecurityOrigin.cpp:84
&gt; +    return KURL(ParsedURLString, decodeURLEscapeSequences(url.path()));

Why does this work?  Can you add a FIXME about what this should be?

&gt; Source/WebCore/page/SecurityOrigin.cpp:104
&gt; +    // For edge case URLs that were probably misparsed, make sure that the origin is unique.
&gt; +    if (schemeRequiresAuthority(effectiveURL) &amp;&amp; effectiveURL.host().isEmpty())
&gt; +        return true;

Why do we do this?  Should this be a FIXME to remove this?  This smells bad...

&gt; Source/WebCore/page/SecurityOrigin.cpp:109
&gt; +    String protocol = effectiveURL.protocol().lower();
&gt; +
&gt; +    if (SchemeRegistry::shouldTreatURLSchemeAsNoAccess(protocol))
&gt; +        return true;

Why do we lower the protocol here?  Why isn&apos;t SchemeRegistry case agnostic?

&gt; Source/WebCore/page/SecurityOrigin.cpp:117
&gt; +        // FIXME: Should we be using shouldUseInnerURL here?
&gt; +        // We originally did that check to avoid treating blob and filesystem
&gt; +        // urls as unique when it is created from local file urls.

This FIXME is unclear.  Can you explain better what you&apos;re trying to say?

&gt; Source/WebCore/page/SecurityOrigin.cpp:151
&gt; +    : m_protocol(&quot;&quot;)
&gt; +    , m_host(&quot;&quot;)
&gt; +    , m_domain(&quot;&quot;)

Why should this be empty strings instead of null strings?  And what about using String::empty instead of &quot;&quot;?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>505213</commentid>
    <comment_count>3</comment_count>
      <attachid>115076</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-11-17 14:25:32 -0800</bug_when>
    <thetext>Comment on attachment 115076
Patch

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

&gt;&gt; Source/WebCore/page/SecurityOrigin.cpp:109
&gt;&gt; +    if (SchemeRegistry::shouldTreatURLSchemeAsNoAccess(protocol))
&gt;&gt; +        return true;
&gt; 
&gt; Why do we lower the protocol here?  Why isn&apos;t SchemeRegistry case agnostic?

It&apos;s not case agnostic because it uses a hash map lookup.  It could lower the scheme itself, but that would be slow because it often requires a malloc.

&gt;&gt; Source/WebCore/page/SecurityOrigin.cpp:151
&gt;&gt; +    : m_protocol(&quot;&quot;)
&gt;&gt; +    , m_host(&quot;&quot;)
&gt;&gt; +    , m_domain(&quot;&quot;)
&gt; 
&gt; Why should this be empty strings instead of null strings?  And what about using String::empty instead of &quot;&quot;?

We can&apos;t use String::empty because this class is used on multiple threads.  I&apos;m not sure whether we can get away with null strings.

Currently, this constructor matches the other constructor, which is very explicit about converting null strings to empty strings.  I&apos;m inclined to experiment with changing these to null in a future patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>505243</commentid>
    <comment_count>4</comment_count>
      <attachid>115690</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-11-17 14:47:25 -0800</bug_when>
    <thetext>Created attachment 115690
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>505253</commentid>
    <comment_count>5</comment_count>
      <attachid>115690</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-11-17 14:54:00 -0800</bug_when>
    <thetext>Comment on attachment 115690
Patch

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

OK.

&gt; Source/WebCore/page/SecurityOrigin.cpp:196
&gt; +        if (url.protocolIs(&quot;file&quot;)) {
&gt; +            // Unfortunately, we can&apos;t represent all unique origins exactly
&gt; +            // the same way because we need to produce a quirky database
&gt; +            // identifier for file URLs due to persistent storage in some
&gt; +            // embedders of WebKit.
&gt; +            origin-&gt;m_needsDatabaseIdentifierQuirkForFiles = true;
&gt; +        }

Can&apos;t we set this only for origins that matter to the database world?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>505288</commentid>
    <comment_count>6</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-11-17 15:33:31 -0800</bug_when>
    <thetext>Committed r100691: &lt;http://trac.webkit.org/changeset/100691&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>115076</attachid>
            <date>2011-11-14 17:59:07 -0800</date>
            <delta_ts>2011-11-17 14:47:22 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-72342-20111114175905.patch</filename>
            <type>text/plain</type>
            <size>9137</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAwMjEzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGU4ZGZiZmMxZTI0Yzdj
ZjA5YjAwODEzODc2MGQ1YTQ5ZWEyODVhMi4uZDM4OWYyMjQzNTMzNzBmYzFjZGY1MjYzZTU5NmIy
ZmNiZDk4MzgwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDMwIEBACiAyMDExLTExLTE0ICBBZGFt
IEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAKKyAgICAgICAgUmVmYWN0b3IgU2VjdXJpdHlP
cmlnaW46OmNyZWF0ZSB0byBiZSBlYXNpZXIgdG8gdW5kZXJzdGFuZAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzIzNDIKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBPdmVyIHRpbWUsIHRoZSBTZWN1cml0eU9y
aWdpbiBjb25zdHJ1Y3RvciBoYXMgZ3Jvd24gYSBiaXQgb3V0IG9mCisgICAgICAgIGNvbnRyb2wu
ICBUaGlzIHBhdGNoIGF0dGVtcHRzIHRvIHNlcGFyYXRlIHRoZSBkaWZmZXJlbnQgY29uY2VybnMg
aW50bworICAgICAgICBmcmVlIGZ1bmN0aW9ucy4gIFRoZSBnZW5lcmFsIGFwcHJvYWNoIGlzIHRv
IHB1dCBtb3JlIGxvZ2ljIGluIHRoZQorICAgICAgICAiY3JlYXRlIiBmdW5jdGlvbiBhbmQgaW50
cm9kdWNlIGEgc2ltcGxlIGNvbnN0cnVjdG9yIGZvciB1bmlxdWUKKyAgICAgICAgb3JpZ2lucy4K
KworICAgICAgICBUaGlzIHBhdGNoIHNob3VsZG4ndCBjaGFuZ2UgYW55IGJlaGF2aW9yLgorCisg
ICAgICAgICogcGFnZS9TZWN1cml0eU9yaWdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzY2hl
bWVSZXF1aXJlc0F1dGhvcml0eSk6CisgICAgICAgIChXZWJDb3JlOjpzaG91bGRVc2VJbm5lclVS
TCk6CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0SW5uZXJVUkwpOgorICAgICAgICAoV2ViQ29y
ZTo6aXNEaXJlY3RvcnkpOgorICAgICAgICAoV2ViQ29yZTo6c2hvdWxkVHJlYXRBc1VuaXF1ZU9y
aWdpbik6CisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6U2VjdXJpdHlPcmlnaW4p
OgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0ZSk6CisgICAgICAgICog
cGFnZS9TZWN1cml0eU9yaWdpbi5oOgorCisyMDExLTExLTE0ICBBZGFtIEJhcnRoICA8YWJhcnRo
QHdlYmtpdC5vcmc+CisKICAgICAgICAgVW5pcXVlIG9yaWdpbnMgc2hvdWxkbid0IHJlbWVtYmVy
IHRoZWlyIHNjaGVtZSwgaG9zdCwgb3IgcG9ydAogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzIzMDgKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9TZWN1cml0eU9yaWdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3Jp
Z2luLmNwcAppbmRleCBmMWE3ZDY4NWY2ODQxMWY1YzdiZGMyNWY4ZDU0OTkxNzQ1ZTA0MzhmLi41
MzI2YTQ0MzdiNzg1NjcyNWZiNGJiNDhjYzJkNGEyNTNiMDdjZDA1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1NlY3VyaXR5T3JpZ2luLmNwcApAQCAtNDQsODQgKzQ0LDExOCBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiBjb25zdCBpbnQgSW52YWxpZFBvcnQgPSAwOwogY29uc3QgaW50IE1heEFsbG93ZWRQ
b3J0ID0gNjU1MzU7CiAKLXN0YXRpYyBib29sIHNjaGVtZVJlcXVpcmVzQXV0aG9yaXR5KGNvbnN0
IFN0cmluZyYgc2NoZW1lKQorc3RhdGljIGJvb2wgc2NoZW1lUmVxdWlyZXNBdXRob3JpdHkoY29u
c3QgS1VSTCYgdXJsKQogewotICAgIERFRklORV9TVEFUSUNfTE9DQUwoVVJMU2NoZW1lc01hcCwg
c2NoZW1lcywgKCkpOworICAgIC8vIFdlIGV4cGVjdCBVUkxzIHdpdGggdGhlc2Ugc2NoZW1lcyB0
byBoYXZlIGF1dGhvcml0eSBjb21wb25lbnRzLiBJZiB0aGUKKyAgICAvLyBVUkwgbGFja3MgYW4g
YXV0aG9yaXR5IGNvbXBvbmVudCwgd2UgZ2V0IGNvbmNlcm5lZCBhbmQgbWFyayB0aGUgb3JpZ2lu
CisgICAgLy8gYXMgdW5pcXVlLgorICAgIHJldHVybiB1cmwucHJvdG9jb2xJc0luSFRUUEZhbWls
eSgpIHx8IHVybC5wcm90b2NvbElzKCJmdHAiKTsKK30KKworLy8gU29tZSBVUkwgc2NoZW1lcyB1
c2UgbmVzdGVkIFVSTHMgZm9yIHRoZWlyIHNlY3VyaXR5IGNvbnRleHQuIEZvciBleGFtcGxlLAor
Ly8gZmlsZXN5c3RlbSBVUkxzIGxvb2sgbGlrZSB0aGUgZm9sbG93aW5nOgorLy8KKy8vICAgZmls
ZXN5c3RlbTpodHRwOi8vZXhhbXBsZS5jb20vdGVtcG9yYXJ5L3BhdGgvdG8vZmlsZS5wbmcKKy8v
CisvLyBXZSdyZSBzdXBwb3NlZCB0byB1c2UgImh0dHA6Ly9leGFtcGxlLmNvbSIgYXMgdGhlIG9y
aWdpbi4KKy8vCisvLyBHZW5lcmFsbHksIHdlIGFkZCBVUkwgc2NoZW1lcyB0byB0aGlzIGxpc3Qg
d2hlbiBXZWJLaXQgc3VwcG9ydCB0aGVtLiBGb3IKKy8vIGV4YW1wbGUsIHdlIGRvbid0IGluY2x1
ZGUgdGhlICJqYXIiIHNjaGVtZSwgZXZlbiB0aG91Z2ggRmlyZWZveCB1bmRlcnN0YW5kcworLy8g
dGhhdCBqYXIgdXNlcyBhbiBpbm5lciBVUkwgZm9yIGl0J3Mgc2VjdXJpdHkgb3JpZ2luLgorLy8K
K3N0YXRpYyBib29sIHNob3VsZFVzZUlubmVyVVJMKGNvbnN0IEtVUkwmIHVybCkKK3sKKyNpZiBF
TkFCTEUoQkxPQikKKyAgICBpZiAodXJsLnByb3RvY29sSXMoImJsb2IiKSkKKyAgICAgICAgcmV0
dXJuIHRydWU7CisjZW5kaWYKKyNpZiBFTkFCTEUoRklMRV9TWVNURU0pCisgICAgaWYgKHVybC5w
cm90b2NvbElzKCJmaWxlc3lzdGVtIikpCisgICAgICAgIHJldHVybiB0cnVlOworI2VuZGlmCisg
ICAgcmV0dXJuIGZhbHNlOworfQorCisvLyBJbiBnZW5lcmFsLCBleHRyYWN0aW5nIHRoZSBpbm5l
ciBVUkwgdmFyaWVzIGJ5IHNjaGVtZS4gSXQganVzdCBzbyBoYXBwZW5zCisvLyB0aGF0IGFsbCB0
aGUgVVJMIHNjaGVtZXMgd2UgY3VycmVudGx5IHN1cHBvcnQgdGhhdCB1c2UgaW5uZXIgVVJMcyBm
b3IgdGhlaXIKKy8vIHNlY3VyaXR5IG9yaWdpbiBjYW4gYmUgcGFyc2VkIHVzaW5nIHRoaXMgYWxn
b3JpdGhtLgorc3RhdGljIEtVUkwgZXh0cmFjdElubmVyVVJMKGNvbnN0IEtVUkwmIHVybCkKK3sK
KyAgICByZXR1cm4gS1VSTChQYXJzZWRVUkxTdHJpbmcsIGRlY29kZVVSTEVzY2FwZVNlcXVlbmNl
cyh1cmwucGF0aCgpKSk7Cit9CisKK3N0YXRpYyBib29sIGlzRGlyZWN0b3J5KGNvbnN0IFN0cmlu
ZyYgcGF0aCkKK3sKKyAgICByZXR1cm4gcGF0aC5lbmRzV2l0aCgiLyIpOworfQorCitzdGF0aWMg
Ym9vbCBzaG91bGRUcmVhdEFzVW5pcXVlT3JpZ2luKGNvbnN0IEtVUkwmIHVybCkKK3sKKyAgICBp
ZiAoIXVybC5pc1ZhbGlkKCkpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgLy8gRklYTUU6
IERvIHdlIG5lZWQgdG8gdW53cmFwIHRoZSBVUkwgZnVydGhlcj8KKyAgICBLVVJMIGVmZmVjdGl2
ZVVSTCA9IHNob3VsZFVzZUlubmVyVVJMKHVybCkgPyBleHRyYWN0SW5uZXJVUkwodXJsKSA6IHVy
bDsKKworICAgIC8vIEZJWE1FOiBDaGVjayB3aGV0aGVyIGVmZmVjdGl2ZVVSTCBpcyB2YWxpZC4K
KworICAgIC8vIEZvciBlZGdlIGNhc2UgVVJMcyB0aGF0IHdlcmUgcHJvYmFibHkgbWlzcGFyc2Vk
LCBtYWtlIHN1cmUgdGhhdCB0aGUgb3JpZ2luIGlzIHVuaXF1ZS4KKyAgICBpZiAoc2NoZW1lUmVx
dWlyZXNBdXRob3JpdHkoZWZmZWN0aXZlVVJMKSAmJiBlZmZlY3RpdmVVUkwuaG9zdCgpLmlzRW1w
dHkoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBTdHJpbmcgcHJvdG9jb2wgPSBlZmZl
Y3RpdmVVUkwucHJvdG9jb2woKS5sb3dlcigpOworCisgICAgaWYgKFNjaGVtZVJlZ2lzdHJ5Ojpz
aG91bGRUcmVhdFVSTFNjaGVtZUFzTm9BY2Nlc3MocHJvdG9jb2wpKQorICAgICAgICByZXR1cm4g
dHJ1ZTsKIAotICAgIGlmIChzY2hlbWVzLmlzRW1wdHkoKSkgewotICAgICAgICBzY2hlbWVzLmFk
ZCgiaHR0cCIpOwotICAgICAgICBzY2hlbWVzLmFkZCgiaHR0cHMiKTsKLSAgICAgICAgc2NoZW1l
cy5hZGQoImZ0cCIpOworICAgIC8vIFdlIHVzZSB1bmlxdWUgb3JpZ2lucyBmb3IgZGlyZWN0b3J5
IGxpc3RpbmdzIHRvIG1ha2UgaXQgaGFyZGVyIHRvIGNyYXdsIGEgbG9jYWwgZmlsZXN5c3RlbS4K
KyAgICBpZiAoU2NoZW1lUmVnaXN0cnk6OnNob3VsZFRyZWF0VVJMU2NoZW1lQXNMb2NhbChwcm90
b2NvbCkKKyAgICAgICAgJiYgIXNob3VsZFVzZUlubmVyVVJMKHVybCkgLy8gTm90ZSB0aGUgdXNl
IG9mIHVybCByYXRoZXIgdGhhbiBlZmZlY3RpdmVVUkwuCisgICAgICAgICYmICghZWZmZWN0aXZl
VVJMLmhhc1BhdGgoKSB8fCBpc0RpcmVjdG9yeShlZmZlY3RpdmVVUkwucGF0aCgpKSkpIHsKKyAg
ICAgICAgLy8gRklYTUU6IFNob3VsZCB3ZSBiZSB1c2luZyBzaG91bGRVc2VJbm5lclVSTCBoZXJl
PworICAgICAgICAvLyBXZSBvcmlnaW5hbGx5IGRpZCB0aGF0IGNoZWNrIHRvIGF2b2lkIHRyZWF0
aW5nIGJsb2IgYW5kIGZpbGVzeXN0ZW0KKyAgICAgICAgLy8gdXJscyBhcyB1bmlxdWUgd2hlbiBp
dCBpcyBjcmVhdGVkIGZyb20gbG9jYWwgZmlsZSB1cmxzLgorICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICB9CiAKLSAgICByZXR1cm4gc2NoZW1lcy5jb250YWlucyhzY2hlbWUpOworICAgIHJldHVy
biBmYWxzZTsKIH0KIAotU2VjdXJpdHlPcmlnaW46OlNlY3VyaXR5T3JpZ2luKGNvbnN0IEtVUkwm
IHVybCwgYm9vbCBmb3JjZVVuaXF1ZSkKK1NlY3VyaXR5T3JpZ2luOjpTZWN1cml0eU9yaWdpbihj
b25zdCBLVVJMJiB1cmwpCiAgICAgOiBtX3Byb3RvY29sKHVybC5wcm90b2NvbCgpLmlzTnVsbCgp
ID8gIiIgOiB1cmwucHJvdG9jb2woKS5sb3dlcigpKQogICAgICwgbV9ob3N0KHVybC5ob3N0KCku
aXNOdWxsKCkgPyAiIiA6IHVybC5ob3N0KCkubG93ZXIoKSkKICAgICAsIG1fcG9ydCh1cmwucG9y
dCgpKQotICAgICwgbV9pc1VuaXF1ZShmb3JjZVVuaXF1ZSB8fCBTY2hlbWVSZWdpc3RyeTo6c2hv
dWxkVHJlYXRVUkxTY2hlbWVBc05vQWNjZXNzKG1fcHJvdG9jb2wpKQorICAgICwgbV9pc1VuaXF1
ZShmYWxzZSkKICAgICAsIG1fdW5pdmVyc2FsQWNjZXNzKGZhbHNlKQogICAgICwgbV9kb21haW5X
YXNTZXRJbkRPTShmYWxzZSkKICAgICAsIG1fZW5mb3JjZUZpbGVQYXRoU2VwYXJhdGlvbihmYWxz
ZSkKIHsKLSNpZiBFTkFCTEUoQkxPQikgfHwgRU5BQkxFKEZJTEVfU1lTVEVNKQotICAgIGJvb2wg
aXNCbG9iT3JGaWxlU3lzdGVtUHJvdG9jb2wgPSBmYWxzZTsKLSNpZiBFTkFCTEUoQkxPQikKLSAg
ICBpZiAobV9wcm90b2NvbCA9PSBCbG9iVVJMOjpibG9iUHJvdG9jb2woKSkKLSAgICAgICAgaXNC
bG9iT3JGaWxlU3lzdGVtUHJvdG9jb2wgPSB0cnVlOwotI2VuZGlmCi0jaWYgRU5BQkxFKEZJTEVf
U1lTVEVNKQotICAgIGlmIChtX3Byb3RvY29sID09ICJmaWxlc3lzdGVtIikKLSAgICAgICAgaXNC
bG9iT3JGaWxlU3lzdGVtUHJvdG9jb2wgPSB0cnVlOwotI2VuZGlmCi0gICAgaWYgKGlzQmxvYk9y
RmlsZVN5c3RlbVByb3RvY29sKSB7Ci0gICAgICAgIEtVUkwgb3JpZ2luVVJMKFBhcnNlZFVSTFN0
cmluZywgZGVjb2RlVVJMRXNjYXBlU2VxdWVuY2VzKHVybC5wYXRoKCkpKTsKLSAgICAgICAgaWYg
KG9yaWdpblVSTC5pc1ZhbGlkKCkpIHsKLSAgICAgICAgICAgIG1fcHJvdG9jb2wgPSBvcmlnaW5V
UkwucHJvdG9jb2woKS5sb3dlcigpOwotICAgICAgICAgICAgbV9ob3N0ID0gb3JpZ2luVVJMLmhv
c3QoKS5sb3dlcigpOwotICAgICAgICAgICAgbV9wb3J0ID0gb3JpZ2luVVJMLnBvcnQoKTsKLSAg
ICAgICAgfSBlbHNlCi0gICAgICAgICAgICBtX2lzVW5pcXVlID0gdHJ1ZTsKLSAgICB9Ci0jZW5k
aWYKLQotICAgIC8vIEZvciBlZGdlIGNhc2UgVVJMcyB0aGF0IHdlcmUgcHJvYmFibHkgbWlzcGFy
c2VkLCBtYWtlIHN1cmUgdGhhdCB0aGUgb3JpZ2luIGlzIHVuaXF1ZS4KLSAgICBpZiAoc2NoZW1l
UmVxdWlyZXNBdXRob3JpdHkobV9wcm90b2NvbCkgJiYgbV9ob3N0LmlzRW1wdHkoKSkKLSAgICAg
ICAgbV9pc1VuaXF1ZSA9IHRydWU7Ci0KLSAgICBpZiAobV9wcm90b2NvbC5pc0VtcHR5KCkpCi0g
ICAgICAgIG1faXNVbmlxdWUgPSB0cnVlOworICAgIEFTU0VSVCh1cmwuaXNWYWxpZCgpKTsKIAog
ICAgIC8vIGRvY3VtZW50LmRvbWFpbiBzdGFydHMgYXMgbV9ob3N0LCBidXQgY2FuIGJlIHNldCBi
eSB0aGUgRE9NLgogICAgIG1fZG9tYWluID0gbV9ob3N0OwogCisgICAgaWYgKGlzRGVmYXVsdFBv
cnRGb3JQcm90b2NvbChtX3BvcnQsIG1fcHJvdG9jb2wpKQorICAgICAgICBtX3BvcnQgPSBJbnZh
bGlkUG9ydDsKKwogICAgIC8vIEJ5IGRlZmF1bHQsIG9ubHkgbG9jYWwgU2VjdXJpdHlPcmlnaW5z
IGNhbiBsb2FkIGxvY2FsIHJlc291cmNlcy4KICAgICBtX2NhbkxvYWRMb2NhbFJlc291cmNlcyA9
IGlzTG9jYWwoKTsKLSAgICBpZiAobV9jYW5Mb2FkTG9jYWxSZXNvdXJjZXMpIHsKLSAgICAgICAg
Ly8gRGlyZWN0b3JpZXMgc2hvdWxkIG5ldmVyIGJlIHJlYWRhYmxlLgotICAgICAgICAvLyBOb3Rl
IHRoYXQgd2UgZG8gbm90IGRvIHRoaXMgY2hlY2sgZm9yIGJsb2Igb3IgZmlsZXN5c3RlbSB1cmwg
YmVjYXVzZSBpdHMgb3JpZ2luIGlzIGZpbGU6Ly8vIHdoZW4gaXQgaXMgY3JlYXRlZCBmcm9tIGxv
Y2FsIGZpbGUgdXJscy4KLSNpZiBFTkFCTEUoQkxPQikgfHwgRU5BQkxFKEZJTEVfU1lTVEVNKQot
ICAgICAgICBib29sIGRvRGlyZWN0b3J5Q2hlY2sgPSAhaXNCbG9iT3JGaWxlU3lzdGVtUHJvdG9j
b2w7Ci0jZWxzZQotICAgICAgICBib29sIGRvRGlyZWN0b3J5Q2hlY2sgPSB0cnVlOwotI2VuZGlm
Ci0gICAgICAgIGlmIChkb0RpcmVjdG9yeUNoZWNrICYmICghdXJsLmhhc1BhdGgoKSB8fCB1cmwu
cGF0aCgpLmVuZHNXaXRoKCIvIikpKQotICAgICAgICAgICAgbV9pc1VuaXF1ZSA9IHRydWU7Ci0g
ICAgICAgIC8vIFN0b3JlIHRoZSBwYXRoIGluIGNhc2Ugd2UgYXJlIGRvaW5nIHBlci1maWxlIG9y
aWdpbiBjaGVja2luZy4KLSAgICAgICAgbV9maWxlUGF0aCA9IHVybC5wYXRoKCk7Ci0gICAgfQog
Ci0gICAgaWYgKGlzRGVmYXVsdFBvcnRGb3JQcm90b2NvbChtX3BvcnQsIG1fcHJvdG9jb2wpKQot
ICAgICAgICBtX3BvcnQgPSBJbnZhbGlkUG9ydDsKKyAgICBpZiAobV9jYW5Mb2FkTG9jYWxSZXNv
dXJjZXMpCisgICAgICAgIG1fZmlsZVBhdGggPSB1cmwucGF0aCgpOyAvLyBJbiBjYXNlIGVuZm9y
Y2VGaWxlUGF0aFNlcGFyYXRpb24oKSBpcyBjYWxsZWQuCit9CiAKLSAgICAvLyBEb24ndCBsZWFr
IGRldGFpbHMgZnJvbSBVUkxzIGludG8gdW5pcXVlIG9yaWdpbnMuCi0gICAgaWYgKG1faXNVbmlx
dWUpIHsKLSAgICAgICAgbV9wcm90b2NvbCA9ICIiOwotICAgICAgICBtX2hvc3QgPSAiIjsKLSAg
ICAgICAgbV9wb3J0ID0gSW52YWxpZFBvcnQ7Ci0gICAgfQorU2VjdXJpdHlPcmlnaW46OlNlY3Vy
aXR5T3JpZ2luKCkKKyAgICA6IG1fcHJvdG9jb2woIiIpCisgICAgLCBtX2hvc3QoIiIpCisgICAg
LCBtX2RvbWFpbigiIikKKyAgICAsIG1fcG9ydChJbnZhbGlkUG9ydCkKKyAgICAsIG1faXNVbmlx
dWUodHJ1ZSkKKyAgICAsIG1fdW5pdmVyc2FsQWNjZXNzKGZhbHNlKQorICAgICwgbV9kb21haW5X
YXNTZXRJbkRPTShmYWxzZSkKKyAgICAsIG1fY2FuTG9hZExvY2FsUmVzb3VyY2VzKGZhbHNlKQor
ICAgICwgbV9lbmZvcmNlRmlsZVBhdGhTZXBhcmF0aW9uKGZhbHNlKQorewogfQogCiBTZWN1cml0
eU9yaWdpbjo6U2VjdXJpdHlPcmlnaW4oY29uc3QgU2VjdXJpdHlPcmlnaW4qIG90aGVyKQpAQCAt
MTQxLDkgKzE3NSwxMyBAQCBTZWN1cml0eU9yaWdpbjo6U2VjdXJpdHlPcmlnaW4oY29uc3QgU2Vj
dXJpdHlPcmlnaW4qIG90aGVyKQogCiBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBTZWN1cml0
eU9yaWdpbjo6Y3JlYXRlKGNvbnN0IEtVUkwmIHVybCwgYm9vbCBmb3JjZVVuaXF1ZSkKIHsKLSAg
ICBpZiAoIXVybC5pc1ZhbGlkKCkpCi0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2VjdXJp
dHlPcmlnaW4oYmxhbmtVUkwoKSwgZm9yY2VVbmlxdWUpKTsKLSAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IFNlY3VyaXR5T3JpZ2luKHVybCwgZm9yY2VVbmlxdWUpKTsKKyAgICBpZiAoZm9yY2VVbmlx
dWUgfHwgc2hvdWxkVHJlYXRBc1VuaXF1ZU9yaWdpbih1cmwpKQorICAgICAgICByZXR1cm4gYWRv
cHRSZWYobmV3IFNlY3VyaXR5T3JpZ2luKCkpOworCisgICAgaWYgKHNob3VsZFVzZUlubmVyVVJM
KHVybCkpCisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2VjdXJpdHlPcmlnaW4oZXh0cmFj
dElubmVyVVJMKHVybCkpKTsKKworICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2VjdXJpdHlPcmln
aW4odXJsKSk7CiB9CiAKIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IFNlY3VyaXR5T3JpZ2lu
OjpjcmVhdGVVbmlxdWUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0
eU9yaWdpbi5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5oCmluZGV4IGNi
NzgxMWE2ZWQ0N2JmZGJjZmY4YzliODEwZGE3YTM3MTQ3ZWY0YzcuLjhkNDkzNjVhMTNmZmUzOGIz
Mzc1YTU0NWIwYTI0ZTg3ZGQ1ZjJhOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
U2VjdXJpdHlPcmlnaW4uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2lu
LmgKQEAgLTE2NSw3ICsxNjUsOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc1NhbWVTY2hlbWVIb3N0
UG9ydChjb25zdCBTZWN1cml0eU9yaWdpbiopIGNvbnN0OwogCiBwcml2YXRlOgotICAgIGV4cGxp
Y2l0IFNlY3VyaXR5T3JpZ2luKGNvbnN0IEtVUkwmLCBib29sIGZvcmNlVW5pcXVlKTsKKyAgICBl
eHBsaWNpdCBTZWN1cml0eU9yaWdpbigpOworICAgIGV4cGxpY2l0IFNlY3VyaXR5T3JpZ2luKGNv
bnN0IEtVUkwmKTsKICAgICBleHBsaWNpdCBTZWN1cml0eU9yaWdpbihjb25zdCBTZWN1cml0eU9y
aWdpbiopOwogCiAgICAgLy8gRklYTUU6IFJlbmFtZSB0aGlzIGZ1bmN0aW9uIHRvIHNvbWV0aGlu
ZyBtb3JlIHNlbWFudGljLgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>115690</attachid>
            <date>2011-11-17 14:47:25 -0800</date>
            <delta_ts>2011-11-17 14:54:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-72342-20111117144724.patch</filename>
            <type>text/plain</type>
            <size>11326</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwMDY3OSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMwIEBACisyMDExLTExLTE3ICBBZGFtIEJh
cnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVmYWN0b3IgU2VjdXJpdHlPcmln
aW46OmNyZWF0ZSB0byBiZSBlYXNpZXIgdG8gdW5kZXJzdGFuZAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzIzNDIKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBPdmVyIHRpbWUsIHRoZSBTZWN1cml0eU9yaWdp
biBjb25zdHJ1Y3RvciBoYXMgZ3Jvd24gYSBiaXQgb3V0IG9mCisgICAgICAgIGNvbnRyb2wuICBU
aGlzIHBhdGNoIGF0dGVtcHRzIHRvIHNlcGFyYXRlIHRoZSBkaWZmZXJlbnQgY29uY2VybnMgaW50
bworICAgICAgICBmcmVlIGZ1bmN0aW9ucy4gIFRoZSBnZW5lcmFsIGFwcHJvYWNoIGlzIHRvIHB1
dCBtb3JlIGxvZ2ljIGluIHRoZQorICAgICAgICAiY3JlYXRlIiBmdW5jdGlvbiBhbmQgaW50cm9k
dWNlIGEgc2ltcGxlIGNvbnN0cnVjdG9yIGZvciB1bmlxdWUKKyAgICAgICAgb3JpZ2lucy4KKwor
ICAgICAgICBUaGlzIHBhdGNoIHNob3VsZG4ndCBjaGFuZ2UgYW55IGJlaGF2aW9yLgorCisgICAg
ICAgICogcGFnZS9TZWN1cml0eU9yaWdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzY2hlbWVS
ZXF1aXJlc0F1dGhvcml0eSk6CisgICAgICAgIChXZWJDb3JlOjpzaG91bGRVc2VJbm5lclVSTCk6
CisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0SW5uZXJVUkwpOgorICAgICAgICAoV2ViQ29yZTo6
aXNEaXJlY3RvcnkpOgorICAgICAgICAoV2ViQ29yZTo6c2hvdWxkVHJlYXRBc1VuaXF1ZU9yaWdp
bik6CisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6U2VjdXJpdHlPcmlnaW4pOgor
ICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlVW5pcXVlKToKKyAgICAgICAgKFdlYkNvcmU6OlNl
Y3VyaXR5T3JpZ2luOjpkYXRhYmFzZUlkZW50aWZpZXIpOgorICAgICAgICAqIHBhZ2UvU2VjdXJp
dHlPcmlnaW4uaDoKKwogMjAxMS0xMS0xNyAgS2VuIEJ1Y2hhbmFuIDxrZW5yYkBjaHJvbWl1bS5v
cmc+CiAKICAgICAgICAgQ3Jhc2ggZnJvbSBwb3NpdGlvbmVkIGdlbmVyYXRlZCBjb250ZW50IHVu
ZGVyIHJ1bi1pbgpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5jcHAJKHJl
dmlzaW9uIDEwMDY2NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00NCw4OCArNDQsMTI2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IGNvbnN0IGludCBJbnZhbGlkUG9ydCA9IDA7CiBjb25zdCBpbnQgTWF4QWxsb3dlZFBvcnQgPSA2
NTUzNTsKIAotc3RhdGljIGJvb2wgc2NoZW1lUmVxdWlyZXNBdXRob3JpdHkoY29uc3QgU3RyaW5n
JiBzY2hlbWUpCitzdGF0aWMgYm9vbCBzY2hlbWVSZXF1aXJlc0F1dGhvcml0eShjb25zdCBLVVJM
JiB1cmwpCiB7Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChVUkxTY2hlbWVzTWFwLCBzY2hlbWVz
LCAoKSk7CisgICAgLy8gV2UgZXhwZWN0IFVSTHMgd2l0aCB0aGVzZSBzY2hlbWVzIHRvIGhhdmUg
YXV0aG9yaXR5IGNvbXBvbmVudHMuIElmIHRoZQorICAgIC8vIFVSTCBsYWNrcyBhbiBhdXRob3Jp
dHkgY29tcG9uZW50LCB3ZSBnZXQgY29uY2VybmVkIGFuZCBtYXJrIHRoZSBvcmlnaW4KKyAgICAv
LyBhcyB1bmlxdWUuCisgICAgcmV0dXJuIHVybC5wcm90b2NvbElzSW5IVFRQRmFtaWx5KCkgfHwg
dXJsLnByb3RvY29sSXMoImZ0cCIpOworfQorCisvLyBTb21lIFVSTCBzY2hlbWVzIHVzZSBuZXN0
ZWQgVVJMcyBmb3IgdGhlaXIgc2VjdXJpdHkgY29udGV4dC4gRm9yIGV4YW1wbGUsCisvLyBmaWxl
c3lzdGVtIFVSTHMgbG9vayBsaWtlIHRoZSBmb2xsb3dpbmc6CisvLworLy8gICBmaWxlc3lzdGVt
Omh0dHA6Ly9leGFtcGxlLmNvbS90ZW1wb3JhcnkvcGF0aC90by9maWxlLnBuZworLy8KKy8vIFdl
J3JlIHN1cHBvc2VkIHRvIHVzZSAiaHR0cDovL2V4YW1wbGUuY29tIiBhcyB0aGUgb3JpZ2luLgor
Ly8KKy8vIEdlbmVyYWxseSwgd2UgYWRkIFVSTCBzY2hlbWVzIHRvIHRoaXMgbGlzdCB3aGVuIFdl
YktpdCBzdXBwb3J0IHRoZW0uIEZvcgorLy8gZXhhbXBsZSwgd2UgZG9uJ3QgaW5jbHVkZSB0aGUg
ImphciIgc2NoZW1lLCBldmVuIHRob3VnaCBGaXJlZm94IHVuZGVyc3RhbmRzCisvLyB0aGF0IGph
ciB1c2VzIGFuIGlubmVyIFVSTCBmb3IgaXQncyBzZWN1cml0eSBvcmlnaW4uCisvLworc3RhdGlj
IGJvb2wgc2hvdWxkVXNlSW5uZXJVUkwoY29uc3QgS1VSTCYgdXJsKQoreworI2lmIEVOQUJMRShC
TE9CKQorICAgIGlmICh1cmwucHJvdG9jb2xJcygiYmxvYiIpKQorICAgICAgICByZXR1cm4gdHJ1
ZTsKKyNlbmRpZgorI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKKyAgICBpZiAodXJsLnByb3RvY29s
SXMoImZpbGVzeXN0ZW0iKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisjZW5kaWYKKyAgICByZXR1
cm4gZmFsc2U7Cit9CisKKy8vIEluIGdlbmVyYWwsIGV4dHJhY3RpbmcgdGhlIGlubmVyIFVSTCB2
YXJpZXMgYnkgc2NoZW1lLiBJdCBqdXN0IHNvIGhhcHBlbnMKKy8vIHRoYXQgYWxsIHRoZSBVUkwg
c2NoZW1lcyB3ZSBjdXJyZW50bHkgc3VwcG9ydCB0aGF0IHVzZSBpbm5lciBVUkxzIGZvciB0aGVp
cgorLy8gc2VjdXJpdHkgb3JpZ2luIGNhbiBiZSBwYXJzZWQgdXNpbmcgdGhpcyBhbGdvcml0aG0u
CitzdGF0aWMgS1VSTCBleHRyYWN0SW5uZXJVUkwoY29uc3QgS1VSTCYgdXJsKQoreworICAgIC8v
IEZJWE1FOiBVcGRhdGUgdGhpcyBjYWxsc2l0ZSB0byB1c2UgdGhlIGlubmVyVVJMIG1lbWJlciBm
dW5jdGlvbiB3aGVuCisgICAgLy8gd2UgZmluaXNoIGltcGxlbWVudGluZyBpdC4KKyAgICByZXR1
cm4gS1VSTChQYXJzZWRVUkxTdHJpbmcsIGRlY29kZVVSTEVzY2FwZVNlcXVlbmNlcyh1cmwucGF0
aCgpKSk7Cit9CisKK3N0YXRpYyBib29sIGlzRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCkK
K3sKKyAgICByZXR1cm4gcGF0aC5lbmRzV2l0aCgiLyIpOworfQogCi0gICAgaWYgKHNjaGVtZXMu
aXNFbXB0eSgpKSB7Ci0gICAgICAgIHNjaGVtZXMuYWRkKCJodHRwIik7Ci0gICAgICAgIHNjaGVt
ZXMuYWRkKCJodHRwcyIpOwotICAgICAgICBzY2hlbWVzLmFkZCgiZnRwIik7CitzdGF0aWMgYm9v
bCBzaG91bGRUcmVhdEFzVW5pcXVlT3JpZ2luKGNvbnN0IEtVUkwmIHVybCkKK3sKKyAgICBpZiAo
IXVybC5pc1ZhbGlkKCkpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgLy8gRklYTUU6IERv
IHdlIG5lZWQgdG8gdW53cmFwIHRoZSBVUkwgZnVydGhlcj8KKyAgICBLVVJMIGlubmVyVVJMID0g
c2hvdWxkVXNlSW5uZXJVUkwodXJsKSA/IGV4dHJhY3RJbm5lclVSTCh1cmwpIDogdXJsOworCisg
ICAgLy8gRklYTUU6IENoZWNrIHdoZXRoZXIgaW5uZXJVUkwgaXMgdmFsaWQuCisKKyAgICAvLyBG
b3IgZWRnZSBjYXNlIFVSTHMgdGhhdCB3ZXJlIHByb2JhYmx5IG1pc3BhcnNlZCwgbWFrZSBzdXJl
IHRoYXQgdGhlIG9yaWdpbiBpcyB1bmlxdWUuCisgICAgLy8gRklYTUU6IERvIHdlIHJlYWxseSBu
ZWVkIHRvIGRvIHRoaXM/IFRoaXMgbG9va3MgdG8gYmUgYSBoYWNrIGFyb3VuZCBhCisgICAgLy8g
c2VjdXJpdHkgYnVnIGluIENGTmV0d29yayB0aGF0IG1pZ2h0IGhhdmUgYmVlbiBmaXhlZC4KKyAg
ICBpZiAoc2NoZW1lUmVxdWlyZXNBdXRob3JpdHkoaW5uZXJVUkwpICYmIGlubmVyVVJMLmhvc3Qo
KS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgLy8gU2NoZW1lUmVnaXN0
cnkgbmVlZHMgYSBsb3dlciBjYXNlIHByb3RvY29sIGJlY2F1c2UgaXQgdXNlcyBIYXNoTWFwcwor
ICAgIC8vIHRoYXQgYXNzdW1lIHRoZSBzY2hlbWUgaGFzIGFscmVhZHkgYmVlbiBjYW5vbmljYWxp
emVkLgorICAgIFN0cmluZyBwcm90b2NvbCA9IGlubmVyVVJMLnByb3RvY29sKCkubG93ZXIoKTsK
KworICAgIGlmIChTY2hlbWVSZWdpc3RyeTo6c2hvdWxkVHJlYXRVUkxTY2hlbWVBc05vQWNjZXNz
KHByb3RvY29sKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAvLyBXZSB1c2UgdW5pcXVl
IG9yaWdpbnMgZm9yIGRpcmVjdG9yeSBsaXN0aW5ncyB0byBtYWtlIGl0IGhhcmRlciB0byBjcmF3
bAorICAgIC8vIGEgbG9jYWwgZmlsZXN5c3RlbS4gTm90aWNlIHRoYXQgd2UgYXBwbHkgdGhpcyBw
cm90ZWN0aW9uIG9ubHkgd2hlbiB3ZQorICAgIC8vIHVzZSB0aGUgb3V0ZXIgVVJMIGZvciB0aGUg
c2VjdXJpdHkgY29udGV4dCBiZWNhdXNlIHNjaGVtZXMgdGhhdCB3cmFwCisgICAgLy8gb3RoZXIg
VVJMcyBkb24ndCBoYXZlIGRpcmVjdG9yeSBsaXN0aW5ncy4KKyAgICBpZiAoU2NoZW1lUmVnaXN0
cnk6OnNob3VsZFRyZWF0VVJMU2NoZW1lQXNMb2NhbChwcm90b2NvbCkgJiYgIXNob3VsZFVzZUlu
bmVyVVJMKHVybCkpIHsKKyAgICAgICAgaWYgKCFpbm5lclVSTC5oYXNQYXRoKCkgfHwgaXNEaXJl
Y3RvcnkoaW5uZXJVUkwucGF0aCgpKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0K
IAotICAgIHJldHVybiBzY2hlbWVzLmNvbnRhaW5zKHNjaGVtZSk7CisgICAgLy8gVGhpcyBpcyB0
aGUgY29tbW9uIGNhc2UuCisgICAgcmV0dXJuIGZhbHNlOwogfQogCi1TZWN1cml0eU9yaWdpbjo6
U2VjdXJpdHlPcmlnaW4oY29uc3QgS1VSTCYgdXJsLCBib29sIGZvcmNlVW5pcXVlKQorU2VjdXJp
dHlPcmlnaW46OlNlY3VyaXR5T3JpZ2luKGNvbnN0IEtVUkwmIHVybCkKICAgICA6IG1fcHJvdG9j
b2wodXJsLnByb3RvY29sKCkuaXNOdWxsKCkgPyAiIiA6IHVybC5wcm90b2NvbCgpLmxvd2VyKCkp
CiAgICAgLCBtX2hvc3QodXJsLmhvc3QoKS5pc051bGwoKSA/ICIiIDogdXJsLmhvc3QoKS5sb3dl
cigpKQogICAgICwgbV9wb3J0KHVybC5wb3J0KCkpCi0gICAgLCBtX2lzVW5pcXVlKGZvcmNlVW5p
cXVlIHx8IFNjaGVtZVJlZ2lzdHJ5OjpzaG91bGRUcmVhdFVSTFNjaGVtZUFzTm9BY2Nlc3MobV9w
cm90b2NvbCkpCisgICAgLCBtX2lzVW5pcXVlKGZhbHNlKQogICAgICwgbV91bml2ZXJzYWxBY2Nl
c3MoZmFsc2UpCiAgICAgLCBtX2RvbWFpbldhc1NldEluRE9NKGZhbHNlKQogICAgICwgbV9lbmZv
cmNlRmlsZVBhdGhTZXBhcmF0aW9uKGZhbHNlKQotICAgICwgbV9uZWVkc1N0b3JhZ2VJZGVudGlm
aWVyUXVpcmtGb3JGaWxlcyhmYWxzZSkKKyAgICAsIG1fbmVlZHNEYXRhYmFzZUlkZW50aWZpZXJR
dWlya0ZvckZpbGVzKGZhbHNlKQogewotI2lmIEVOQUJMRShCTE9CKSB8fCBFTkFCTEUoRklMRV9T
WVNURU0pCi0gICAgYm9vbCBpc0Jsb2JPckZpbGVTeXN0ZW1Qcm90b2NvbCA9IGZhbHNlOwotI2lm
IEVOQUJMRShCTE9CKQotICAgIGlmIChtX3Byb3RvY29sID09IEJsb2JVUkw6OmJsb2JQcm90b2Nv
bCgpKQotICAgICAgICBpc0Jsb2JPckZpbGVTeXN0ZW1Qcm90b2NvbCA9IHRydWU7Ci0jZW5kaWYK
LSNpZiBFTkFCTEUoRklMRV9TWVNURU0pCi0gICAgaWYgKG1fcHJvdG9jb2wgPT0gImZpbGVzeXN0
ZW0iKQotICAgICAgICBpc0Jsb2JPckZpbGVTeXN0ZW1Qcm90b2NvbCA9IHRydWU7Ci0jZW5kaWYK
LSAgICBpZiAoaXNCbG9iT3JGaWxlU3lzdGVtUHJvdG9jb2wpIHsKLSAgICAgICAgS1VSTCBvcmln
aW5VUkwoUGFyc2VkVVJMU3RyaW5nLCBkZWNvZGVVUkxFc2NhcGVTZXF1ZW5jZXModXJsLnBhdGgo
KSkpOwotICAgICAgICBpZiAob3JpZ2luVVJMLmlzVmFsaWQoKSkgewotICAgICAgICAgICAgbV9w
cm90b2NvbCA9IG9yaWdpblVSTC5wcm90b2NvbCgpLmxvd2VyKCk7Ci0gICAgICAgICAgICBtX2hv
c3QgPSBvcmlnaW5VUkwuaG9zdCgpLmxvd2VyKCk7Ci0gICAgICAgICAgICBtX3BvcnQgPSBvcmln
aW5VUkwucG9ydCgpOwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIG1faXNVbmlxdWUgPSB0
cnVlOwotICAgIH0KLSNlbmRpZgotCi0gICAgLy8gRm9yIGVkZ2UgY2FzZSBVUkxzIHRoYXQgd2Vy
ZSBwcm9iYWJseSBtaXNwYXJzZWQsIG1ha2Ugc3VyZSB0aGF0IHRoZSBvcmlnaW4gaXMgdW5pcXVl
LgotICAgIGlmIChzY2hlbWVSZXF1aXJlc0F1dGhvcml0eShtX3Byb3RvY29sKSAmJiBtX2hvc3Qu
aXNFbXB0eSgpKQotICAgICAgICBtX2lzVW5pcXVlID0gdHJ1ZTsKLQotICAgIGlmIChtX3Byb3Rv
Y29sLmlzRW1wdHkoKSkKLSAgICAgICAgbV9pc1VuaXF1ZSA9IHRydWU7CisgICAgQVNTRVJUKHVy
bC5pc1ZhbGlkKCkpOwogCiAgICAgLy8gZG9jdW1lbnQuZG9tYWluIHN0YXJ0cyBhcyBtX2hvc3Qs
IGJ1dCBjYW4gYmUgc2V0IGJ5IHRoZSBET00uCiAgICAgbV9kb21haW4gPSBtX2hvc3Q7CiAKLSAg
ICAvLyBCeSBkZWZhdWx0LCBvbmx5IGxvY2FsIFNlY3VyaXR5T3JpZ2lucyBjYW4gbG9hZCBsb2Nh
bCByZXNvdXJjZXMuCi0gICAgbV9jYW5Mb2FkTG9jYWxSZXNvdXJjZXMgPSBpc0xvY2FsKCk7Ci0g
ICAgaWYgKG1fY2FuTG9hZExvY2FsUmVzb3VyY2VzKSB7Ci0gICAgICAgIC8vIERpcmVjdG9yaWVz
IHNob3VsZCBuZXZlciBiZSByZWFkYWJsZS4KLSAgICAgICAgLy8gTm90ZSB0aGF0IHdlIGRvIG5v
dCBkbyB0aGlzIGNoZWNrIGZvciBibG9iIG9yIGZpbGVzeXN0ZW0gdXJsIGJlY2F1c2UgaXRzIG9y
aWdpbiBpcyBmaWxlOi8vLyB3aGVuIGl0IGlzIGNyZWF0ZWQgZnJvbSBsb2NhbCBmaWxlIHVybHMu
Ci0jaWYgRU5BQkxFKEJMT0IpIHx8IEVOQUJMRShGSUxFX1NZU1RFTSkKLSAgICAgICAgYm9vbCBk
b0RpcmVjdG9yeUNoZWNrID0gIWlzQmxvYk9yRmlsZVN5c3RlbVByb3RvY29sOwotI2Vsc2UKLSAg
ICAgICAgYm9vbCBkb0RpcmVjdG9yeUNoZWNrID0gdHJ1ZTsKLSNlbmRpZgotICAgICAgICBpZiAo
ZG9EaXJlY3RvcnlDaGVjayAmJiAoIXVybC5oYXNQYXRoKCkgfHwgdXJsLnBhdGgoKS5lbmRzV2l0
aCgiLyIpKSkKLSAgICAgICAgICAgIG1faXNVbmlxdWUgPSB0cnVlOwotICAgICAgICAvLyBTdG9y
ZSB0aGUgcGF0aCBpbiBjYXNlIHdlIGFyZSBkb2luZyBwZXItZmlsZSBvcmlnaW4gY2hlY2tpbmcu
Ci0gICAgICAgIG1fZmlsZVBhdGggPSB1cmwucGF0aCgpOwotICAgIH0KLQogICAgIGlmIChpc0Rl
ZmF1bHRQb3J0Rm9yUHJvdG9jb2wobV9wb3J0LCBtX3Byb3RvY29sKSkKICAgICAgICAgbV9wb3J0
ID0gSW52YWxpZFBvcnQ7CiAKLSAgICBpZiAobV9wcm90b2NvbCA9PSAiZmlsZSIpCi0gICAgICAg
IG1fbmVlZHNTdG9yYWdlSWRlbnRpZmllclF1aXJrRm9yRmlsZXMgPSB0cnVlOworICAgIC8vIEJ5
IGRlZmF1bHQsIG9ubHkgbG9jYWwgU2VjdXJpdHlPcmlnaW5zIGNhbiBsb2FkIGxvY2FsIHJlc291
cmNlcy4KKyAgICBtX2NhbkxvYWRMb2NhbFJlc291cmNlcyA9IGlzTG9jYWwoKTsKIAotICAgIC8v
IERvbid0IGxlYWsgZGV0YWlscyBmcm9tIFVSTHMgaW50byB1bmlxdWUgb3JpZ2lucy4KLSAgICBp
ZiAobV9pc1VuaXF1ZSkgewotICAgICAgICBtX3Byb3RvY29sID0gIiI7Ci0gICAgICAgIG1faG9z
dCA9ICIiOwotICAgICAgICBtX3BvcnQgPSBJbnZhbGlkUG9ydDsKLSAgICB9CisgICAgaWYgKG1f
Y2FuTG9hZExvY2FsUmVzb3VyY2VzKQorICAgICAgICBtX2ZpbGVQYXRoID0gdXJsLnBhdGgoKTsg
Ly8gSW4gY2FzZSBlbmZvcmNlRmlsZVBhdGhTZXBhcmF0aW9uKCkgaXMgY2FsbGVkLgorfQorCitT
ZWN1cml0eU9yaWdpbjo6U2VjdXJpdHlPcmlnaW4oKQorICAgIDogbV9wcm90b2NvbCgiIikKKyAg
ICAsIG1faG9zdCgiIikKKyAgICAsIG1fZG9tYWluKCIiKQorICAgICwgbV9wb3J0KEludmFsaWRQ
b3J0KQorICAgICwgbV9pc1VuaXF1ZSh0cnVlKQorICAgICwgbV91bml2ZXJzYWxBY2Nlc3MoZmFs
c2UpCisgICAgLCBtX2RvbWFpbldhc1NldEluRE9NKGZhbHNlKQorICAgICwgbV9jYW5Mb2FkTG9j
YWxSZXNvdXJjZXMoZmFsc2UpCisgICAgLCBtX2VuZm9yY2VGaWxlUGF0aFNlcGFyYXRpb24oZmFs
c2UpCisgICAgLCBtX25lZWRzRGF0YWJhc2VJZGVudGlmaWVyUXVpcmtGb3JGaWxlcyhmYWxzZSkK
K3sKIH0KIAogU2VjdXJpdHlPcmlnaW46OlNlY3VyaXR5T3JpZ2luKGNvbnN0IFNlY3VyaXR5T3Jp
Z2luKiBvdGhlcikKQEAgLTE0MCwyMCArMTc4LDM1IEBAIFNlY3VyaXR5T3JpZ2luOjpTZWN1cml0
eU9yaWdpbihjb25zdCBTZWMKICAgICAsIG1fZG9tYWluV2FzU2V0SW5ET00ob3RoZXItPm1fZG9t
YWluV2FzU2V0SW5ET00pCiAgICAgLCBtX2NhbkxvYWRMb2NhbFJlc291cmNlcyhvdGhlci0+bV9j
YW5Mb2FkTG9jYWxSZXNvdXJjZXMpCiAgICAgLCBtX2VuZm9yY2VGaWxlUGF0aFNlcGFyYXRpb24o
b3RoZXItPm1fZW5mb3JjZUZpbGVQYXRoU2VwYXJhdGlvbikKLSAgICAsIG1fbmVlZHNTdG9yYWdl
SWRlbnRpZmllclF1aXJrRm9yRmlsZXMob3RoZXItPm1fbmVlZHNTdG9yYWdlSWRlbnRpZmllclF1
aXJrRm9yRmlsZXMpCisgICAgLCBtX25lZWRzRGF0YWJhc2VJZGVudGlmaWVyUXVpcmtGb3JGaWxl
cyhvdGhlci0+bV9uZWVkc0RhdGFiYXNlSWRlbnRpZmllclF1aXJrRm9yRmlsZXMpCiB7CiB9CiAK
IFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoY29uc3Qg
S1VSTCYgdXJsLCBib29sIGZvcmNlVW5pcXVlKQogewotICAgIGlmICghdXJsLmlzVmFsaWQoKSkK
LSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTZWN1cml0eU9yaWdpbihibGFua1VSTCgpLCBm
b3JjZVVuaXF1ZSkpOwotICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2VjdXJpdHlPcmlnaW4odXJs
LCBmb3JjZVVuaXF1ZSkpOworICAgIGlmIChmb3JjZVVuaXF1ZSB8fCBzaG91bGRUcmVhdEFzVW5p
cXVlT3JpZ2luKHVybCkpIHsKKyAgICAgICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBvcmlnaW4g
PSBhZG9wdFJlZihuZXcgU2VjdXJpdHlPcmlnaW4oKSk7CisKKyAgICAgICAgaWYgKHVybC5wcm90
b2NvbElzKCJmaWxlIikpIHsKKyAgICAgICAgICAgIC8vIFVuZm9ydHVuYXRlbHksIHdlIGNhbid0
IHJlcHJlc2VudCBhbGwgdW5pcXVlIG9yaWdpbnMgZXhhY3RseQorICAgICAgICAgICAgLy8gdGhl
IHNhbWUgd2F5IGJlY2F1c2Ugd2UgbmVlZCB0byBwcm9kdWNlIGEgcXVpcmt5IGRhdGFiYXNlCisg
ICAgICAgICAgICAvLyBpZGVudGlmaWVyIGZvciBmaWxlIFVSTHMgZHVlIHRvIHBlcnNpc3RlbnQg
c3RvcmFnZSBpbiBzb21lCisgICAgICAgICAgICAvLyBlbWJlZGRlcnMgb2YgV2ViS2l0LgorICAg
ICAgICAgICAgb3JpZ2luLT5tX25lZWRzRGF0YWJhc2VJZGVudGlmaWVyUXVpcmtGb3JGaWxlcyA9
IHRydWU7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gb3JpZ2luLnJlbGVhc2UoKTsKKyAg
ICB9CisKKyAgICBpZiAoc2hvdWxkVXNlSW5uZXJVUkwodXJsKSkKKyAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBTZWN1cml0eU9yaWdpbihleHRyYWN0SW5uZXJVUkwodXJsKSkpOworCisgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBTZWN1cml0eU9yaWdpbih1cmwpKTsKIH0KIAogUGFzc1JlZlB0
cjxTZWN1cml0eU9yaWdpbj4gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZVVuaXF1ZSgpCiB7Ci0gICAg
UmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBvcmlnaW4gPSBjcmVhdGUoS1VSTCgpKTsKKyAgICBSZWZQ
dHI8U2VjdXJpdHlPcmlnaW4+IG9yaWdpbiA9IGFkb3B0UmVmKG5ldyBTZWN1cml0eU9yaWdpbigp
KTsKICAgICBBU1NFUlQob3JpZ2luLT5pc1VuaXF1ZSgpKTsKICAgICByZXR1cm4gb3JpZ2luLnJl
bGVhc2UoKTsKIH0KQEAgLTQyNCw3ICs0NzcsNyBAQCBTdHJpbmcgU2VjdXJpdHlPcmlnaW46OmRh
dGFiYXNlSWRlbnRpZmllCiAgICAgLy8gc3RyaW5nIGJlY2F1c2Ugb2YgYSBidWcgaW4gaG93IHdl
IGhhbmRsZWQgdGhlIHNjaGVtZSBmb3IgZmlsZSBVUkxzLgogICAgIC8vIE5vdyB0aGF0IHdlJ3Zl
IGZpeGVkIHRoYXQgYnVnLCB3ZSBzdGlsbCBuZWVkIHRvIHByb2R1Y2UgdGhpcyBzdHJpbmcKICAg
ICAvLyB0byBhdm9pZCBicmVha2luZyBleGlzdGluZyBwZXJzaXN0ZW50IHN0YXRlLgotICAgIGlm
IChtX25lZWRzU3RvcmFnZUlkZW50aWZpZXJRdWlya0ZvckZpbGVzKQorICAgIGlmIChtX25lZWRz
RGF0YWJhc2VJZGVudGlmaWVyUXVpcmtGb3JGaWxlcykKICAgICAgICAgcmV0dXJuICJmaWxlX18w
IjsKIAogICAgIFN0cmluZyBzZXBhcmF0b3JTdHJpbmcoJlNlcGFyYXRvckNoYXJhY3RlciwgMSk7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5oCShyZXZpc2lvbiAxMDA2NjQp
CisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmgJKHdvcmtpbmcgY29weSkK
QEAgLTE2NSw3ICsxNjUsOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc1NhbWVTY2hlbWVIb3N0UG9y
dChjb25zdCBTZWN1cml0eU9yaWdpbiopIGNvbnN0OwogCiBwcml2YXRlOgotICAgIGV4cGxpY2l0
IFNlY3VyaXR5T3JpZ2luKGNvbnN0IEtVUkwmLCBib29sIGZvcmNlVW5pcXVlKTsKKyAgICBTZWN1
cml0eU9yaWdpbigpOworICAgIGV4cGxpY2l0IFNlY3VyaXR5T3JpZ2luKGNvbnN0IEtVUkwmKTsK
ICAgICBleHBsaWNpdCBTZWN1cml0eU9yaWdpbihjb25zdCBTZWN1cml0eU9yaWdpbiopOwogCiAg
ICAgLy8gRklYTUU6IFJlbmFtZSB0aGlzIGZ1bmN0aW9uIHRvIHNvbWV0aGluZyBtb3JlIHNlbWFu
dGljLgpAQCAtMTgyLDcgKzE4Myw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2RvbWFpbldhc1Nl
dEluRE9NOwogICAgIGJvb2wgbV9jYW5Mb2FkTG9jYWxSZXNvdXJjZXM7CiAgICAgYm9vbCBtX2Vu
Zm9yY2VGaWxlUGF0aFNlcGFyYXRpb247Ci0gICAgYm9vbCBtX25lZWRzU3RvcmFnZUlkZW50aWZp
ZXJRdWlya0ZvckZpbGVzOworICAgIGJvb2wgbV9uZWVkc0RhdGFiYXNlSWRlbnRpZmllclF1aXJr
Rm9yRmlsZXM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCg==
</data>
<flag name="review"
          id="114657"
          type_id="1"
          status="+"
          setter="eric"
    />
          </attachment>
      

    </bug>

</bugzilla>