<?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>65781</bug_id>
          
          <creation_ts>2011-08-05 11:26:13 -0700</creation_ts>
          <short_desc>[NRWT] REGRESSION: Local loader tests are failing on machines that lost /tmp/LayoutTests symlink</short_desc>
          <delta_ts>2011-09-20 17:47:29 -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>Tools / Tests</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>P1</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>64135</dependson>
    
    <dependson>64001</dependson>
    
    <dependson>67953</dependson>
    
    <dependson>67954</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Eric Seidel (no email)">eric</assigned_to>
          <cc>abarth</cc>
    
    <cc>ap</cc>
    
    <cc>dbates</cc>
    
    <cc>dpranke</cc>
    
    <cc>eric</cc>
    
    <cc>japhet</cc>
    
    <cc>jarred</cc>
    
    <cc>koivisto</cc>
    
    <cc>scottmg</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>447306</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-08-05 11:26:13 -0700</bug_when>
    <thetext>It seems like there have been some loader regressions.  The following tests are failing on Snow Leopard very frequently:
fast/loader/local-CSS-from-local.html
fast/loader/local-JavaScript-from-local.html
fast/loader/local-image-from-local.html
http/tests/cookies/third-party-cookie-relaxing.html
http/tests/security/contentSecurityPolicy/media-src-allowed.html
http/tests/security/local-user-CSS-from-remote.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>447307</commentid>
    <comment_count>1</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-08-05 11:26:26 -0700</bug_when>
    <thetext>e.g. http://build.webkit.org/results/SnowLeopard%20Intel%20Release%20(Tests)/r92484%20(32034)/results.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>463478</commentid>
    <comment_count>2</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-09-07 11:21:08 -0700</bug_when>
    <thetext>&gt; fast/loader/local-CSS-from-local.html
&gt; fast/loader/local-JavaScript-from-local.html
&gt; fast/loader/local-image-from-local.html
&gt; http/tests/security/local-user-CSS-from-remote.html

These fail because NRWT doesn&apos;t create a symlink from /tmp/LayoutTests to actual LayoutTests directory. It should.

&gt; http/tests/security/contentSecurityPolicy/media-src-allowed.html

Not sure if that&apos;s the same case.

&gt; http/tests/cookies/third-party-cookie-relaxing.html

Definitely separate, but I&apos;m not sure if this is still happening. Let&apos;s make a separate bug if it does.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>463484</commentid>
    <comment_count>3</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-09-07 11:27:04 -0700</bug_when>
    <thetext>I have manually created the symlinks on apple-xserve-5 and apple-xserve-6 for now, but this really needs to be fixed in NRWT soon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>463485</commentid>
    <comment_count>4</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-09-07 11:27:29 -0700</bug_when>
    <thetext>Will look today.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>463495</commentid>
    <comment_count>5</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-09-07 11:31:54 -0700</bug_when>
    <thetext>presumably this is related to bug 64135? I thought we were leaning to fixing this in DRT, not in NRWT.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>463501</commentid>
    <comment_count>6</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-09-07 11:37:33 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; presumably this is related to bug 64135? I thought we were leaning to fixing this in DRT, not in NRWT.

It&apos;ll be nice if we didn&apos;t have to create symlinks but I don&apos;t think we should be forcing each port to implement this after the fact. I think we should fix this in NRWT and then slowly migrate to DRT-based solutions in the long term.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>463531</commentid>
    <comment_count>7</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-09-07 11:49:35 -0700</bug_when>
    <thetext>&gt; http/tests/cookies/third-party-cookie-relaxing.html

Turns out that there&apos;s already bug 64001 for that.

&gt; presumably this is related to bug 64135? I thought we were leaning to fixing this in DRT, not in NRWT.

That bug is a P2, and it has been languishing for two months. Unless someone is willing to change the tests and all DRT&apos;s very soon (and remove symlink creation from ORWT), I think that NRWT should make it easy to have green bots without manually re-creating the symlink.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>463553</commentid>
    <comment_count>8</comment_count>
    <who name="Jarred Nicholls">jarred</who>
    <bug_when>2011-09-07 12:04:01 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; &gt; presumably this is related to bug 64135? I thought we were leaning to fixing this in DRT, not in NRWT.
&gt; 
&gt; That bug is a P2, and it has been languishing for two months. Unless someone is willing to change the tests and all DRT&apos;s very soon (and remove symlink creation from ORWT), I think that NRWT should make it easy to have green bots without manually re-creating the symlink.

None of the tests need to be changed, but DRT implementations would need to happen.  I think a stop-gap solution in NRWT is acceptable but ought to be removed when bug #67239 clears - and might as well remove from ORWT when that happens too.  Qt&apos;s landed today (bug #67254) and Chromium already handles it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>463558</commentid>
    <comment_count>9</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-09-07 12:07:02 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; None of the tests need to be changed, but DRT implementations would need to happen.  I think a stop-gap solution in NRWT is acceptable but ought to be removed when bug #67239 clears - and might as well remove from ORWT when that happens too.  Qt&apos;s landed today (bug #67254) and Chromium already handles it.

Yeah, not having to add symlinks will be really nice, and we should move towards that direction. But in the short term, we probably need this trick be implemented in NRWT.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>463749</commentid>
    <comment_count>10</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-09-07 16:13:17 -0700</bug_when>
    <thetext>Can you help me understand why these tests use absolute file:// paths instead of relative file paths?

I&apos;m sure there is a good reason, but I&apos;d like to understand as that will inform my thinking on fixing this bug or bug 67239, etc.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>463777</commentid>
    <comment_count>11</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-09-07 16:50:31 -0700</bug_when>
    <thetext>I&apos;m myself puzzled about fast/loader tests, but it seems necessary for the http one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>463779</commentid>
    <comment_count>12</comment_count>
    <who name="Jarred Nicholls">jarred</who>
    <bug_when>2011-09-07 16:52:44 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; I&apos;m myself puzzled about fast/loader tests, but it seems necessary for the http one.

Indeed, particularly the security tests (remote =&gt; local origin requests).  See comments in bug #67239.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>463943</commentid>
    <comment_count>13</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-09-08 00:55:12 -0700</bug_when>
    <thetext>storage/domstorage/localstorage/storagetracker/storage-tracker-7-usage.html is failing on Snow Leopard Release bot:
http://build.webkit.org/results/SnowLeopard%20Intel%20Release%20(Tests)/r94746%20(32915)/results.html

Is this failure related to this bug?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>463995</commentid>
    <comment_count>14</comment_count>
    <who name="Jarred Nicholls">jarred</who>
    <bug_when>2011-09-08 05:13:52 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; storage/domstorage/localstorage/storagetracker/storage-tracker-7-usage.html is failing on Snow Leopard Release bot:
&gt; http://build.webkit.org/results/SnowLeopard%20Intel%20Release%20(Tests)/r94746%20(32915)/results.html
&gt; 
&gt; Is this failure related to this bug?

Doubtful.  Does that bot run the tests serially or w/ multiple workers?  Those tests are meant to run serially and will be flaky or fail if ran out of order.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>464527</commentid>
    <comment_count>15</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-09-08 17:35:11 -0700</bug_when>
    <thetext>I think this is just a dupe of bug 64135.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>464548</commentid>
    <comment_count>16</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-09-08 18:05:45 -0700</bug_when>
    <thetext>I&apos;ve decided the proper solution to this is to make the pathToLocalResource magically relative to the test in question.  I&apos;ve written the code for Mac now, if it works it&apos;s written in such a fashion as it could be run on any platform and this problem should just go away everywhere w/o us needing the symlink.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>464556</commentid>
    <comment_count>17</comment_count>
      <attachid>106824</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-09-08 18:18:19 -0700</bug_when>
    <thetext>Created attachment 106824
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>464587</commentid>
    <comment_count>18</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-09-08 19:06:38 -0700</bug_when>
    <thetext>No symlink would mean that tests cannot be run in browser though?

I&apos;m not sure why most commenters are in agreement that symlink is bad in the long run.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>464603</commentid>
    <comment_count>19</comment_count>
    <who name="Jarred Nicholls">jarred</who>
    <bug_when>2011-09-08 19:48:09 -0700</bug_when>
    <thetext>@Eric this won&apos;t apply to Qt, but Qt can look at the loaded URL and do the same derivation; I may take the time to do it this way.

@ap this would be helpful for contributors running windows and vanilla (no cygwin) windows bots running NRWT.  If someone needs to test in a browser manually, they can change the path before running the test (in windows) or create the symlink themselves.  Note that in Windows, they would have to change the path anyways to run the test in a browser.

The only tests that really need an absolute URL are the http ones (http/security, etc.).  The rest (fast/loader) can be changed to relative URLs.  I think this remapping mechanism will very rarely be needed in future tests, but may come in handy; those few use cases are the whole reason pathToLocalResource exists.

