<?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>47309</bug_id>
          
          <creation_ts>2010-10-06 15:33:23 -0700</creation_ts>
          <short_desc>Fix FileSystem path validation order to normalize &apos;..&apos; and &apos;.&apos; before restriction checks</short_desc>
          <delta_ts>2010-10-08 01:39:05 -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>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</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>1</everconfirmed>
          <reporter name="Kinuko Yasuda">kinuko</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>ericu</cc>
    
    <cc>levin</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>290620</commentid>
    <comment_count>0</comment_count>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2010-10-06 15:33:23 -0700</bug_when>
    <thetext>Fix FileSystem path validation order to normalize &apos;..&apos; and &apos;.&apos; before restriction checks.

Currently we&apos;re rejecting any paths that contain &apos;.&apos; or &apos;..&apos; as invalid paths (since they end with &apos;.&apos;, which is restricted in the spec).
Normalize the path first and then do the name validation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>291317</commentid>
    <comment_count>1</comment_count>
      <attachid>70168</attachid>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2010-10-07 16:32:38 -0700</bug_when>
    <thetext>Created attachment 70168
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>291401</commentid>
    <comment_count>2</comment_count>
      <attachid>70168</attachid>
    <who name="Eric U.">ericu</who>
    <bug_when>2010-10-07 19:26:42 -0700</bug_when>
    <thetext>Comment on attachment 70168
Patch

LGTM</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>291476</commentid>
    <comment_count>3</comment_count>
      <attachid>70168</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2010-10-07 23:56:59 -0700</bug_when>
    <thetext>Comment on attachment 70168
Patch

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

&gt; LayoutTests/fast/filesystem/resources/op-get-entry.js:60
&gt; +            function(helper) { helper.getFile(&apos;/a&apos;, &apos;/a/../../b/./c/../../../../../e.txt&apos;, {create:true}); },

Consider adding a test with &quot;...&quot; to check that it is invalid (unless you already have one).

&gt; WebCore/fileapi/DOMFileSystemBase.cpp:145
&gt; +    if (DOMFilePath::isAbsolute(path))

How about: 
if (!DOMFilePath::isAbsolute(path))
   path = DOMFilePath::append(base-&gt;fullPath(), path);
String absolutePath = DOMFilePath::removeExtraParentReferences(path);

In fact make this all into a function b/c there is so much common code in these two places.

Feel free to change names but this is what I&apos;m thinking:

bool DOMFileSystemBase::domPathToPlatformPath(String domPath, String&amp; platformPath)
{
    if (!DOMFilePath::isAbsolute(path))
        domPath = DOMFilePath::append(base-&gt;fullPath(), domPath);
    String absolutePath = DOMFilePath::removeExtraParentReferences(path);

    if (!DOMFilePath::isValidPath(absolutePath))
        return false;
    platformPath = m_asyncFileSystem-&gt;virtualToPlatformPath(absolutePath);
    return true;
}

String platformPath;
if (!domPathToPlatformPath(path, platformPath))
    return false;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>291498</commentid>
    <comment_count>4</comment_count>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2010-10-08 01:39:05 -0700</bug_when>
    <thetext>Committed r69382: &lt;http://trac.webkit.org/changeset/69382&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>70168</attachid>
            <date>2010-10-07 16:32:38 -0700</date>
            <delta_ts>2010-10-07 23:56:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-47309-20101007163236.patch</filename>
            <type>text/plain</type>
            <size>8652</size>
            <attacher name="Kinuko Yasuda">kinuko</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBjM2FmYjczZmU1ZTlkMzIwZTc2NTQ3ZTJhZTRjYmRhNzIxOGM0ZTNjLi42N2ZkNmEz
ZWQwZWI4MTYyMmE2YTRhNzU4MTNhMGU5ZWI0MGQ5MDYyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAK
KzIwMTAtMTAtMDcgIEtpbnVrbyBZYXN1ZGEgIDxraW51a29AY2hyb21pdW0ub3JnPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZpeCBGaWxlU3lzdGVt
IHBhdGggdmFsaWRhdGlvbiBvcmRlciB0byBub3JtYWxpemUgJy4uJyBhbmQgJy4nIGJlZm9yZSBy
ZXN0cmljdGlvbiBjaGVja3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTQ3MzA5CisKKyAgICAgICAgKiBmYXN0L2ZpbGVzeXN0ZW0vb3AtZ2V0LWVudHJ5
LWV4cGVjdGVkLnR4dDogVXBkYXRlZC4KKyAgICAgICAgKiBmYXN0L2ZpbGVzeXN0ZW0vcmVzb3Vy
Y2VzL29wLWdldC1lbnRyeS5qczogVXBkYXRlZC4KKwogMjAxMC0xMC0wNyAgSmlhbiBMaSAgPGpp
YW5saUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBCYXJ0aC4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9vcC1nZXQtZW50cnktZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL29wLWdldC1lbnRyeS1leHBlY3Rl
ZC50eHQKaW5kZXggOTFkNTY0ZThjNzJkZGE3YzEwNjBmM2E5NzM2NDNlYmQ2YTAyOGE4OS4uMDQy
MGY3ZTQ2MzNmMzgyMmJmZGQ5NTI3YjcyMzg4YTkwNjc0NGIwOCAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvZmFzdC9maWxlc3lzdGVtL29wLWdldC1lbnRyeS1leHBlY3RlZC50eHQKKysrIGIvTGF5
b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL29wLWdldC1lbnRyeS1leHBlY3RlZC50eHQKQEAgLTE5
LDkgKzE5LDI3IEBAIFBBU1MgU3VjY2VlZGVkOiAiL2R1bW15Ii5nZXRGaWxlKCIvYS9iL2MvZC9l
IikKIFBBU1MgVmVyaWZpZWQgZW50cnk6IEVOVFJZIHtwYXRoOi9kdW1teSBuYW1lOmR1bW15IHR5
cGU6RElSRUNUT1JZfQogUEFTUyBWZXJpZmllZCBlbnRyeTogRU5UUlkge3BhdGg6L2EvYi9jL2Qv
ZSBuYW1lOmUgdHlwZTpGSUxFfQogKiBSdW5uaW5nOiBDcmVhdGVOZXN0ZWRXaXRoUmVsYXRpdmVQ
YXRoCi1QQVNTIHRoaXMuZXhwZWN0ZWRFcnJvckNvZGUgKyAiIiBpcyAiMTMiCi1QQVNTIHRoaXMu
ZXhwZWN0ZWRFcnJvckNvZGUgKyAiIiBpcyAiMTMiCi1QQVNTIHRoaXMuZXhwZWN0ZWRFcnJvckNv
ZGUgKyAiIiBpcyAiMTMiCitQQVNTIFN1Y2NlZWRlZDogIi9hIi5nZXREaXJlY3RvcnkoIi4vYiIp
CitQQVNTIFN1Y2NlZWRlZDogIi9hIi5nZXREaXJlY3RvcnkoIi4uL2IiKQorUEFTUyBTdWNjZWVk
ZWQ6ICIvYSIuZ2V0RGlyZWN0b3J5KCIuLi8uLi9iL2MiKQorUEFTUyBTdWNjZWVkZWQ6ICIvYSIu
Z2V0RGlyZWN0b3J5KCIvYS8uLi8uLi9kIikKK1BBU1MgU3VjY2VlZGVkOiAiL2EiLmdldERpcmVj
dG9yeSgiL2EvLi4vLi4vYi8uL2MvLi4vLi4vLi4vLi4vLi4vZSIpCitQQVNTIFN1Y2NlZWRlZDog
Ii9hIi5nZXRGaWxlKCIuL2IudHh0IikKK1BBU1MgU3VjY2VlZGVkOiAiL2EiLmdldEZpbGUoIi4u
L2IudHh0IikKK1BBU1MgU3VjY2VlZGVkOiAiL2EiLmdldEZpbGUoIi4uLy4uL2IvYy50eHQiKQor
UEFTUyBTdWNjZWVkZWQ6ICIvYSIuZ2V0RmlsZSgiL2EvLi4vLi4vZC50eHQiKQorUEFTUyBTdWNj
ZWVkZWQ6ICIvYSIuZ2V0RmlsZSgiL2EvLi4vLi4vYi8uL2MvLi4vLi4vLi4vLi4vLi4vZS50eHQi
KQorUEFTUyBWZXJpZmllZCBlbnRyeTogRU5UUlkge3BhdGg6L2EgbmFtZTphIHR5cGU6RElSRUNU
T1JZfQorUEFTUyBWZXJpZmllZCBlbnRyeTogRU5UUlkge3BhdGg6L2EvYiBuYW1lOmIgdHlwZTpE
SVJFQ1RPUll9CitQQVNTIFZlcmlmaWVkIGVudHJ5OiBFTlRSWSB7cGF0aDovYiBuYW1lOmIgdHlw
ZTpESVJFQ1RPUll9CitQQVNTIFZlcmlmaWVkIGVudHJ5OiBFTlRSWSB7cGF0aDovYi9jIG5hbWU6
YyB0eXBlOkRJUkVDVE9SWX0KK1BBU1MgVmVyaWZpZWQgZW50cnk6IEVOVFJZIHtwYXRoOi9kIG5h
bWU6ZCB0eXBlOkRJUkVDVE9SWX0KK1BBU1MgVmVyaWZpZWQgZW50cnk6IEVOVFJZIHtwYXRoOi9l
IG5hbWU6ZSB0eXBlOkRJUkVDVE9SWX0KK1BBU1MgVmVyaWZpZWQgZW50cnk6IEVOVFJZIHtwYXRo
Oi9hL2IudHh0IG5hbWU6Yi50eHQgdHlwZTpGSUxFfQorUEFTUyBWZXJpZmllZCBlbnRyeTogRU5U
Ulkge3BhdGg6L2IudHh0IG5hbWU6Yi50eHQgdHlwZTpGSUxFfQorUEFTUyBWZXJpZmllZCBlbnRy
eTogRU5UUlkge3BhdGg6L2IvYy50eHQgbmFtZTpjLnR4dCB0eXBlOkZJTEV9CitQQVNTIFZlcmlm
aWVkIGVudHJ5OiBFTlRSWSB7cGF0aDovZC50eHQgbmFtZTpkLnR4dCB0eXBlOkZJTEV9CitQQVNT
IFZlcmlmaWVkIGVudHJ5OiBFTlRSWSB7cGF0aDovZS50eHQgbmFtZTplLnR4dCB0eXBlOkZJTEV9
CiAqIFJ1bm5pbmc6IEdldEV4aXN0aW5nRW50cnkKIFBBU1MgU3VjY2VlZGVkOiAiLyIuZ2V0RGly
ZWN0b3J5KCJhIikKIFBBU1MgU3VjY2VlZGVkOiAiLyIuZ2V0RmlsZSgiYiIpCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVzb3VyY2VzL29wLWdldC1lbnRyeS5qcyBi
L0xheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvb3AtZ2V0LWVudHJ5LmpzCmlu
ZGV4IDU1NTFhMzdhMTkxNzE0MjNlOTUzOGIxMDdjYjI4NDFkMzBhOGE3YWEuLmI2YjkyZTZjOTdj
ZGE3OWI0NTRlYTdmNjUzN2I1NTU2MTNjM2VkZjYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zh
c3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvb3AtZ2V0LWVudHJ5LmpzCisrKyBiL0xheW91dFRlc3Rz
L2Zhc3QvZmlsZXN5c3RlbS9yZXNvdXJjZXMvb3AtZ2V0LWVudHJ5LmpzCkBAIC00OCwxMiArNDgs
MzAgQEAgdmFyIHRlc3RDYXNlcyA9IFsKICAgICAgICAgICAgIHtmdWxsUGF0aDonL2EnLCBpc0Rp
cmVjdG9yeTp0cnVlfSwKICAgICAgICAgXSwKICAgICAgICAgdGVzdHM6IFsKLSAgICAgICAgICAg
IC8vIEZJWE1FOiBGb3Igbm93IHRoZXkgdGhyb3cgYW4gZXJyb3IgYmVjYXVzZSB0aGV5IGZhaWwg
dGhlIGNoZWNrIGZvciByZXN0cmljdGVkLW5hbWVzOiAnYSBwYXRoIGNvbXBvbmVudCBzaG91bGQg
bm90IGVuZCB3aXRoIHBlcmlvZCcuCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVs
cGVyLmdldERpcmVjdG9yeSgnL2EnLCAnLi9iJywge2NyZWF0ZTp0cnVlfSwgRmlsZUVycm9yLklO
VkFMSURfTU9ESUZJQ0FUSU9OX0VSUik7IH0sCi0gICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIp
IHsgaGVscGVyLmdldERpcmVjdG9yeSgnL2EnLCAnLi4vYicsIHtjcmVhdGU6dHJ1ZX0sIEZpbGVF
cnJvci5JTlZBTElEX01PRElGSUNBVElPTl9FUlIpOyB9LAotICAgICAgICAgICAgZnVuY3Rpb24o
aGVscGVyKSB7IGhlbHBlci5nZXREaXJlY3RvcnkoJy9hJywgJy9hLy4uLy4uL2InLCB7Y3JlYXRl
OnRydWV9LCBGaWxlRXJyb3IuSU5WQUxJRF9NT0RJRklDQVRJT05fRVJSKTsgfSwKKyAgICAgICAg
ICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIuZ2V0RGlyZWN0b3J5KCcvYScsICcuL2InLCB7
Y3JlYXRlOnRydWV9KTsgfSwKKyAgICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIu
Z2V0RGlyZWN0b3J5KCcvYScsICcuLi9iJywge2NyZWF0ZTp0cnVlfSk7IH0sCisgICAgICAgICAg
ICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmdldERpcmVjdG9yeSgnL2EnLCAnLi4vLi4vYi9j
Jywge2NyZWF0ZTp0cnVlfSk7IH0sCisgICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVs
cGVyLmdldERpcmVjdG9yeSgnL2EnLCAnL2EvLi4vLi4vZCcsIHtjcmVhdGU6dHJ1ZX0pOyB9LAor
ICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5nZXREaXJlY3RvcnkoJy9hJywg
Jy9hLy4uLy4uL2IvLi9jLy4uLy4uLy4uLy4uLy4uL2UnLCB7Y3JlYXRlOnRydWV9KTsgfSwKKyAg
ICAgICAgICAgIGZ1bmN0aW9uKGhlbHBlcikgeyBoZWxwZXIuZ2V0RmlsZSgnL2EnLCAnLi9iLnR4
dCcsIHtjcmVhdGU6dHJ1ZX0pOyB9LAorICAgICAgICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhl
bHBlci5nZXRGaWxlKCcvYScsICcuLi9iLnR4dCcsIHtjcmVhdGU6dHJ1ZX0pOyB9LAorICAgICAg
ICAgICAgZnVuY3Rpb24oaGVscGVyKSB7IGhlbHBlci5nZXRGaWxlKCcvYScsICcuLi8uLi9iL2Mu
dHh0Jywge2NyZWF0ZTp0cnVlfSk7IH0sCisgICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsg
aGVscGVyLmdldEZpbGUoJy9hJywgJy9hLy4uLy4uL2QudHh0Jywge2NyZWF0ZTp0cnVlfSk7IH0s
CisgICAgICAgICAgICBmdW5jdGlvbihoZWxwZXIpIHsgaGVscGVyLmdldEZpbGUoJy9hJywgJy9h
Ly4uLy4uL2IvLi9jLy4uLy4uLy4uLy4uLy4uL2UudHh0Jywge2NyZWF0ZTp0cnVlfSk7IH0sCisg
ICAgICAgIF0sCisgICAgICAgIHBvc3Rjb25kaXRpb246IFsKKyAgICAgICAgICAgIHtmdWxsUGF0
aDonL2EnLCBpc0RpcmVjdG9yeTp0cnVlfSwKKyAgICAgICAgICAgIHtmdWxsUGF0aDonL2EvYics
IGlzRGlyZWN0b3J5OnRydWV9LAorICAgICAgICAgICAge2Z1bGxQYXRoOicvYicsIGlzRGlyZWN0
b3J5OnRydWV9LAorICAgICAgICAgICAge2Z1bGxQYXRoOicvYi9jJywgaXNEaXJlY3Rvcnk6dHJ1
ZX0sCisgICAgICAgICAgICB7ZnVsbFBhdGg6Jy9kJywgaXNEaXJlY3Rvcnk6dHJ1ZX0sCisgICAg
ICAgICAgICB7ZnVsbFBhdGg6Jy9lJywgaXNEaXJlY3Rvcnk6dHJ1ZX0sCisgICAgICAgICAgICB7
ZnVsbFBhdGg6Jy9hL2IudHh0J30sCisgICAgICAgICAgICB7ZnVsbFBhdGg6Jy9iLnR4dCd9LAor
ICAgICAgICAgICAge2Z1bGxQYXRoOicvYi9jLnR4dCd9LAorICAgICAgICAgICAge2Z1bGxQYXRo
OicvZC50eHQnfSwKKyAgICAgICAgICAgIHtmdWxsUGF0aDonL2UudHh0J30sCiAgICAgICAgIF0s
Ci0gICAgICAgIHBvc3Rjb25kaXRpb246IFsgXSwKICAgICB9LAogICAgIHsKICAgICAgICAgbmFt
ZTogJ0dldEV4aXN0aW5nRW50cnknLApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9X
ZWJDb3JlL0NoYW5nZUxvZwppbmRleCAwZWI4MjAxYTAyMWY3NWZjODVhYzY0MzhhMGE1ZjY0Nzkx
OGZlMTc3Li5iMzM3MjZmNzBmOTNjNzY4NDExMTg4NmJhZDQ1YjVjMDJmOWIyNWE3IDEwMDY0NAot
LS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE2IEBACisyMDEwLTEwLTA3ICBLaW51a28gWWFzdWRhICA8a2ludWtvQGNocm9taXVtLm9yZz4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGaXggRmls
ZVN5c3RlbSBwYXRoIHZhbGlkYXRpb24gb3JkZXIgdG8gbm9ybWFsaXplICcuLicgYW5kICcuJyBi
ZWZvcmUgcmVzdHJpY3Rpb24gY2hlY2tzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD00NzMwOQorCisgICAgICAgIFRlc3Q6IGZhc3QvZmlsZXN5c3RlbS9v
cC1nZXQtZW50cnkuaHRtbAorCisgICAgICAgICogZmlsZWFwaS9ET01GaWxlU3lzdGVtQmFzZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpET01GaWxlU3lzdGVtQmFzZTo6Z2V0RmlsZSk6IEZpeGVk
IHRoZSBwYXRoIHZhbGlkYXRpb24gb3JkZXIuCisgICAgICAgIChXZWJDb3JlOjpET01GaWxlU3lz
dGVtQmFzZTo6Z2V0RGlyZWN0b3J5KTogRml4ZWQgdGhlIHBhdGggdmFsaWRhdGlvbiBvcmRlci4K
KwogMjAxMC0xMC0wNyAgSmlhbiBMaSAgPGppYW5saUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAg
UmV2aWV3ZWQgYnkgQWRhbSBCYXJ0aC4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvZmlsZWFwaS9ET01G
aWxlU3lzdGVtQmFzZS5jcHAgYi9XZWJDb3JlL2ZpbGVhcGkvRE9NRmlsZVN5c3RlbUJhc2UuY3Bw
CmluZGV4IDYzYzZlNWIxYzg5ZTUxNTNjOTgwM2RhNjY1ZjU4MDY2ODZhYjViMzMuLjRmNWE3YzI4
Yzk5ODNiNjYxMTA3OTIyYzM3MjE5MThmMGFmMjA0YjcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZmls
ZWFwaS9ET01GaWxlU3lzdGVtQmFzZS5jcHAKKysrIGIvV2ViQ29yZS9maWxlYXBpL0RPTUZpbGVT
eXN0ZW1CYXNlLmNwcApAQCAtMTQwLDE0ICsxNDAsMTYgQEAgYm9vbCBET01GaWxlU3lzdGVtQmFz
ZTo6Z2V0UGFyZW50KGNvbnN0IEVudHJ5QmFzZSogZW50cnksIFBhc3NSZWZQdHI8RW50cnlDYWxs
YmEKIGJvb2wgRE9NRmlsZVN5c3RlbUJhc2U6OmdldEZpbGUoY29uc3QgRW50cnlCYXNlKiBiYXNl
LCBjb25zdCBTdHJpbmcmIHBhdGgsIFBhc3NSZWZQdHI8RmxhZ3M+IGZsYWdzLCBQYXNzUmVmUHRy
PEVudHJ5Q2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNr
PiBlcnJvckNhbGxiYWNrKQogewogICAgIEFTU0VSVChiYXNlKTsKLSAgICBpZiAoIURPTUZpbGVQ
YXRoOjppc1ZhbGlkUGF0aChwYXRoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgU3Ry
aW5nIGFic29sdXRlUGF0aCA9IHBhdGg7Ci0gICAgaWYgKCFET01GaWxlUGF0aDo6aXNBYnNvbHV0
ZShwYXRoKSkKKyAgICBTdHJpbmcgYWJzb2x1dGVQYXRoOworICAgIGlmIChET01GaWxlUGF0aDo6
aXNBYnNvbHV0ZShwYXRoKSkKKyAgICAgICAgYWJzb2x1dGVQYXRoID0gRE9NRmlsZVBhdGg6OnJl
bW92ZUV4dHJhUGFyZW50UmVmZXJlbmNlcyhwYXRoKTsKKyAgICBlbHNlCiAgICAgICAgIGFic29s
dXRlUGF0aCA9IERPTUZpbGVQYXRoOjpyZW1vdmVFeHRyYVBhcmVudFJlZmVyZW5jZXMoRE9NRmls
ZVBhdGg6OmFwcGVuZChiYXNlLT5mdWxsUGF0aCgpLCBwYXRoKSk7Ci0gICAgU3RyaW5nIHBsYXRm
b3JtUGF0aCA9IG1fYXN5bmNGaWxlU3lzdGVtLT52aXJ0dWFsVG9QbGF0Zm9ybVBhdGgoYWJzb2x1
dGVQYXRoKTsKKyAgICBpZiAoIURPTUZpbGVQYXRoOjppc1ZhbGlkUGF0aChhYnNvbHV0ZVBhdGgp
KQorICAgICAgICByZXR1cm4gZmFsc2U7CiAKKyAgICBTdHJpbmcgcGxhdGZvcm1QYXRoID0gbV9h
c3luY0ZpbGVTeXN0ZW0tPnZpcnR1YWxUb1BsYXRmb3JtUGF0aChhYnNvbHV0ZVBhdGgpOwogICAg
IE93blB0cjxFbnRyeUNhbGxiYWNrcz4gY2FsbGJhY2tzID0gRW50cnlDYWxsYmFja3M6OmNyZWF0
ZShzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2ssIHRoaXMsIGFic29sdXRlUGF0aCwgZmFs
c2UpOwogICAgIGlmIChmbGFncyAmJiBmbGFncy0+aXNDcmVhdGUoKSkKICAgICAgICAgbV9hc3lu
Y0ZpbGVTeXN0ZW0tPmNyZWF0ZUZpbGUocGxhdGZvcm1QYXRoLCBmbGFncy0+aXNFeGNsdXNpdmUo
KSwgY2FsbGJhY2tzLnJlbGVhc2UoKSk7CkBAIC0xNTksMTQgKzE2MSwxNiBAQCBib29sIERPTUZp
bGVTeXN0ZW1CYXNlOjpnZXRGaWxlKGNvbnN0IEVudHJ5QmFzZSogYmFzZSwgY29uc3QgU3RyaW5n
JiBwYXRoLCBQYXNzUgogYm9vbCBET01GaWxlU3lzdGVtQmFzZTo6Z2V0RGlyZWN0b3J5KGNvbnN0
IEVudHJ5QmFzZSogYmFzZSwgY29uc3QgU3RyaW5nJiBwYXRoLCBQYXNzUmVmUHRyPEZsYWdzPiBm
bGFncywgUGFzc1JlZlB0cjxFbnRyeUNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQ
dHI8RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjaykKIHsKICAgICBBU1NFUlQoYmFzZSk7Ci0g
ICAgaWYgKCFET01GaWxlUGF0aDo6aXNWYWxpZFBhdGgocGF0aCkpCi0gICAgICAgIHJldHVybiBm
YWxzZTsKIAotICAgIFN0cmluZyBhYnNvbHV0ZVBhdGggPSBwYXRoOwotICAgIGlmICghRE9NRmls
ZVBhdGg6OmlzQWJzb2x1dGUocGF0aCkpCisgICAgU3RyaW5nIGFic29sdXRlUGF0aDsKKyAgICBp
ZiAoRE9NRmlsZVBhdGg6OmlzQWJzb2x1dGUocGF0aCkpCisgICAgICAgIGFic29sdXRlUGF0aCA9
IERPTUZpbGVQYXRoOjpyZW1vdmVFeHRyYVBhcmVudFJlZmVyZW5jZXMocGF0aCk7CisgICAgZWxz
ZQogICAgICAgICBhYnNvbHV0ZVBhdGggPSBET01GaWxlUGF0aDo6cmVtb3ZlRXh0cmFQYXJlbnRS
ZWZlcmVuY2VzKERPTUZpbGVQYXRoOjphcHBlbmQoYmFzZS0+ZnVsbFBhdGgoKSwgcGF0aCkpOwot
ICAgIFN0cmluZyBwbGF0Zm9ybVBhdGggPSBtX2FzeW5jRmlsZVN5c3RlbS0+dmlydHVhbFRvUGxh
dGZvcm1QYXRoKGFic29sdXRlUGF0aCk7CisgICAgaWYgKCFET01GaWxlUGF0aDo6aXNWYWxpZFBh
dGgoYWJzb2x1dGVQYXRoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogCisgICAgU3RyaW5nIHBs
YXRmb3JtUGF0aCA9IG1fYXN5bmNGaWxlU3lzdGVtLT52aXJ0dWFsVG9QbGF0Zm9ybVBhdGgoYWJz
b2x1dGVQYXRoKTsKICAgICBPd25QdHI8RW50cnlDYWxsYmFja3M+IGNhbGxiYWNrcyA9IEVudHJ5
Q2FsbGJhY2tzOjpjcmVhdGUoc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrLCB0aGlzLCBh
YnNvbHV0ZVBhdGgsIHRydWUpOwogICAgIGlmIChmbGFncyAmJiBmbGFncy0+aXNDcmVhdGUoKSkK
ICAgICAgICAgbV9hc3luY0ZpbGVTeXN0ZW0tPmNyZWF0ZURpcmVjdG9yeShwbGF0Zm9ybVBhdGgs
IGZsYWdzLT5pc0V4Y2x1c2l2ZSgpLCBjYWxsYmFja3MucmVsZWFzZSgpKTsK
</data>
<flag name="review"
          id="59962"
          type_id="1"
          status="+"
          setter="levin"
    />
    <flag name="commit-queue"
          id="60016"
          type_id="3"
          status="-"
          setter="levin"
    />
          </attachment>
      

    </bug>

</bugzilla>