Overall, this is a small fish with only a couple of affected tests so we don&apos;t want to over engineer around it.  But, deriving the absolute path is so simple and arguably more robust that there&apos;s no sense in not doing it.  Just MHO.  I don&apos;t mind symlinks, but I also don&apos;t dev in Windows :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>464617</commentid>
    <comment_count>20</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-09-08 20:43:16 -0700</bug_when>
    <thetext>(In reply to comment #18)
&gt; No symlink would mean that tests cannot be run in browser though?
&gt; 
&gt; I&apos;m not sure why most commenters are in agreement that symlink is bad in the long run.

You would have to create the symlink yourself.  It is generally true that many LayoutTests cannot be run in a browser.  :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>464624</commentid>
    <comment_count>21</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-09-08 21:03:23 -0700</bug_when>
    <thetext>We try to make them work in a browser though - that&apos;s quite helpful in many respects.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>464629</commentid>
    <comment_count>22</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-09-08 21:16:55 -0700</bug_when>
    <thetext>(In reply to comment #21)
&gt; We try to make them work in a browser though - that&apos;s quite helpful in many respects.

Right. But I think pros - less platform dependency - outweigh cons - not being able to run tests - in this case given there are only few tests that require symlink.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>464653</commentid>
    <comment_count>23</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-09-08 22:40:14 -0700</bug_when>
    <thetext>I don&apos;t think that it&apos;s accurate to describe it this way. You get the symlink and the ability to run the test in browser on Unix platforms, but the test still works on lesser platforms due to the pathToLocalResource() hack.

This is why I&apos;m surprised by the general sentiment about symlink somehow being a bad long term direction.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>464655</commentid>
    <comment_count>24</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-09-08 22:43:54 -0700</bug_when>
    <thetext>(In reply to comment #23)
&gt; I don&apos;t think that it&apos;s accurate to describe it this way. You get the symlink and the ability to run the test in browser on Unix platforms, but the test still works on lesser platforms due to the pathToLocalResource() hack.
&gt; 
&gt; This is why I&apos;m surprised by the general sentiment about symlink somehow being a bad long term direction.

Mn... but you can always create a symlink to run the test manually even after this patch is landed, right?  We could even add a script to do that automatically.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>464660</commentid>
    <comment_count>25</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-09-08 23:02:19 -0700</bug_when>
    <thetext>Yes, but this approach also means that all DRTs on Unix platforms have to implement pathToLocalResource(). So, it&apos;s more work and less convenience, all for unclear benefit.

Not a tremendously big deal either way though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>464711</commentid>
    <comment_count>26</comment_count>
    <who name="Jarred Nicholls">jarred</who>
    <bug_when>2011-09-09 03:31:28 -0700</bug_when>
    <thetext>(In reply to comment #25)
&gt; Yes, but this approach also means that all DRTs on Unix platforms have to implement pathToLocalResource(). So, it&apos;s more work and less convenience, all for unclear benefit.

All the ports but Qt load the test URL in a similar manner and can be solved in one patch/place it seems.  And, Qt&apos;s already working around it.  I understand your point, but instead of implementing two fragmented solutions to the same problem (use symlink in NRWT for nix ports, and fix DRT on several other ports) it&apos;s nice to solve it in one place.  The ugly cygwin registry lookups in the win port can disappear, Qt can run DRT in windows now, etc etc.

&gt; 
&gt; Not a tremendously big deal either way though.

Agreed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>464736</commentid>
    <comment_count>27</comment_count>
    <who name="Jarred Nicholls">jarred</who>
    <bug_when>2011-09-09 04:42:22 -0700</bug_when>
    <thetext>(In reply to comment #26)
&gt; (In reply to comment #25)
&gt; The ugly cygwin registry lookups in the win port can disappear

Mm, that&apos;s actually not true if building and running within a cygwin environment (assuming getcwd is returning a /cygdrive path and python returns a /cygdrive path for module.__file__).  But, it might make sense for NRWT, on Windows, to run cygpath and pass the Windows style path to DRT instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>465737</commentid>
    <comment_count>28</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-09-12 12:42:44 -0700</bug_when>
    <thetext>I&apos;m hitting this on my personal machine too.  I believe this is a good solution to the problem.  Can haz review?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>465758</commentid>
    <comment_count>29</comment_count>
      <attachid>106824</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-09-12 13:19:51 -0700</bug_when>
    <thetext>Comment on attachment 106824
Patch

looks sane to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>465760</commentid>
    <comment_count>30</comment_count>
      <attachid>106824</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-09-12 13:22:52 -0700</bug_when>
    <thetext>Comment on attachment 106824
Patch

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

r+ with comments addressed.

&gt; Tools/DumpRenderTree/mac/LayoutTestControllerMac.mm:361
&gt; +    // The passed in path will be an absolute path to the layout test starting
&gt; +    // at /tmp/LayoutTests. Historically we created a /tmp/LayoutTests symlink

Do you want to assert that the passed path starts with that?

For a future improvement, I think that this method shouldn&apos;t be making one use the weird /tmp/LayoutTests path, if everyone else still agrees that symlink is bad.

&gt; Tools/DumpRenderTree/mac/LayoutTestControllerMac.mm:365
&gt; +    // but not all platforms support symlinks and dependence on such a symlink
&gt; +    // made it impossible for multiple users to run the layout tests (permission conflicts).
&gt; +    // Instead we use the absolute path for the test from m_testPathOrURL
&gt; +    // to create an absolute path for the requested local resource.

I think that the amount of history is a bit excessive here.

&gt; Tools/DumpRenderTree/mac/LayoutTestControllerMac.mm:369
&gt; +    size_t resourceAsUTF8Length = JSStringGetUTF8CString(localResource, resourceAsUTF8, maxResourceLength);

This is wrong - the returned value includes null bytes, so it&apos;s not length, but buffer size. As a result, you get a trailing null byte in std:string below - which doesn&apos;t cause immediate trouble because the final result is based on c_str, but is very fragile.

&gt; Tools/DumpRenderTree/mac/LayoutTestControllerMac.mm:371
&gt; +    std::string resourceAsWString(resourceAsUTF8, resourceAsUTF8Length);

What is W in WString?

&gt; Tools/DumpRenderTree/mac/LayoutTestControllerMac.mm:376
&gt; +    std::string resolvedResource = m_testPathOrURL.substr(0, testLayoutTestsIndex) + resourceAsWString.substr(resourceLayoutTestsIndex);

I&apos;d call this resolvedResourcePath (as well as other path variables here).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>465777</commentid>
    <comment_count>31</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-09-12 13:53:26 -0700</bug_when>
    <thetext>Committed r94976: &lt;http://trac.webkit.org/changeset/94976&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>465804</commentid>
    <comment_count>32</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-09-12 14:46:12 -0700</bug_when>
    <thetext>This patch broke a bunch of tests in http/tests/security/:

http://build.webkit.org/results/SnowLeopard%20Intel%20Release%20(Tests)/r94976%20(33025)/results.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>468121</commentid>
    <comment_count>33</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-09-15 15:30:03 -0700</bug_when>
    <thetext>I am able to reproduce the failure locally.  Investigating.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>468201</commentid>
    <comment_count>34</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-09-15 18:06:43 -0700</bug_when>
    <thetext>OK, so the code I wrote does the wrong thing for HTTP tests.  Example:

test: http://127.0.0.1:8000/security/frame-loading-via-document-write.html
resolved resource: http://127.0.0.1:8000/security/frame-loading-via-document-write.html/LayoutTests/fast/dom/resources/abe.png

Note there is no LayoutTests in the original path (like ap warned about).

Will investigate further tomorrow.  For now, I need to eat. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>468706</commentid>
    <comment_count>35</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-09-16 12:25:52 -0700</bug_when>
    <thetext>I&apos;m not sure how to solve this w/o leaking information about our directory layout into DumpRenderTree.

We could add an environment variable to expose some sort of LOCAL_RESOURCE_ROOT, or a flag to DRT.  But neither of those quite feel right.

The symlink in /tmp/ is problematic for all the reasons stated above, but that may just be the most expedient solution. :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>468713</commentid>
    <comment_count>36</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-09-16 12:33:45 -0700</bug_when>
    <thetext>Hm... I&apos;m starting to like the LOCAL_RESOURCE_ROOT environment variable option.  Basically an absolute path to the LayoutTests directory.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>468728</commentid>
    <comment_count>37</comment_count>
    <who name="Jarred Nicholls">jarred</who>
    <bug_when>2011-09-16 12:52:50 -0700</bug_when>
    <thetext>(In reply to comment #36)
&gt; Hm... I&apos;m starting to like the LOCAL_RESOURCE_ROOT environment variable option.  Basically an absolute path to the LayoutTests directory.

I think that&apos;s good, maybe prefixed DRT_ and of course set by the test harness.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>468730</commentid>
    <comment_count>38</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-09-16 12:54:39 -0700</bug_when>
    <thetext>(In reply to comment #36)
&gt; Hm... I&apos;m starting to like the LOCAL_RESOURCE_ROOT environment variable option.  Basically an absolute path to the LayoutTests directory.

Seems reasonable. I tend to prefer command line args over env variables, generally, but I don&apos;t know if I have a specific leaning in this case. Did you consider using an arg instead?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>468734</commentid>
    <comment_count>39</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-09-16 12:56:54 -0700</bug_when>
    <thetext>It&apos;s possible to do an arg instead.  I&apos;m testing the code now and will post.  If folks feel strongly about an arg instead of an environment variable I can change things.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>468736</commentid>
    <comment_count>40</comment_count>
    <who name="Jarred Nicholls">jarred</who>
    <bug_when>2011-09-16 12:57:51 -0700</bug_when>
    <thetext>(In reply to comment #37)
&gt; 
&gt; I think that&apos;s good, maybe prefixed DRT_ 

or something more generic to WebKit as a whole

(In reply to comment #38)
&gt; 
&gt; Seems reasonable. I tend to prefer command line args over env variables, generally, but I don&apos;t know if I have a specific leaning in this case. Did you consider using an arg instead?

Ditto, though I retracted my comment before submitting because it&apos;s six one way, half a dozen the other.  env vars are easy to grab and use but the naming is a good bike shedding topic :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>468746</commentid>
    <comment_count>41</comment_count>
      <attachid>107711</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-09-16 13:05:39 -0700</bug_when>
    <thetext>Created attachment 107711
work in progress</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>468863</commentid>
    <comment_count>42</comment_count>
      <attachid>107740</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-09-16 16:00:07 -0700</bug_when>
    <thetext>Created attachment 107740
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>468897</commentid>
    <comment_count>43</comment_count>
      <attachid>107740</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-09-16 16:43:52 -0700</bug_when>
    <thetext>Comment on attachment 107740
Patch

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

&gt; Tools/DumpRenderTree/mac/LayoutTestControllerMac.mm:363
&gt; +    size_t utf8StringLength = JSStringGetUTF8CString(jsString, utf8Buffer, maxBufferSize);
&gt; +    std::string stdString = std::string(utf8Buffer, utf8StringLength);

This has the same off-by-one error as before. The string will have an extra null byte at the end.

Also, you can get rid of assignment, and just construct stdString directly.

&gt; Tools/DumpRenderTree/mac/LayoutTestControllerMac.mm:375
&gt; +    // This fallback approach works for non-http tests and is useful
&gt; +    // in the case when we&apos;re running DRT directly from the command line.

I&apos;m still confused why we ever need this machinery for non-http tests. Can&apos;t we just modify those tests to have relative paths?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>468901</commentid>
    <comment_count>44</comment_count>
      <attachid>107740</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-09-16 16:57:39 -0700</bug_when>
    <thetext>Comment on attachment 107740
Patch

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

&gt; Tools/DumpRenderTree/mac/LayoutTestControllerMac.mm:377
&gt; +    size_t indexOfRootNameStart = testPathOrURL.rfind(expectedRootName);

I think we should be calling rfind(serachKey) here.

&gt; Tools/DumpRenderTree/mac/LayoutTestControllerMac.mm:406
&gt; +    std::string searchKey = &quot;/&quot; + expectedRootName + &quot;/&quot;;
&gt; +    size_t indexOfRootNameStart = localResourceString.rfind(searchKey);
&gt; +    if (indexOfRootNameStart == std::string::npos) {
&gt; +        ASSERT_NOT_REACHED();
&gt; +        return localResourceJSString;
&gt; +    }
&gt; +
&gt; +    size_t indexOfSeparatorAfterRootName = indexOfRootNameStart + searchKey.length() - 1;

This code is duplicated in resourceRootAbsolutePath.  Can we extract as a function?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>468902</commentid>
    <comment_count>45</comment_count>
      <attachid>107740</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-09-16 16:58:13 -0700</bug_when>
    <thetext>Comment on attachment 107740
Patch

I&apos;d say r- given ap&apos;s &amp; my comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>470312</commentid>
    <comment_count>46</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-09-20 14:00:58 -0700</bug_when>
    <thetext>(In reply to comment #43)
&gt; (From update of attachment 107740 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=107740&amp;action=review
&gt; 
&gt; &gt; Tools/DumpRenderTree/mac/LayoutTestControllerMac.mm:363
&gt; &gt; +    size_t utf8StringLength = JSStringGetUTF8CString(jsString, utf8Buffer, maxBufferSize);
&gt; &gt; +    std::string stdString = std::string(utf8Buffer, utf8StringLength);
&gt; 
&gt; This has the same off-by-one error as before. The string will have an extra null byte at the end.

Fixed.

&gt; Also, you can get rid of assignment, and just construct stdString directly.

Fixed.

&gt; &gt; Tools/DumpRenderTree/mac/LayoutTestControllerMac.mm:375
&gt; &gt; +    // This fallback approach works for non-http tests and is useful
&gt; &gt; +    // in the case when we&apos;re running DRT directly from the command line.
&gt; 
&gt; I&apos;m still confused why we ever need this machinery for non-http tests. Can&apos;t we just modify those tests to have relative paths?

It&apos;s unclear to me.  fast/loader/local-CSS-from-local.html seems to be testing that one file:// url page can load a stylesheet from another file:// url.  Unclear if it&apos;s trying to test that that URL be absolute or not, or if it could just be changed to be a relative URL and still test whatever it thinks its testing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>470324</commentid>
    <comment_count>47</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-09-20 14:11:46 -0700</bug_when>
    <thetext>(In reply to comment #44)
&gt; (From update of attachment 107740 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=107740&amp;action=review
&gt; 
&gt; &gt; Tools/DumpRenderTree/mac/LayoutTestControllerMac.mm:377
&gt; &gt; +    size_t indexOfRootNameStart = testPathOrURL.rfind(expectedRootName);
&gt; 
&gt; I think we should be calling rfind(serachKey) here.

Fixed.

&gt; &gt; Tools/DumpRenderTree/mac/LayoutTestControllerMac.mm:406
&gt; &gt; +    std::string searchKey = &quot;/&quot; + expectedRootName + &quot;/&quot;;
&gt; &gt; +    size_t indexOfRootNameStart = localResourceString.rfind(searchKey);
&gt; &gt; +    if (indexOfRootNameStart == std::string::npos) {
&gt; &gt; +        ASSERT_NOT_REACHED();
&gt; &gt; +        return localResourceJSString;
&gt; &gt; +    }
&gt; &gt; +
&gt; &gt; +    size_t indexOfSeparatorAfterRootName = indexOfRootNameStart + searchKey.length() - 1;
&gt; 
&gt; This code is duplicated in resourceRootAbsolutePath.  Can we extract as a function?

Fixed.  That&apos;s much nicer!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>470341</commentid>
    <comment_count>48</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-09-20 14:26:53 -0700</bug_when>
    <thetext>&gt; &gt; I&apos;m still confused why we ever need this machinery for non-http tests. Can&apos;t we just modify those tests to have relative paths?
&gt; 
&gt; It&apos;s unclear to me.  fast/loader/local-CSS-from-local.html seems to be testing that one file:// url page can load a stylesheet from another file:// url.  Unclear if it&apos;s trying to test that that URL be absolute or not, or if it could just be changed to be a relative URL and still test whatever it thinks its testing.

Looking at svn logs, it seems that these tests don&apos;t care about absolute vs. relative; they only use absolute URLs because they were copy/pasted from http: counterparts.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>470344</commentid>
    <comment_count>49</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-09-20 14:29:29 -0700</bug_when>
    <thetext>(In reply to comment #48)
&gt; &gt; &gt; I&apos;m still confused why we ever need this machinery for non-http tests. Can&apos;t we just modify those tests to have relative paths?
&gt; &gt; 
&gt; &gt; It&apos;s unclear to me.  fast/loader/local-CSS-from-local.html seems to be testing that one file:// url page can load a stylesheet from another file:// url.  Unclear if it&apos;s trying to test that that URL be absolute or not, or if it could just be changed to be a relative URL and still test whatever it thinks its testing.
&gt; 
&gt; Looking at svn logs, it seems that these tests don&apos;t care about absolute vs. relative; they only use absolute URLs because they were copy/pasted from http: counterparts.

I&apos;m happy to remove all callers of layoutTestController.pathToLocalResource from the file:// based tests and add an ASSERT that tests are always HTTP tests in a second pass?  I think that should be separate from this bug however.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>470361</commentid>
    <comment_count>50</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-09-20 14:41:21 -0700</bug_when>
    <thetext>It&apos;s fine with me if it&apos;s a separate pass.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>470376</commentid>
    <comment_count>51</comment_count>
      <attachid>108058</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-09-20 15:03:31 -0700</bug_when>
    <thetext>Created attachment 108058
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>470378</commentid>
    <comment_count>52</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-09-20 15:04:44 -0700</bug_when>
    <thetext>This has been one hell of a yak shave. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>470381</commentid>
    <comment_count>53</comment_count>
      <attachid>108058</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-09-20 15:13:58 -0700</bug_when>
    <thetext>Comment on attachment 108058
Patch

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

seems sane to me.

&gt; Tools/DumpRenderTree/mac/LayoutTestControllerMac.mm:409
&gt; +    } else {
&gt; +        ASSERT_NOT_REACHED(); // pathToLocalResource was passed a path it doesn&apos;t know how to map.
&gt; +    }

Nit: curly brackets around a single line statement.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>470513</commentid>
    <comment_count>54</comment_count>
      <attachid>108058</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-09-20 17:47:22 -0700</bug_when>
    <thetext>Comment on attachment 108058
Patch

Clearing flags on attachment: 108058

Committed r95588: &lt;http://trac.webkit.org/changeset/95588&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>470514</commentid>
    <comment_count>55</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-09-20 17:47:29 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>106824</attachid>
            <date>2011-09-08 18:18:19 -0700</date>
            <delta_ts>2011-09-16 13:05:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-65781-20110908181818.patch</filename>
            <type>text/plain</type>
            <size>3259</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTQ4MjIKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCAwYTNjYWMyMDg5NzJmOWVjZjI2OWIxNjdjOTA3ZGI3MTA0
ZTFiNzEwLi45YmY5ZDA5NDdmNDczZjc1MjlhNzdmMzNiOWY0NWNlMzNiYTIxNDMwIDEwMDY0NAot
LS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAg
QEAKKzIwMTEtMDktMDggIEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgorCisgICAgICAg
IFtOUldUXSBSRUdSRVNTSU9OOiBMb2NhbCBsb2FkZXIgdGVzdHMgYXJlIGZhaWxpbmcgb24gbWFj
aGluZXMgdGhhdCBsb3N0IC90bXAvTGF5b3V0VGVzdHMgc3ltbGluaworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjU3ODEKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbnN0ZWFkIG9mIG1ha2luZyBOUldUIGNy
ZWF0ZSB0aGUgc3ltbGluaywgSSBqdXN0IG1hZGUgRHVtcFJlbmRlclRyZWUgc21hcnQgZW5vdWdo
CisgICAgICAgIHRvIHJlc29sdmUgdGhlIHBhc3NlZCBpbiB1cmwgcmVsYXRpdmUgdG8gdGhlIGFi
c29sdXRlIHVybCBmb3IgdGhlIHRlc3QuCisKKyAgICAgICAgSSBiZWxpZXZlIHRoaXMgaXMgYSBi
ZXR0ZXIgYXBwcm9hY2ggdGhhbiB0aGUgb24gdXNlZCBpbiB0aGUgUXQgYW5kIENocm9taXVtIERS
VCdzCisgICAgICAgICh3aGljaCByZXNvbHZlcyB0aGUgcGF0aCByZWxhdGl2ZSB0byB0aGUgYnVp
bHQgbG9jYXRpb24gb2YgdGhlIERSVCBleGVjdXRhYmxlKQorICAgICAgICBhbmQgd2Ugc2hvdWxk
IG1vdmUgdGhpcyBuZXcgY29kZSBpbnRvIGEgc2hhcmVkIGxvY2F0aW9uIGluIGEgZm9sbG93LXVw
IHBhdGNoLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL0xheW91dFRlc3RDb250cm9s
bGVyTWFjLm1tOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnBhdGhUb0xvY2FsUmVz
b3VyY2UpOgorCiAyMDExLTA5LTA4ICBCcmlhbiBXZWluc3RlaW4gIDxid2VpbnN0ZWluQGFwcGxl
LmNvbT4KIAogICAgICAgICBXZWJLaXQyOiBBc3NlcnRpb24gd2hlbiBjYWxsaW5nIGRpZFBlcmZv
cm0qUmVkaXJlY3Qgb24gbnVsbCBzb3VyY2UvZGVzdGluYXRpb24gVVJMIHN0cmluZwpkaWZmIC0t
Z2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0xheW91dFRlc3RDb250cm9sbGVyTWFjLm1t
IGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0xheW91dFRlc3RDb250cm9sbGVyTWFjLm1tCmlu
ZGV4IGY2ZTU0M2ZhZTU2ZWE4MmEwYzhhYmI5MTMwYTgyMGFlZmY2NWFlMjYuLjY1NTQ5NWE1NjJi
Zjg4YWY1MDlkYTA4ZDE1NTE2NDgzZWJlMmJiYzAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbQorKysgYi9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW0KQEAgLTM1NSw5ICszNTUsMjcg
QEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6bm90aWZ5RG9uZSgpCiAgICAgbV93YWl0VG9E
dW1wID0gZmFsc2U7CiB9CiAKLUpTU3RyaW5nUmVmIExheW91dFRlc3RDb250cm9sbGVyOjpwYXRo
VG9Mb2NhbFJlc291cmNlKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU1N0cmluZ1JlZiB1cmwpCi17
Ci0gICAgcmV0dXJuIEpTU3RyaW5nUmV0YWluKHVybCk7IC8vIERvIG5vdGhpbmcgb24gbWFjLgor
SlNTdHJpbmdSZWYgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnBhdGhUb0xvY2FsUmVzb3VyY2UoSlND
b250ZXh0UmVmIGNvbnRleHQsIEpTU3RyaW5nUmVmIGxvY2FsUmVzb3VyY2UpCit7CisgICAgLy8g
VGhlIHBhc3NlZCBpbiBwYXRoIHdpbGwgYmUgYW4gYWJzb2x1dGUgcGF0aCB0byB0aGUgbGF5b3V0
IHRlc3Qgc3RhcnRpbmcKKyAgICAvLyBhdCAvdG1wL0xheW91dFRlc3RzLiBIaXN0b3JpY2FsbHkg
d2UgY3JlYXRlZCBhIC90bXAvTGF5b3V0VGVzdHMgc3ltbGluaworICAgIC8vIGJ1dCBub3QgYWxs
IHBsYXRmb3JtcyBzdXBwb3J0IHN5bWxpbmtzIGFuZCBkZXBlbmRlbmNlIG9uIHN1Y2ggYSBzeW1s
aW5rCisgICAgLy8gbWFkZSBpdCBpbXBvc3NpYmxlIGZvciBtdWx0aXBsZSB1c2VycyB0byBydW4g
dGhlIGxheW91dCB0ZXN0cyAocGVybWlzc2lvbiBjb25mbGljdHMpLgorICAgIC8vIEluc3RlYWQg
d2UgdXNlIHRoZSBhYnNvbHV0ZSBwYXRoIGZvciB0aGUgdGVzdCBmcm9tIG1fdGVzdFBhdGhPclVS
TAorICAgIC8vIHRvIGNyZWF0ZSBhbiBhYnNvbHV0ZSBwYXRoIGZvciB0aGUgcmVxdWVzdGVkIGxv
Y2FsIHJlc291cmNlLgorICAgIC8vIEZJWE1FOiBUaGlzIGNvZGUgc2hvdWxkIHdvcmsgb24gYWxs
ICpuaXggcGxhdGZvcm1zIGFuZCBjYW4gYmUgbW92ZWQgaW50byBMYXlvdXRUZXN0Q29udHJvbGxl
ci5jcHAuCisgICAgc2l6ZV90IG1heFJlc291cmNlTGVuZ3RoID0gSlNTdHJpbmdHZXRNYXhpbXVt
VVRGOENTdHJpbmdTaXplKGxvY2FsUmVzb3VyY2UpOworICAgIGNoYXIqIHJlc291cmNlQXNVVEY4
ID0gbmV3IGNoYXJbbWF4UmVzb3VyY2VMZW5ndGhdOworICAgIHNpemVfdCByZXNvdXJjZUFzVVRG
OExlbmd0aCA9IEpTU3RyaW5nR2V0VVRGOENTdHJpbmcobG9jYWxSZXNvdXJjZSwgcmVzb3VyY2VB
c1VURjgsIG1heFJlc291cmNlTGVuZ3RoKTsKKworICAgIHN0ZDo6c3RyaW5nIHJlc291cmNlQXNX
U3RyaW5nKHJlc291cmNlQXNVVEY4LCByZXNvdXJjZUFzVVRGOExlbmd0aCk7CisgICAgZGVsZXRl
W10gcmVzb3VyY2VBc1VURjg7CisKKyAgICBzaXplX3QgcmVzb3VyY2VMYXlvdXRUZXN0c0luZGV4
ID0gcmVzb3VyY2VBc1dTdHJpbmcucmZpbmQoIi9MYXlvdXRUZXN0cy8iKTsKKyAgICBzaXplX3Qg
dGVzdExheW91dFRlc3RzSW5kZXggPSBtX3Rlc3RQYXRoT3JVUkwucmZpbmQoIi9MYXlvdXRUZXN0
cy8iKTsKKyAgICBzdGQ6OnN0cmluZyByZXNvbHZlZFJlc291cmNlID0gbV90ZXN0UGF0aE9yVVJM
LnN1YnN0cigwLCB0ZXN0TGF5b3V0VGVzdHNJbmRleCkgKyByZXNvdXJjZUFzV1N0cmluZy5zdWJz
dHIocmVzb3VyY2VMYXlvdXRUZXN0c0luZGV4KTsKKworICAgIHJldHVybiBKU1N0cmluZ0NyZWF0
ZVdpdGhVVEY4Q1N0cmluZyhyZXNvbHZlZFJlc291cmNlLmNfc3RyKCkpOwogfQogCiB2b2lkIExh
eW91dFRlc3RDb250cm9sbGVyOjpxdWV1ZUxvYWQoSlNTdHJpbmdSZWYgdXJsLCBKU1N0cmluZ1Jl
ZiB0YXJnZXQpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>107711</attachid>
            <date>2011-09-16 13:05:39 -0700</date>
            <delta_ts>2011-09-16 16:00:02 -0700</delta_ts>
            <desc>work in progress</desc>
            <filename>bug-65781-20110916130538.patch</filename>
            <type>text/plain</type>
            <size>4924</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTUyMzgKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCBmYWE5MGJhMTQ2ZTFkNmIyNGQ1OWQwZmYwOWUwMGM2MDRm
MTc1MGM1Li5hZWRiOTU5ZDRlMTJmNjNhY2M2YzFjYWZmNDQyNzNiZTYzZjk2ZmRlIDEwMDY0NAot
LS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMjIg
QEAKIDIwMTEtMDktMTUgIEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgogCisgICAgICAg
IFtOUldUXSBSRUdSRVNTSU9OOiBMb2NhbCBsb2FkZXIgdGVzdHMgYXJlIGZhaWxpbmcgb24gbWFj
aGluZXMgdGhhdCBsb3N0IC90bXAvTGF5b3V0VGVzdHMgc3ltbGluaworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjU3ODEKKworICAgICAgICBSZXZpZXdl
ZCBieSBSeW9zdWtlIE5pd2EuCisKKyAgICAgICAgSW5zdGVhZCBvZiBtYWtpbmcgTlJXVCBjcmVh
dGUgdGhlIHN5bWxpbmssIEkganVzdCBtYWRlIER1bXBSZW5kZXJUcmVlIHNtYXJ0IGVub3VnaAor
ICAgICAgICB0byByZXNvbHZlIHRoZSBwYXNzZWQgaW4gdXJsIHJlbGF0aXZlIHRvIHRoZSBhYnNv
bHV0ZSB1cmwgZm9yIHRoZSB0ZXN0LgorCisgICAgICAgIEkgYmVsaWV2ZSB0aGlzIGlzIGEgYmV0
dGVyIGFwcHJvYWNoIHRoYW4gdGhlIG9uIHVzZWQgaW4gdGhlIFF0IGFuZCBDaHJvbWl1bSBEUlQn
cworICAgICAgICAod2hpY2ggcmVzb2x2ZXMgdGhlIHBhdGggcmVsYXRpdmUgdG8gdGhlIGJ1aWx0
IGxvY2F0aW9uIG9mIHRoZSBEUlQgZXhlY3V0YWJsZSkKKyAgICAgICAgYW5kIHdlIHNob3VsZCBt
b3ZlIHRoaXMgbmV3IGNvZGUgaW50byBhIHNoYXJlZCBsb2NhdGlvbiBpbiBhIGZvbGxvdy11cCBw
YXRjaC4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxl
ck1hYy5tbToKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpwYXRoVG9Mb2NhbFJlc291
cmNlKToKKworMjAxMS0wOS0xNSAgRXJpYyBTZWlkZWwgIDxlcmljQHdlYmtpdC5vcmc+CisKICAg
ICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBCYXJ0aC4KIAogICAgICAgICB3ZWJraXQtcGF0Y2ggc2hv
dWxkIGJlIGFibGUgdG8gZmluZCB1c2VycyBhbmQgYWRkIHRoZW0gdG8gYnVnemlsbGEgZ3JvdXBz
CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xs
ZXJNYWMubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJN
YWMubW0KaW5kZXggZjZlNTQzZmFlNTZlYTgyYTBjOGFiYjkxMzBhODIwYWVmZjY1YWUyNi4uNTVl
ZWJjYzg3YzM4M2ZhNzY1ZGUzNDQ4ZDQ3NjcyZDM3NTAxZjYzMSAxMDA2NDQKLS0tIGEvVG9vbHMv
RHVtcFJlbmRlclRyZWUvbWFjL0xheW91dFRlc3RDb250cm9sbGVyTWFjLm1tCisrKyBiL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbQpAQCAtMzU1LDkg
KzM1NSw1MSBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpub3RpZnlEb25lKCkKICAgICBt
X3dhaXRUb0R1bXAgPSBmYWxzZTsKIH0KIAotSlNTdHJpbmdSZWYgTGF5b3V0VGVzdENvbnRyb2xs
ZXI6OnBhdGhUb0xvY2FsUmVzb3VyY2UoSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTU3RyaW5nUmVm
IHVybCkKK3N0YXRpYyBpbmxpbmUgc3RkOjpzdHJpbmcgc3RyaW5nRnJvbUpTU3RyaW5nKEpTU3Ry
aW5nUmVmIGpzU3RyaW5nKQogewotICAgIHJldHVybiBKU1N0cmluZ1JldGFpbih1cmwpOyAvLyBE
byBub3RoaW5nIG9uIG1hYy4KKyAgICBzaXplX3QgbWF4QnVmZmVyU2l6ZSA9IEpTU3RyaW5nR2V0
TWF4aW11bVVURjhDU3RyaW5nU2l6ZShqc1N0cmluZyk7CisgICAgY2hhciogdXRmOEJ1ZmZlciA9
IG5ldyBjaGFyW21heEJ1ZmZlclNpemVdOworICAgIHNpemVfdCB1dGY4U3RyaW5nTGVuZ3RoID0g
SlNTdHJpbmdHZXRVVEY4Q1N0cmluZyhqc1N0cmluZywgdXRmOEJ1ZmZlciwgbWF4QnVmZmVyU2l6
ZSk7CisgICAgc3RkOjpzdHJpbmcgc3RkU3RyaW5nID0gc3RkOjpzdHJpbmcodXRmOEJ1ZmZlciwg
dXRmOFN0cmluZ0xlbmd0aCk7CisgICAgZGVsZXRlW10gdXRmOEJ1ZmZlcjsKKyAgICByZXR1cm4g
c3RkU3RyaW5nOworfQorCitzdGF0aWMgaW5saW5lIHN0ZDo6c3RyaW5nIHJlc291cmNlUm9vdEFi
c29sdXRlUGF0aChjb25zdCBzdGQ6OnN0cmluZyYgdGVzdFBhdGhPclVSTCkKK3sKKyAgICBjaGFy
KiBsb2NhbFJlc291cmNlUm9vdEVudiA9IGdldGVudigiTE9DQUxfUkVTT1VSQ0VfUk9PVCIpOwor
ICAgIGlmIChsb2NhbFJlc291cmNlUm9vdEVudikKKyAgICAgICAgcmV0dXJuIHN0ZDo6c3RyaW5n
KCk7CisKKyAgICAvLyBUaGlzIGZhbGxiYWNrIGFwcHJvYWNoIHdvcmtzIGZvciBub24taHR0cCB0
ZXN0cyBhbmQgaXMgdXNlZnVsCisgICAgLy8gaW4gdGhlIGNhc2Ugd2hlbiB3ZSdyZSBydW5uaW5n
IERSVCBkaXJlY3RseSBmcm9tIHRoZSBjb21tYW5kIGxpbmUuCisgICAgc2l6ZV90IHRlc3RMYXlv
dXRUZXN0c0luZGV4ID0gdGVzdFBhdGhPclVSTC5yZmluZCgiL0xheW91dFRlc3RzLyIpOworICAg
IGlmICh0ZXN0TGF5b3V0VGVzdHNJbmRleCA9PSBzdGQ6OnN0cmluZzo6bnBvcykgeworICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6c3RyaW5nKCk7Cisg
ICAgfQorICAgIHJldHVybiB0ZXN0UGF0aE9yVVJMLnN1YnN0cigwLCB0ZXN0TGF5b3V0VGVzdHNJ
bmRleCk7Cit9CisKK0pTU3RyaW5nUmVmIExheW91dFRlc3RDb250cm9sbGVyOjpwYXRoVG9Mb2Nh
bFJlc291cmNlKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU1N0cmluZ1JlZiBsb2NhbFJlc291cmNl
SlNTdHJpbmcpCit7CisgICAgLy8gVGhlIHBhc3NlZCBpbiBwYXRoIHdpbGwgYmUgYW4gYWJzb2x1
dGUgcGF0aCB0byB0aGUgcmVzb3VyY2Ugc3RhcnRpbmcKKyAgICAvLyB3aXRoICIvdG1wL0xheW91
dFRlc3RzIiBvciAiZmlsZTovLy90bXAvTGF5b3V0VGVzdHMiLgorICAgIC8vIFRoaXMgZnVuY3Rp
b24gcmUtd3JpdGVzIHRoZSBwYXRoIHVzaW5nIExPQ0FMX1JFU09VUkNFX1JPT1QuCisgICAgLy8g
RklYTUU6IFRoaXMgY29kZSBzaG91bGQgd29yayBvbiBhbGwgKm5peCBwbGF0Zm9ybXMgYW5kIGNh
biBiZSBtb3ZlZCBpbnRvIExheW91dFRlc3RDb250cm9sbGVyLmNwcC4KKyAgICBzdGQ6OnN0cmlu
ZyBhYnNvbHV0ZVBhdGhUb1Jlc291cmNlUm9vdCA9IHJlc291cmNlUm9vdEFic29sdXRlUGF0aCht
X3Rlc3RQYXRoT3JVUkwpOworICAgIGlmIChhYnNvbHV0ZVBhdGhUb1Jlc291cmNlUm9vdC5lbXB0
eSgpKQorICAgICAgICByZXR1cm4gbG9jYWxSZXNvdXJjZUpTU3RyaW5nOworICAgIHN0ZDo6c3Ry
aW5nIGxvY2FsUmVzb3VyY2VTdHJpbmcgPSBzdHJpbmdGcm9tSlNTdHJpbmcobG9jYWxSZXNvdXJj
ZUpTU3RyaW5nKTsKKworICAgIHNpemVfdCByZXNvdXJjZUxheW91dFRlc3RzSW5kZXggPSBsb2Nh
bFJlc291cmNlU3RyaW5nLnJmaW5kKCIvTGF5b3V0VGVzdHMvIik7CisgICAgaWYgKHJlc291cmNl
TGF5b3V0VGVzdHNJbmRleCA9PSBzdGQ6OnN0cmluZzo6bnBvcykgeworICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIGxvY2FsUmVzb3VyY2VKU1N0cmluZzsKKyAg
ICB9CisgICAgLy8gTm90ZTogVGhlIHJlc29sdmVkIHN0cmluZyBtYXkgbm90IGhhdmUgdGhlIHNh
bWUgcHJvY290b2wgYXMgdGhlIG9yaWdpbmFsLgorICAgIHN0ZDo6c3RyaW5nIGFic29sdXRlUGF0
aFRvTG9jYWxSZXNvdXJjZSA9IGFic29sdXRlUGF0aFRvUmVzb3VyY2VSb290ICsgbG9jYWxSZXNv
dXJjZVN0cmluZy5zdWJzdHIocmVzb3VyY2VMYXlvdXRUZXN0c0luZGV4KTsKKyAgICByZXR1cm4g
SlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoYWJzb2x1dGVQYXRoVG9Mb2NhbFJlc291cmNl
LmNfc3RyKCkpOwogfQogCiB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpxdWV1ZUxvYWQoSlNT
dHJpbmdSZWYgdXJsLCBKU1N0cmluZ1JlZiB0YXJnZXQpCmRpZmYgLS1naXQgYS9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dlYmtpdC5weSBiL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvd2Via2l0LnB5CmluZGV4IDA4NTA4NzJiNjFmZTZl
ZWVjMTBhYWI0ZWM5N2IzNzNmY2MzNGNiNTguLmJkMjFhY2RlMTJjYWNhZTJhYmY3YzAyYWQ5Yzcw
ZjRhNTViZTFmYWIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL3BvcnQvd2Via2l0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL3BvcnQvd2Via2l0LnB5CkBAIC00NDYsNiArNDQ2LDcgQEAgY2xhc3MgV2ViS2l0RHJpdmVy
KERyaXZlcik6CiAgICAgICAgIGVudmlyb25tZW50WydEWUxEX0ZSQU1FV09SS19QQVRIJ10gPSBz
ZWxmLl9wb3J0Ll9idWlsZF9wYXRoKCkKICAgICAgICAgIyBGSVhNRTogV2UncmUgYXNzdW1pbmcg
dGhhdCBXZWJLaXRUZXN0UnVubmVyIGNoZWNrcyB0aGlzIER1bXBSZW5kZXJUcmVlLW5hbWVkIGVu
dmlyb25tZW50IHZhcmlhYmxlLgogICAgICAgICBlbnZpcm9ubWVudFsnRFVNUFJFTkRFUlRSRUVf
VEVNUCddID0gc3RyKHNlbGYuX2RyaXZlcl90ZW1wZGlyKQorICAgICAgICBlbnZpcm9ubWVudFsn
TE9DQUxfUkVTT1VSQ0VfUk9PVCddID0gc2VsZi5fcG9ydC5sYXlvdXRfdGVzdHNfZGlyKCkKICAg
ICAgICAgc2VsZi5fc2VydmVyX3Byb2Nlc3MgPSBzZXJ2ZXJfcHJvY2Vzcy5TZXJ2ZXJQcm9jZXNz
KHNlbGYuX3BvcnQsIHNlcnZlcl9uYW1lLCBzZWxmLmNtZF9saW5lKCksIGVudmlyb25tZW50KQog
CiAgICAgZGVmIHBvbGwoc2VsZik6Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>107740</attachid>
            <date>2011-09-16 16:00:07 -0700</date>
            <delta_ts>2011-09-20 15:03:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-65781-20110916160006.patch</filename>
            <type>text/plain</type>
            <size>6949</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTUzMTQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvc2VjdXJpdHkvbG9jYWwtdXNlci1DU1MtZnJvbS1yZW1vdGUuaHRtbCBiL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvbG9jYWwtdXNlci1DU1MtZnJvbS1yZW1vdGUuaHRtbApp
bmRleCA2MGM1Njk5OGM1M2MyMDM1YTkzMzU1NmY5MWYxN2VjNGU2MmVmY2Q5Li5mY2FjZTZiNjJh
OTAzZDkwODFkYjE5OWIyYWExNmExZmExMmU3ZDkzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3NlY3VyaXR5L2xvY2FsLXVzZXItQ1NTLWZyb20tcmVtb3RlLmh0bWwKKysrIGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9sb2NhbC11c2VyLUNTUy1mcm9tLXJlbW90
ZS5odG1sCkBAIC04LDcgKzgsOCBAQAogICAgICAgICAvLyBUaGlzIHdvbid0IHdvcmsgb3V0c2lk
ZSBvZiBEUlQhCiAgICAgICAgIGlmICh3aW5kb3cubG9jYXRpb24uaGFzaCA9PSAnJykgewogICAg
ICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwotICAgICAgICAg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0VXNlclN0eWxlU2hlZXRMb2NhdGlvbigiZmlsZTov
Ly90bXAvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9yZXNvdXJjZXMvY3NzU3R5bGUu
Y3NzIik7CisgICAgICAgICAgICB2YXIgc3R5bGVzaGVldExvY2F0aW9uID0gbGF5b3V0VGVzdENv
bnRyb2xsZXIucGF0aFRvTG9jYWxSZXNvdXJjZSgiZmlsZTovLy90bXAvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9zZWN1cml0eS9yZXNvdXJjZXMvY3NzU3R5bGUuY3NzIik7CisgICAgICAgICAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5zZXRVc2VyU3R5bGVTaGVldExvY2F0aW9uKHN0eWxlc2hlZXRM
b2NhdGlvbik7CiAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRVc2VyU3R5bGVT
aGVldEVuYWJsZWQodHJ1ZSk7CiAgICAgICAgICAgICBsb2NhdGlvbiArPSAnPyNkb25lJzsKICAg
ICAgICAgfQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmlu
ZGV4IDE2YThkMDM3MmIwY2Y3ZjNjOTE1OTZiNGRmZTcxOGNkMzc2M2ZkODEuLjg4MGZjNzNiN2Q4
NDUzOThhMzZjYjdiMzI2ZmI5NWFmZjc4NDM0YTEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxv
ZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNCBAQAorMjAxMS0wOS0xNSAgRXJp
YyBTZWlkZWwgIDxlcmljQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW05SV1RdIFJFR1JFU1NJT046
IExvY2FsIGxvYWRlciB0ZXN0cyBhcmUgZmFpbGluZyBvbiBtYWNoaW5lcyB0aGF0IGxvc3QgL3Rt
cC9MYXlvdXRUZXN0cyBzeW1saW5rCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD02NTc4MQorCisgICAgICAgIFJldmlld2VkIGJ5IFJ5b3N1a2UgTml3YS4K
KworICAgICAgICBJbnN0ZWFkIG9mIG1ha2luZyBOUldUIGNyZWF0ZSB0aGUgc3ltbGluaywgSSBt
YWRlIER1bXBSZW5kZXJUcmVlIHNtYXJ0IGVub3VnaAorICAgICAgICB0byByZXNvbHZlIHRoZSBw
YXNzZWQgaW4gdXJsIHJlbGF0aXZlIHRvIHRoZSBhYnNvbHV0ZSB1cmwgZm9yIHRoZSB0ZXN0Lgor
ICAgICAgICBGb3IgaHR0cCB0ZXN0cywgc2luY2UgdGhlIHRlc3QgdXJsIGlzIGFuIGh0dHAgdXJs
LCB3ZSBjYW4ndCByZXNvbHZlIHJlbGF0aXZlCisgICAgICAgIHRvIHRoZSB0ZXN0IHBhdGgsIGFu
ZCB0aHVzIHVzZSBhIG5ldyBMT0NBTF9SRVNPVVJDRV9ST09UIGVudmlyb25tZW50IHZhcmlhYmxl
CisgICAgICAgIGZvciByZXNvbHZpbmcuCisKKyAgICAgICAgSSBiZWxpZXZlIHRoaXMgaXMgYSBi
ZXR0ZXIgYXBwcm9hY2ggdGhhbiB0aGUgb24gdXNlZCBpbiB0aGUgUXQgYW5kIENocm9taXVtIERS
VCdzCisgICAgICAgICh3aGljaCByZXNvbHZlcyB0aGUgcGF0aCByZWxhdGl2ZSB0byB0aGUgYnVp
bHQgbG9jYXRpb24gb2YgdGhlIERSVCBleGVjdXRhYmxlKQorICAgICAgICBhbmQgd2Ugc2hvdWxk
IG1vdmUgdGhpcyBuZXcgY29kZSBpbnRvIGEgc2hhcmVkIGxvY2F0aW9uIGluIGEgZm9sbG93LXVw
IHBhdGNoLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL0xheW91dFRlc3RDb250cm9s
bGVyTWFjLm1tOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnBhdGhUb0xvY2FsUmVz
b3VyY2UpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvd2Vi
a2l0LnB5OiBTZXQgTE9DQUxfUkVTT1VSQ0VfUk9PVCBmb3IgdXNlIGJ5IERSVC4KKwogMjAxMS0w
OS0xNiAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAgIFRl
bXBvcmFyaWx5IHJlbW92ZSB0aGUgV0tIaXRUZXN0UmVzdWx0UmVmIHBhcmFtZXRlciB0byBhdm9p
ZCBicmVha2luZyB0aGUgV0syIEFCSS9BUEkKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbQppbmRleCBmNmU1NDNmYWU1NmVhODJhMGM4
YWJiOTEzMGE4MjBhZWZmNjVhZTI2Li41YTFhYTFlYmFmZTc2ZDkyNzZjMzRlYTM1M2VmZjM5ZWNi
ZjMyOTIxIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENv
bnRyb2xsZXJNYWMubW0KKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0xheW91dFRlc3RD
b250cm9sbGVyTWFjLm1tCkBAIC0zNTUsOSArMzU1LDYyIEBAIHZvaWQgTGF5b3V0VGVzdENvbnRy
b2xsZXI6Om5vdGlmeURvbmUoKQogICAgIG1fd2FpdFRvRHVtcCA9IGZhbHNlOwogfQogCi1KU1N0
cmluZ1JlZiBMYXlvdXRUZXN0Q29udHJvbGxlcjo6cGF0aFRvTG9jYWxSZXNvdXJjZShKU0NvbnRl
eHRSZWYgY29udGV4dCwgSlNTdHJpbmdSZWYgdXJsKQorc3RhdGljIGlubGluZSBzdGQ6OnN0cmlu
ZyBzdHJpbmdGcm9tSlNTdHJpbmcoSlNTdHJpbmdSZWYganNTdHJpbmcpCiB7Ci0gICAgcmV0dXJu
IEpTU3RyaW5nUmV0YWluKHVybCk7IC8vIERvIG5vdGhpbmcgb24gbWFjLgorICAgIHNpemVfdCBt
YXhCdWZmZXJTaXplID0gSlNTdHJpbmdHZXRNYXhpbXVtVVRGOENTdHJpbmdTaXplKGpzU3RyaW5n
KTsKKyAgICBjaGFyKiB1dGY4QnVmZmVyID0gbmV3IGNoYXJbbWF4QnVmZmVyU2l6ZV07CisgICAg
c2l6ZV90IHV0ZjhTdHJpbmdMZW5ndGggPSBKU1N0cmluZ0dldFVURjhDU3RyaW5nKGpzU3RyaW5n
LCB1dGY4QnVmZmVyLCBtYXhCdWZmZXJTaXplKTsKKyAgICBzdGQ6OnN0cmluZyBzdGRTdHJpbmcg
PSBzdGQ6OnN0cmluZyh1dGY4QnVmZmVyLCB1dGY4U3RyaW5nTGVuZ3RoKTsKKyAgICBkZWxldGVb
XSB1dGY4QnVmZmVyOworICAgIHJldHVybiBzdGRTdHJpbmc7Cit9CisKK3N0YXRpYyBpbmxpbmUg
c3RkOjpzdHJpbmcgcmVzb3VyY2VSb290QWJzb2x1dGVQYXRoKGNvbnN0IHN0ZDo6c3RyaW5nJiB0
ZXN0UGF0aE9yVVJMLCBjb25zdCBzdGQ6OnN0cmluZyYgZXhwZWN0ZWRSb290TmFtZSkKK3sKKyAg
ICBjaGFyKiBsb2NhbFJlc291cmNlUm9vdEVudiA9IGdldGVudigiTE9DQUxfUkVTT1VSQ0VfUk9P
VCIpOworICAgIGlmIChsb2NhbFJlc291cmNlUm9vdEVudikKKyAgICAgICAgcmV0dXJuIHN0ZDo6
c3RyaW5nKGxvY2FsUmVzb3VyY2VSb290RW52KTsKKworICAgIC8vIFRoaXMgZmFsbGJhY2sgYXBw
cm9hY2ggd29ya3MgZm9yIG5vbi1odHRwIHRlc3RzIGFuZCBpcyB1c2VmdWwKKyAgICAvLyBpbiB0
aGUgY2FzZSB3aGVuIHdlJ3JlIHJ1bm5pbmcgRFJUIGRpcmVjdGx5IGZyb20gdGhlIGNvbW1hbmQg
bGluZS4KKyAgICBzdGQ6OnN0cmluZyBzZWFyY2hLZXkgPSAiLyIgKyBleHBlY3RlZFJvb3ROYW1l
ICsgIi8iOworICAgIHNpemVfdCBpbmRleE9mUm9vdE5hbWVTdGFydCA9IHRlc3RQYXRoT3JVUkwu
cmZpbmQoZXhwZWN0ZWRSb290TmFtZSk7CisgICAgaWYgKGluZGV4T2ZSb290TmFtZVN0YXJ0ID09
IHN0ZDo6c3RyaW5nOjpucG9zKSB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
ICAgICByZXR1cm4gc3RkOjpzdHJpbmcoKTsKKyAgICB9CisgICAgLy8gQ2FsbGVycyBleHBlY3Qg
dGhpcyByZXR1cm4gdmFsdWUgbm90IHRvIGVuZCBpbiAiLyIsIHNvIHNlYXJjaEtleS5sZW5ndGgo
KSAtIDEuCisgICAgc2l6ZV90IGluZGV4T2ZTZXBhcmF0b3JBZnRlclJvb3ROYW1lID0gaW5kZXhP
ZlJvb3ROYW1lU3RhcnQgKyBzZWFyY2hLZXkubGVuZ3RoKCkgLSAxOworICAgIHJldHVybiB0ZXN0
UGF0aE9yVVJMLnN1YnN0cigwLCBpbmRleE9mU2VwYXJhdG9yQWZ0ZXJSb290TmFtZSk7Cit9CisK
K0pTU3RyaW5nUmVmIExheW91dFRlc3RDb250cm9sbGVyOjpwYXRoVG9Mb2NhbFJlc291cmNlKEpT
Q29udGV4dFJlZiBjb250ZXh0LCBKU1N0cmluZ1JlZiBsb2NhbFJlc291cmNlSlNTdHJpbmcpCit7
CisgICAgLy8gVGhlIHBhc3NlZCBpbiBwYXRoIHdpbGwgYmUgYW4gYWJzb2x1dGUgcGF0aCB0byB0
aGUgcmVzb3VyY2Ugc3RhcnRpbmcKKyAgICAvLyB3aXRoICIvdG1wL0xheW91dFRlc3RzIiBvciAi
ZmlsZTovLy90bXAvTGF5b3V0VGVzdHMiLgorICAgIC8vIFRoaXMgZnVuY3Rpb24gcmUtd3JpdGVz
IHRoZSBwYXRoIHVzaW5nIExPQ0FMX1JFU09VUkNFX1JPT1QuCisgICAgLy8gRklYTUU6IFRoaXMg
Y29kZSBzaG91bGQgd29yayBvbiBhbGwgKm5peCBwbGF0Zm9ybXMgYW5kIGNhbiBiZSBtb3ZlZCBp
bnRvIExheW91dFRlc3RDb250cm9sbGVyLmNwcC4KKyAgICBzdGQ6OnN0cmluZyBleHBlY3RlZFJv
b3ROYW1lKCJMYXlvdXRUZXN0cyIpOworICAgIHN0ZDo6c3RyaW5nIGFic29sdXRlUGF0aFRvUmVz
b3VyY2VSb290ID0gcmVzb3VyY2VSb290QWJzb2x1dGVQYXRoKG1fdGVzdFBhdGhPclVSTCwgZXhw
ZWN0ZWRSb290TmFtZSk7CisgICAgaWYgKGFic29sdXRlUGF0aFRvUmVzb3VyY2VSb290LmVtcHR5
KCkpCisgICAgICAgIHJldHVybiBsb2NhbFJlc291cmNlSlNTdHJpbmc7CisgICAgc3RkOjpzdHJp
bmcgbG9jYWxSZXNvdXJjZVN0cmluZyA9IHN0cmluZ0Zyb21KU1N0cmluZyhsb2NhbFJlc291cmNl
SlNTdHJpbmcpOworCisgICAgc3RkOjpzdHJpbmcgc2VhcmNoS2V5ID0gIi8iICsgZXhwZWN0ZWRS
b290TmFtZSArICIvIjsKKyAgICBzaXplX3QgaW5kZXhPZlJvb3ROYW1lU3RhcnQgPSBsb2NhbFJl
c291cmNlU3RyaW5nLnJmaW5kKHNlYXJjaEtleSk7CisgICAgaWYgKGluZGV4T2ZSb290TmFtZVN0
YXJ0ID09IHN0ZDo6c3RyaW5nOjpucG9zKSB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgICAgICByZXR1cm4gbG9jYWxSZXNvdXJjZUpTU3RyaW5nOworICAgIH0KKworICAgIHNp
emVfdCBpbmRleE9mU2VwYXJhdG9yQWZ0ZXJSb290TmFtZSA9IGluZGV4T2ZSb290TmFtZVN0YXJ0
ICsgc2VhcmNoS2V5Lmxlbmd0aCgpIC0gMTsKKyAgICBzdGQ6OnN0cmluZyBhYnNvbHV0ZVBhdGhU
b0xvY2FsUmVzb3VyY2UgPSBhYnNvbHV0ZVBhdGhUb1Jlc291cmNlUm9vdCArIGxvY2FsUmVzb3Vy
Y2VTdHJpbmcuc3Vic3RyKGluZGV4T2ZTZXBhcmF0b3JBZnRlclJvb3ROYW1lKTsKKyAgICAvLyBO
b3RlOiBJdCdzIGltcG9ydGFudCB0aGF0IHdlIGtlZXAgdGhlIGZpbGU6Ly8gb3IgaHR0cCB0ZXN0
cyB3aWxsIGdldCBjb25mdXNlZC4KKyAgICBpZiAobG9jYWxSZXNvdXJjZVN0cmluZy5maW5kKCJm
aWxlOi8vIikgIT0gc3RkOjpzdHJpbmc6Om5wb3MpIHsKKyAgICAgICAgQVNTRVJUKGFic29sdXRl
UGF0aFRvTG9jYWxSZXNvdXJjZVswXSA9PSAnLycpOworICAgICAgICBhYnNvbHV0ZVBhdGhUb0xv
Y2FsUmVzb3VyY2UgPSBzdGQ6OnN0cmluZygiZmlsZTovLyIpICsgYWJzb2x1dGVQYXRoVG9Mb2Nh
bFJlc291cmNlOworICAgIH0KKyAgICByZXR1cm4gSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJp
bmcoYWJzb2x1dGVQYXRoVG9Mb2NhbFJlc291cmNlLmNfc3RyKCkpOwogfQogCiB2b2lkIExheW91
dFRlc3RDb250cm9sbGVyOjpxdWV1ZUxvYWQoSlNTdHJpbmdSZWYgdXJsLCBKU1N0cmluZ1JlZiB0
YXJnZXQpCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9w
b3J0L3dlYmtpdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQv
d2Via2l0LnB5CmluZGV4IDA4NTA4NzJiNjFmZTZlZWVjMTBhYWI0ZWM5N2IzNzNmY2MzNGNiNTgu
LmJkMjFhY2RlMTJjYWNhZTJhYmY3YzAyYWQ5YzcwZjRhNTViZTFmYWIgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvd2Via2l0LnB5CisrKyBiL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvd2Via2l0LnB5CkBAIC00NDYs
NiArNDQ2LDcgQEAgY2xhc3MgV2ViS2l0RHJpdmVyKERyaXZlcik6CiAgICAgICAgIGVudmlyb25t
ZW50WydEWUxEX0ZSQU1FV09SS19QQVRIJ10gPSBzZWxmLl9wb3J0Ll9idWlsZF9wYXRoKCkKICAg
ICAgICAgIyBGSVhNRTogV2UncmUgYXNzdW1pbmcgdGhhdCBXZWJLaXRUZXN0UnVubmVyIGNoZWNr
cyB0aGlzIER1bXBSZW5kZXJUcmVlLW5hbWVkIGVudmlyb25tZW50IHZhcmlhYmxlLgogICAgICAg
ICBlbnZpcm9ubWVudFsnRFVNUFJFTkRFUlRSRUVfVEVNUCddID0gc3RyKHNlbGYuX2RyaXZlcl90
ZW1wZGlyKQorICAgICAgICBlbnZpcm9ubWVudFsnTE9DQUxfUkVTT1VSQ0VfUk9PVCddID0gc2Vs
Zi5fcG9ydC5sYXlvdXRfdGVzdHNfZGlyKCkKICAgICAgICAgc2VsZi5fc2VydmVyX3Byb2Nlc3Mg
PSBzZXJ2ZXJfcHJvY2Vzcy5TZXJ2ZXJQcm9jZXNzKHNlbGYuX3BvcnQsIHNlcnZlcl9uYW1lLCBz
ZWxmLmNtZF9saW5lKCksIGVudmlyb25tZW50KQogCiAgICAgZGVmIHBvbGwoc2VsZik6Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>108058</attachid>
            <date>2011-09-20 15:03:31 -0700</date>
            <delta_ts>2011-09-20 17:47:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-65781-20110920150330.patch</filename>
            <type>text/plain</type>
            <size>7714</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTUzMTQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvc2VjdXJpdHkvbG9jYWwtdXNlci1DU1MtZnJvbS1yZW1vdGUuaHRtbCBiL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvbG9jYWwtdXNlci1DU1MtZnJvbS1yZW1vdGUuaHRtbApp
bmRleCA2MGM1Njk5OGM1M2MyMDM1YTkzMzU1NmY5MWYxN2VjNGU2MmVmY2Q5Li5mY2FjZTZiNjJh
OTAzZDkwODFkYjE5OWIyYWExNmExZmExMmU3ZDkzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3NlY3VyaXR5L2xvY2FsLXVzZXItQ1NTLWZyb20tcmVtb3RlLmh0bWwKKysrIGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9sb2NhbC11c2VyLUNTUy1mcm9tLXJlbW90
ZS5odG1sCkBAIC04LDcgKzgsOCBAQAogICAgICAgICAvLyBUaGlzIHdvbid0IHdvcmsgb3V0c2lk
ZSBvZiBEUlQhCiAgICAgICAgIGlmICh3aW5kb3cubG9jYXRpb24uaGFzaCA9PSAnJykgewogICAg
ICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwotICAgICAgICAg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0VXNlclN0eWxlU2hlZXRMb2NhdGlvbigiZmlsZTov
Ly90bXAvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9yZXNvdXJjZXMvY3NzU3R5bGUu
Y3NzIik7CisgICAgICAgICAgICB2YXIgc3R5bGVzaGVldExvY2F0aW9uID0gbGF5b3V0VGVzdENv
bnRyb2xsZXIucGF0aFRvTG9jYWxSZXNvdXJjZSgiZmlsZTovLy90bXAvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9zZWN1cml0eS9yZXNvdXJjZXMvY3NzU3R5bGUuY3NzIik7CisgICAgICAgICAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5zZXRVc2VyU3R5bGVTaGVldExvY2F0aW9uKHN0eWxlc2hlZXRM
b2NhdGlvbik7CiAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRVc2VyU3R5bGVT
aGVldEVuYWJsZWQodHJ1ZSk7CiAgICAgICAgICAgICBsb2NhdGlvbiArPSAnPyNkb25lJzsKICAg
ICAgICAgfQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmlu
ZGV4IDE2YThkMDM3MmIwY2Y3ZjNjOTE1OTZiNGRmZTcxOGNkMzc2M2ZkODEuLjRlMDM1ZDM5YmY3
Y2VlNDI0MTEyNTk3YWRmODA1MGFjMGU0ZjNjOTYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxv
ZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOSBAQAorMjAxMS0wOS0xNSAgRXJp
YyBTZWlkZWwgIDxlcmljQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW05SV1RdIFJFR1JFU1NJT046
IExvY2FsIGxvYWRlciB0ZXN0cyBhcmUgZmFpbGluZyBvbiBtYWNoaW5lcyB0aGF0IGxvc3QgL3Rt
cC9MYXlvdXRUZXN0cyBzeW1saW5rCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD02NTc4MQorCisgICAgICAgIFJldmlld2VkIGJ5IFJ5b3N1a2UgTml3YS4K
KworICAgICAgICBJbnN0ZWFkIG9mIG1ha2luZyBOUldUIGNyZWF0ZSB0aGUgc3ltbGluaywgSSBt
YWRlIER1bXBSZW5kZXJUcmVlIHNtYXJ0IGVub3VnaAorICAgICAgICB0byByZXNvbHZlIHRoZSBw
YXNzZWQgaW4gdXJsIHJlbGF0aXZlIHRvIHRoZSBhYnNvbHV0ZSB1cmwgZm9yIHRoZSB0ZXN0Lgor
ICAgICAgICBGb3IgaHR0cCB0ZXN0cywgc2luY2UgdGhlIHRlc3QgdXJsIGlzIGFuIGh0dHAgdXJs
LCB3ZSBjYW4ndCByZXNvbHZlIHJlbGF0aXZlCisgICAgICAgIHRvIHRoZSB0ZXN0IHBhdGgsIGFu
ZCB0aHVzIHVzZSBhIG5ldyBMT0NBTF9SRVNPVVJDRV9ST09UIGVudmlyb25tZW50IHZhcmlhYmxl
CisgICAgICAgIGZvciByZXNvbHZpbmcuCisKKyAgICAgICAgSSBiZWxpZXZlIHRoaXMgaXMgYSBi
ZXR0ZXIgYXBwcm9hY2ggdGhhbiB0aGUgb24gdXNlZCBpbiB0aGUgUXQgYW5kIENocm9taXVtIERS
VCdzCisgICAgICAgICh3aGljaCByZXNvbHZlcyB0aGUgcGF0aCByZWxhdGl2ZSB0byB0aGUgYnVp
bHQgbG9jYXRpb24gb2YgdGhlIERSVCBleGVjdXRhYmxlKQorICAgICAgICBhbmQgd2Ugc2hvdWxk
IG1vdmUgdGhpcyBuZXcgY29kZSBpbnRvIGEgc2hhcmVkIGxvY2F0aW9uIGluIGEgZm9sbG93LXVw
IHBhdGNoLgorCisgICAgICAgIEl0IHR1cm5zIG91dCB0aGF0IHRoZXJlIHdhcyBhIHNlY29uZCB1
c2UgZm9yIHBhdGhUb0xvY2FsUmVzb3VyY2UsIHVzZWQgYnkgb25lCisgICAgICAgIHRlc3QgKGh0
dHAvdGVzdHMvcGx1Z2lucy9wb3N0LXVybC1maWxlLmh0bWwpIHVzZWQgZm9yIGdldHRpbmcgYSBw
YXRoIHRvIC90bXAuCisgICAgICAgIFRvIHN1cHBvcnQgdGhpcyB0ZXN0IEkgbWFkZSB0aGUgbmV3
IHBhdGhUb0xvY2FsUmVzb3VyY2Ugc21hcnQgZW5vdWdoIHRvIG1hcAorICAgICAgICAvdG1wIHRv
IERVTVBSRU5ERVJUUkVFX1RFTVAgKHdoaWNoIGlzIGFscmVhZHkgZGVmaW5lZCBmb3IgYWxsIHBv
cnRzKS4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxl
ck1hYy5tbToKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpwYXRoVG9Mb2NhbFJlc291
cmNlKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dlYmtp
dC5weTogU2V0IExPQ0FMX1JFU09VUkNFX1JPT1QgZm9yIHVzZSBieSBEUlQuCisKIDIwMTEtMDkt
MTYgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KIAogICAgICAgICBUZW1w
b3JhcmlseSByZW1vdmUgdGhlIFdLSGl0VGVzdFJlc3VsdFJlZiBwYXJhbWV0ZXIgdG8gYXZvaWQg
YnJlYWtpbmcgdGhlIFdLMiBBQkkvQVBJCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9t
YWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW0KaW5kZXggZjZlNTQzZmFlNTZlYTgyYTBjOGFi
YjkxMzBhODIwYWVmZjY1YWUyNi4uMzEwZGFmYTQ1Mzk3ZmZmOTBjOTE4NWQ3MmVjZjA2YmIyZGQ0
NTFhOCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0xheW91dFRlc3RDb250
cm9sbGVyTWFjLm1tCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29u
dHJvbGxlck1hYy5tbQpAQCAtMzU1LDkgKzM1NSw2OCBAQCB2b2lkIExheW91dFRlc3RDb250cm9s
bGVyOjpub3RpZnlEb25lKCkKICAgICBtX3dhaXRUb0R1bXAgPSBmYWxzZTsKIH0KIAotSlNTdHJp
bmdSZWYgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnBhdGhUb0xvY2FsUmVzb3VyY2UoSlNDb250ZXh0
UmVmIGNvbnRleHQsIEpTU3RyaW5nUmVmIHVybCkKK3N0YXRpYyBpbmxpbmUgc3RkOjpzdHJpbmcg
c3RyaW5nRnJvbUpTU3RyaW5nKEpTU3RyaW5nUmVmIGpzU3RyaW5nKQogewotICAgIHJldHVybiBK
U1N0cmluZ1JldGFpbih1cmwpOyAvLyBEbyBub3RoaW5nIG9uIG1hYy4KKyAgICBzaXplX3QgbWF4
QnVmZmVyU2l6ZSA9IEpTU3RyaW5nR2V0TWF4aW11bVVURjhDU3RyaW5nU2l6ZShqc1N0cmluZyk7
CisgICAgY2hhciogdXRmOEJ1ZmZlciA9IG5ldyBjaGFyW21heEJ1ZmZlclNpemVdOworICAgIHNp
emVfdCBieXRlc1dyaXR0ZW5Ub1VURjhCdWZmZXIgPSBKU1N0cmluZ0dldFVURjhDU3RyaW5nKGpz
U3RyaW5nLCB1dGY4QnVmZmVyLCBtYXhCdWZmZXJTaXplKTsKKyAgICBzdGQ6OnN0cmluZyBzdGRT
dHJpbmcodXRmOEJ1ZmZlciwgYnl0ZXNXcml0dGVuVG9VVEY4QnVmZmVyIC0gMSk7IC8vIGJ5dGVz
V3JpdHRlblRvVVRGOEJ1ZmZlciBpbmNsdWRlcyBhIHRyYWlsaW5nIFwwIHdoaWNoIHN0ZDo6c3Ry
aW5nIGRvZXNuJ3QgbmVlZC4KKyAgICBkZWxldGVbXSB1dGY4QnVmZmVyOworICAgIHJldHVybiBz
dGRTdHJpbmc7Cit9CisKK3N0YXRpYyBpbmxpbmUgc2l6ZV90IGluZGV4T2ZTZXBhcmF0b3JBZnRl
ckRpcmVjdG9yeU5hbWUoY29uc3Qgc3RkOjpzdHJpbmcmIGRpcmVjdG9yeU5hbWUsIGNvbnN0IHN0
ZDo6c3RyaW5nJiBmdWxsUGF0aCkKK3sKKyAgICBzdGQ6OnN0cmluZyBzZWFyY2hLZXkgPSAiLyIg
KyBkaXJlY3RvcnlOYW1lICsgIi8iOworICAgIHNpemVfdCBpbmRleE9mU2VhcmNoS2V5U3RhcnQg
PSBmdWxsUGF0aC5yZmluZChzZWFyY2hLZXkpOworICAgIGlmIChpbmRleE9mU2VhcmNoS2V5U3Rh
cnQgPT0gc3RkOjpzdHJpbmc6Om5wb3MpIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICAvLyBDYWxsZXJzIGV4cGVjdCB0aGUgcmV0
dXJuIHZhbHVlIG5vdCB0byBlbmQgaW4gIi8iLCBzbyBzZWFyY2hLZXkubGVuZ3RoKCkgLSAxLgor
ICAgIHJldHVybiBpbmRleE9mU2VhcmNoS2V5U3RhcnQgKyBzZWFyY2hLZXkubGVuZ3RoKCkgLSAx
OworfQorCitzdGF0aWMgaW5saW5lIHN0ZDo6c3RyaW5nIHJlc291cmNlUm9vdEFic29sdXRlUGF0
aChjb25zdCBzdGQ6OnN0cmluZyYgdGVzdFBhdGhPclVSTCwgY29uc3Qgc3RkOjpzdHJpbmcmIGV4
cGVjdGVkUm9vdE5hbWUpCit7CisgICAgY2hhciogbG9jYWxSZXNvdXJjZVJvb3RFbnYgPSBnZXRl
bnYoIkxPQ0FMX1JFU09VUkNFX1JPT1QiKTsKKyAgICBpZiAobG9jYWxSZXNvdXJjZVJvb3RFbnYp
CisgICAgICAgIHJldHVybiBzdGQ6OnN0cmluZyhsb2NhbFJlc291cmNlUm9vdEVudik7CisKKyAg
ICAvLyBUaGlzIGZhbGxiYWNrIGFwcHJvYWNoIHdvcmtzIGZvciBub24taHR0cCB0ZXN0cyBhbmQg
aXMgdXNlZnVsCisgICAgLy8gaW4gdGhlIGNhc2Ugd2hlbiB3ZSdyZSBydW5uaW5nIERSVCBkaXJl
Y3RseSBmcm9tIHRoZSBjb21tYW5kIGxpbmUuCisgICAgcmV0dXJuIHRlc3RQYXRoT3JVUkwuc3Vi
c3RyKDAsIGluZGV4T2ZTZXBhcmF0b3JBZnRlckRpcmVjdG9yeU5hbWUoZXhwZWN0ZWRSb290TmFt
ZSwgdGVzdFBhdGhPclVSTCkpOworfQorCitKU1N0cmluZ1JlZiBMYXlvdXRUZXN0Q29udHJvbGxl
cjo6cGF0aFRvTG9jYWxSZXNvdXJjZShKU0NvbnRleHRSZWYgY29udGV4dCwgSlNTdHJpbmdSZWYg
bG9jYWxSZXNvdXJjZUpTU3RyaW5nKQoreworICAgIC8vIFRoZSBwYXNzZWQgaW4gcGF0aCB3aWxs
IGJlIGFuIGFic29sdXRlIHBhdGggdG8gdGhlIHJlc291cmNlIHN0YXJ0aW5nCisgICAgLy8gd2l0
aCAiL3RtcCIgb3IgIi90bXAvTGF5b3V0VGVzdHMiLCBvcHRpb25hbGx5IHN0YXJ0aW5nIHdpdGgg
dGhlIGV4cGxpY2l0IGZpbGU6Ly8gcHJvdG9jb2wuCisgICAgLy8gL3RtcCBtYXBzIHRvIERVTVBS
RU5ERVJUUkVFX1RFTVAsIGFuZCAvdG1wL0xheW91dFRlc3RzIG1hcHMgdG8gTE9DQUxfUkVTT1VS
Q0VfUk9PVC4KKyAgICAvLyBGSVhNRTogVGhpcyBjb2RlIHNob3VsZCB3b3JrIG9uIGFsbCAqbml4
IHBsYXRmb3JtcyBhbmQgY2FuIGJlIG1vdmVkIGludG8gTGF5b3V0VGVzdENvbnRyb2xsZXIuY3Bw
LgorICAgIHN0ZDo6c3RyaW5nIGV4cGVjdGVkUm9vdE5hbWU7CisgICAgc3RkOjpzdHJpbmcgYWJz
b2x1dGVQYXRoVG9SZXNvdXJjZVJvb3Q7CisgICAgc3RkOjpzdHJpbmcgbG9jYWxSZXNvdXJjZVN0
cmluZyA9IHN0cmluZ0Zyb21KU1N0cmluZyhsb2NhbFJlc291cmNlSlNTdHJpbmcpOworCisgICAg
aWYgKGxvY2FsUmVzb3VyY2VTdHJpbmcuZmluZCgiTGF5b3V0VGVzdHMiKSAhPSBzdGQ6OnN0cmlu
Zzo6bnBvcykgeworICAgICAgICBleHBlY3RlZFJvb3ROYW1lID0gIkxheW91dFRlc3RzIjsKKyAg
ICAgICAgYWJzb2x1dGVQYXRoVG9SZXNvdXJjZVJvb3QgPSByZXNvdXJjZVJvb3RBYnNvbHV0ZVBh
dGgobV90ZXN0UGF0aE9yVVJMLCBleHBlY3RlZFJvb3ROYW1lKTsKKyAgICB9IGVsc2UgaWYgKGxv
Y2FsUmVzb3VyY2VTdHJpbmcuZmluZCgidG1wIikgIT0gc3RkOjpzdHJpbmc6Om5wb3MpIHsKKyAg
ICAgICAgZXhwZWN0ZWRSb290TmFtZSA9ICJ0bXAiOworICAgICAgICBhYnNvbHV0ZVBhdGhUb1Jl
c291cmNlUm9vdCA9IGdldGVudigiRFVNUFJFTkRFUlRSRUVfVEVNUCIpOworICAgIH0gZWxzZSB7
CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyAvLyBwYXRoVG9Mb2NhbFJlc291cmNlIHdh
cyBwYXNzZWQgYSBwYXRoIGl0IGRvZXNuJ3Qga25vdyBob3cgdG8gbWFwLgorICAgIH0KKyAgICBB
U1NFUlQoIWFic29sdXRlUGF0aFRvUmVzb3VyY2VSb290LmVtcHR5KCkpOworICAgIHNpemVfdCBp
bmRleE9mU2VwYXJhdG9yQWZ0ZXJSb290TmFtZSA9IGluZGV4T2ZTZXBhcmF0b3JBZnRlckRpcmVj
dG9yeU5hbWUoZXhwZWN0ZWRSb290TmFtZSwgbG9jYWxSZXNvdXJjZVN0cmluZyk7CisgICAgc3Rk
OjpzdHJpbmcgYWJzb2x1dGVQYXRoVG9Mb2NhbFJlc291cmNlID0gYWJzb2x1dGVQYXRoVG9SZXNv
dXJjZVJvb3QgKyBsb2NhbFJlc291cmNlU3RyaW5nLnN1YnN0cihpbmRleE9mU2VwYXJhdG9yQWZ0
ZXJSb290TmFtZSk7CisKKyAgICAvLyBOb3RlOiBJdCdzIGltcG9ydGFudCB0aGF0IHdlIGtlZXAg
dGhlIGZpbGU6Ly8gb3IgaHR0cCB0ZXN0cyB3aWxsIGdldCBjb25mdXNlZC4KKyAgICBpZiAobG9j
YWxSZXNvdXJjZVN0cmluZy5maW5kKCJmaWxlOi8vIikgIT0gc3RkOjpzdHJpbmc6Om5wb3MpIHsK
KyAgICAgICAgQVNTRVJUKGFic29sdXRlUGF0aFRvTG9jYWxSZXNvdXJjZVswXSA9PSAnLycpOwor
ICAgICAgICBhYnNvbHV0ZVBhdGhUb0xvY2FsUmVzb3VyY2UgPSBzdGQ6OnN0cmluZygiZmlsZTov
LyIpICsgYWJzb2x1dGVQYXRoVG9Mb2NhbFJlc291cmNlOworICAgIH0KKyAgICByZXR1cm4gSlNT
dHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoYWJzb2x1dGVQYXRoVG9Mb2NhbFJlc291cmNlLmNf
c3RyKCkpOwogfQogCiB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpxdWV1ZUxvYWQoSlNTdHJp
bmdSZWYgdXJsLCBKU1N0cmluZ1JlZiB0YXJnZXQpCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dlYmtpdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvd2Via2l0LnB5CmluZGV4IDA4NTA4NzJiNjFmZTZlZWVj
MTBhYWI0ZWM5N2IzNzNmY2MzNGNiNTguLmJkMjFhY2RlMTJjYWNhZTJhYmY3YzAyYWQ5YzcwZjRh
NTViZTFmYWIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L3BvcnQvd2Via2l0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L3BvcnQvd2Via2l0LnB5CkBAIC00NDYsNiArNDQ2LDcgQEAgY2xhc3MgV2ViS2l0RHJpdmVyKERy
aXZlcik6CiAgICAgICAgIGVudmlyb25tZW50WydEWUxEX0ZSQU1FV09SS19QQVRIJ10gPSBzZWxm
Ll9wb3J0Ll9idWlsZF9wYXRoKCkKICAgICAgICAgIyBGSVhNRTogV2UncmUgYXNzdW1pbmcgdGhh
dCBXZWJLaXRUZXN0UnVubmVyIGNoZWNrcyB0aGlzIER1bXBSZW5kZXJUcmVlLW5hbWVkIGVudmly
b25tZW50IHZhcmlhYmxlLgogICAgICAgICBlbnZpcm9ubWVudFsnRFVNUFJFTkRFUlRSRUVfVEVN
UCddID0gc3RyKHNlbGYuX2RyaXZlcl90ZW1wZGlyKQorICAgICAgICBlbnZpcm9ubWVudFsnTE9D
QUxfUkVTT1VSQ0VfUk9PVCddID0gc2VsZi5fcG9ydC5sYXlvdXRfdGVzdHNfZGlyKCkKICAgICAg
ICAgc2VsZi5fc2VydmVyX3Byb2Nlc3MgPSBzZXJ2ZXJfcHJvY2Vzcy5TZXJ2ZXJQcm9jZXNzKHNl
bGYuX3BvcnQsIHNlcnZlcl9uYW1lLCBzZWxmLmNtZF9saW5lKCksIGVudmlyb25tZW50KQogCiAg
ICAgZGVmIHBvbGwoc2VsZik6Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>