<?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>136423</bug_id>
          
          <creation_ts>2014-09-01 02:09:53 -0700</creation_ts>
          <short_desc>[SOUP] Race condition when downloading a file due to the intermediate temporary file</short_desc>
          <delta_ts>2014-09-03 23:43:53 -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>WebKit2</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>136372</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Carlos Garcia Campos">cgarcia</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>mcatanzaro</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1032460</commentid>
    <comment_count>0</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2014-09-01 02:09:53 -0700</bug_when>
    <thetext>When we start a new download, we don&apos;t create the actual destination file, but a temporary file to be atomically copied to the final destination once the download is completed. The user or any other application might create a file with the same path and name than the destination, that we might overwrite when the download finishes. We need to make sure we create the final destination as soon as it&apos;s known, so that other applications (or instances) that checks if the destination exists will see the file. So, I think we should create first the actual destination, failing if it already exists and allowOverwrite is false. If it doesn&apos;t fail then we create the temporary and continue the download. Once it finishes, we move the temporary to the final destination using G_FILE_COPY_OVERWRITE unconditionally, since at this point we should have already failed if allowOverwrite was false. In case of failure or cancellation we should probably delete both files, not only the intermediate one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1032510</commentid>
    <comment_count>1</comment_count>
      <attachid>237457</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2014-09-01 11:49:38 -0700</bug_when>
    <thetext>Created attachment 237457
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1032518</commentid>
    <comment_count>2</comment_count>
      <attachid>237459</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2014-09-01 13:11:47 -0700</bug_when>
    <thetext>Created attachment 237459
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1032579</commentid>
    <comment_count>3</comment_count>
      <attachid>237459</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2014-09-02 01:24:46 -0700</bug_when>
    <thetext>Comment on attachment 237459
Patch

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

Looks good to me in general, I have just a few comments

&gt; Source/WebKit2/Shared/Downloads/soup/DownloadSoup.cpp:67
&gt; +        if (m_createdDestination) {
&gt; +            ASSERT(m_destinationFile);
&gt; +            g_file_delete(m_destinationFile.get(), nullptr, nullptr);
&gt; +        }

I think we can use m_destinationFile to know if the destination was successfully created.

&gt; Source/WebKit2/Shared/Downloads/soup/DownloadSoup.cpp:115
&gt; +            outputStream = adoptGRef(g_file_replace(m_destinationFile.get(), nullptr, false, G_FILE_CREATE_NONE, nullptr, &amp;error.outPtr()));

g_file_replace expects a gboolean, so better use FALSE, instead of false, even though it doesn&apos;t really matter.

&gt; Source/WebKit2/Shared/Downloads/soup/DownloadSoup.cpp:121
&gt; +        if (!outputStream) {
&gt; +            downloadFailed(platformDownloadDestinationError(response, error-&gt;message));
&gt; +            return;
&gt; +        }

And here you could m_destinationFile.reset() and you don&apos;t need the m_createdDestination bool member</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1032980</commentid>
    <comment_count>4</comment_count>
      <attachid>237572</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2014-09-03 12:54:21 -0700</bug_when>
    <thetext>Created attachment 237572
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1033139</commentid>
    <comment_count>5</comment_count>
      <attachid>237572</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2014-09-03 23:07:07 -0700</bug_when>
    <thetext>Comment on attachment 237572
Patch

Perfect, thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1033150</commentid>
    <comment_count>6</comment_count>
      <attachid>237572</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-09-03 23:43:50 -0700</bug_when>
    <thetext>Comment on attachment 237572
Patch

Clearing flags on attachment: 237572

Committed r173252: &lt;http://trac.webkit.org/changeset/173252&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1033151</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-09-03 23:43:53 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>237457</attachid>
            <date>2014-09-01 11:49:38 -0700</date>
            <delta_ts>2014-09-01 12:27:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-136423-20140901134932.patch</filename>
            <type>text/plain</type>
            <size>7008</size>
            <attacher name="Michael Catanzaro">mcatanzaro</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTczMTU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNWQxOTgyZjEzNDljZmNj
YTdmNTZmOTAwY2UzODMyZmU2M2NhN2VmMS4uMDhjYzZlOWFmMGJiNGI3NWVjN2RjNWYzNWNlMTNj
M2ZhZmY5N2RmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDE0LTA5LTAxICBNaWNo
YWVsIENhdGFuemFybyAgPG1jYXRhbnphcm9AaWdhbGlhLmNvbT4KKworICAgICAgICBbU09VUF0g
UmFjZSBjb25kaXRpb24gd2hlbiBkb3dubG9hZGluZyBhIGZpbGUgZHVlIHRvIHRoZSBpbnRlcm1l
ZGlhdGUgdGVtcG9yYXJ5IGZpbGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEzNjQyMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogU2hhcmVkL0Rvd25sb2Fkcy9zb3VwL0Rvd25sb2FkU291cC5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OkRvd25sb2FkQ2xpZW50OjpEb3dubG9hZENsaWVudCk6IFJlcGxhY2Ug
bV9kZXN0aW5hdGlvblVSSSB3aXRoCisgICAgICAgIG1fZGVzdGluYXRpb25GaWxlIGFuZCBhZGQg
bV9jcmVhdGVkRGVzdGluYXRpb24uCisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkQ2xpZW50Ojpk
ZWxldGVGaWxlc0lmTmVlZGVkKTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkQ2xp
ZW50Ojpkb3dubG9hZEZhaWxlZCk6IENhbGwgZGVsZXRlRmlsZXNJZk5lZWRlZC4KKyAgICAgICAg
KFdlYktpdDo6RG93bmxvYWRDbGllbnQ6OmRpZFJlY2VpdmVSZXNwb25zZSk6IEF0dGVtcHQgdG8g
Y3JlYXRlIHRoZQorICAgICAgICBkZXN0aW5hdGlvbiBmaWxlIGJlZm9yZSB0aGUgaW50ZXJtZWRp
YXRlIGZpbGUuIEZhaWwgaGVyZSBpZiB0aGUgZmlsZQorICAgICAgICBleGlzdHMgYW5kIG92ZXJ3
cml0ZSBpcyBub3QgYWxsb3dlZCwgc28gd2UgZG9uJ3QgZXJyb25lb3VzbHkgZmlyZSB0aGUKKyAg
ICAgICAgZGlkQ3JlYXRlRGVzdGluYXRpb24gZXZlbnQgb3Igd2FzdGUgdGltZSBkb3dubG9hZGlu
ZyB0aGUgZmlsZSB3aGVuIHdlCisgICAgICAgIGtub3cgdGhlIGRvd25sb2FkIHdpbGwgZmFpbC4K
KyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRDbGllbnQ6OmRpZEZpbmlzaExvYWRpbmcpOiBVbmNv
bmRpdGlvbmFsbHkgb3ZlcndyaXRlCisgICAgICAgIHRoZSBlbXB0eSBkZXN0aW5hdGlvbiBmaWxl
LgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZENsaWVudDo6Y2FuY2VsKTogQ2FsbCBkZWxldGVG
aWxlc0lmTmVlZGVkLgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZENsaWVudDo6ZGVsZXRlSW50
ZXJtZWRpYXRlRmlsZUluTmVlZGVkKTogRGVsZXRlZC4KKwogMjAxNC0wOS0wMSAgR3l1eW91bmcg
S2ltICA8Z3l1eW91bmcua2ltQHNhbXN1bmcuY29tPgogCiAgICAgICAgIFtDTUFLRV0gQnVpbGQg
d2FybmluZyBieSBJTlRFUkZBQ0VfTElOS19MSUJSQVJJRVMKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9Eb3dubG9hZHMvc291cC9Eb3dubG9hZFNvdXAuY3BwIGIvU291cmNlL1dl
YktpdDIvU2hhcmVkL0Rvd25sb2Fkcy9zb3VwL0Rvd25sb2FkU291cC5jcHAKaW5kZXggODM2Mzg2
NWMzOWExZDlhNmEyODY4YjAzMGE5NGI5ODczMTRjYjIwMS4uNmU5Njg0NmMyZDhiOTVlNjM1MmJl
N2JlZDUzMmViNjA4ZTU0YzIyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0Rv
d25sb2Fkcy9zb3VwL0Rvd25sb2FkU291cC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVk
L0Rvd25sb2Fkcy9zb3VwL0Rvd25sb2FkU291cC5jcHAKQEAgLTUxLDYgKzUxLDcgQEAgcHVibGlj
OgogICAgIERvd25sb2FkQ2xpZW50KERvd25sb2FkKiBkb3dubG9hZCkKICAgICAgICAgOiBtX2Rv
d25sb2FkKGRvd25sb2FkKQogICAgICAgICAsIG1fYWxsb3dPdmVyd3JpdGUoZmFsc2UpCisgICAg
ICAgICwgbV9jcmVhdGVkRGVzdGluYXRpb24oZmFsc2UpCiAgICAgewogICAgIH0KIApAQCAtNTgs
MTYgKzU5LDIyIEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQogCi0gICAgdm9pZCBkZWxldGVJbnRl
cm1lZGlhdGVGaWxlSW5OZWVkZWQoKQorICAgIHZvaWQgZGVsZXRlRmlsZXNJZk5lZWRlZCgpCiAg
ICAgewotICAgICAgICBpZiAoIW1faW50ZXJtZWRpYXRlRmlsZSkKLSAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgZ19maWxlX2RlbGV0ZShtX2ludGVybWVkaWF0ZUZpbGUuZ2V0KCksIG51bGxw
dHIsIG51bGxwdHIpOworICAgICAgICBpZiAobV9jcmVhdGVkRGVzdGluYXRpb24pIHsKKyAgICAg
ICAgICAgIEFTU0VSVChtX2Rlc3RpbmF0aW9uRmlsZSk7CisgICAgICAgICAgICBnX2ZpbGVfZGVs
ZXRlKG1fZGVzdGluYXRpb25GaWxlLmdldCgpLCBudWxscHRyLCBudWxscHRyKTsKKyAgICAgICAg
fQorCisgICAgICAgIGlmIChtX2ludGVybWVkaWF0ZUZpbGUpIHsKKyAgICAgICAgICAgIEFTU0VS
VChtX2NyZWF0ZWREZXN0aW5hdGlvbik7CisgICAgICAgICAgICBnX2ZpbGVfZGVsZXRlKG1faW50
ZXJtZWRpYXRlRmlsZS5nZXQoKSwgbnVsbHB0ciwgbnVsbHB0cik7CisgICAgICAgIH0KICAgICB9
CiAKICAgICB2b2lkIGRvd25sb2FkRmFpbGVkKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQog
ICAgIHsKLSAgICAgICAgZGVsZXRlSW50ZXJtZWRpYXRlRmlsZUluTmVlZGVkKCk7CisgICAgICAg
IGRlbGV0ZUZpbGVzSWZOZWVkZWQoKTsKICAgICAgICAgbV9kb3dubG9hZC0+ZGlkRmFpbChlcnJv
ciwgSVBDOjpEYXRhUmVmZXJlbmNlKCkpOwogICAgIH0KIApAQCAtODksOCArOTYsOCBAQCBwdWJs
aWM6CiAgICAgICAgICAgICBzdWdnZXN0ZWRGaWxlbmFtZSA9IGRlY29kZVVSTEVzY2FwZVNlcXVl
bmNlcyh1cmwubGFzdFBhdGhDb21wb25lbnQoKSk7CiAgICAgICAgIH0KIAotICAgICAgICBtX2Rl
c3RpbmF0aW9uVVJJID0gbV9kb3dubG9hZC0+ZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVk
RmlsZW5hbWUoc3VnZ2VzdGVkRmlsZW5hbWUsIG1fYWxsb3dPdmVyd3JpdGUpOwotICAgICAgICBp
ZiAobV9kZXN0aW5hdGlvblVSSS5pc0VtcHR5KCkpIHsKKyAgICAgICAgU3RyaW5nIGRlc3RpbmF0
aW9uVVJJID0gbV9kb3dubG9hZC0+ZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5h
bWUoc3VnZ2VzdGVkRmlsZW5hbWUsIG1fYWxsb3dPdmVyd3JpdGUpOworICAgICAgICBpZiAoZGVz
dGluYXRpb25VUkkuaXNFbXB0eSgpKSB7CiAjaWYgUExBVEZPUk0oR1RLKQogICAgICAgICAgICAg
R1VuaXF1ZVB0cjxjaGFyPiBidWZmZXIoZ19zdHJkdXBfcHJpbnRmKF8oIkNhbm5vdCBkZXRlcm1p
bmUgZGVzdGluYXRpb24gVVJJIGZvciBkb3dubG9hZCB3aXRoIHN1Z2dlc3RlZCBmaWxlbmFtZSAl
cyIpLCBzdWdnZXN0ZWRGaWxlbmFtZS51dGY4KCkuZGF0YSgpKSk7CiAgICAgICAgICAgICBTdHJp
bmcgZXJyb3JNZXNzYWdlID0gU3RyaW5nOjpmcm9tVVRGOChidWZmZXIuZ2V0KCkpOwpAQCAtMTAx
LDE2ICsxMDgsMjQgQEAgcHVibGljOgogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAK
LSAgICAgICAgU3RyaW5nIGludGVybWVkaWF0ZVVSSSA9IG1fZGVzdGluYXRpb25VUkkgKyAiLndr
ZG93bmxvYWQiOwotICAgICAgICBtX2ludGVybWVkaWF0ZUZpbGUgPSBhZG9wdEdSZWYoZ19maWxl
X25ld19mb3JfdXJpKGludGVybWVkaWF0ZVVSSS51dGY4KCkuZGF0YSgpKSk7CisgICAgICAgIG1f
ZGVzdGluYXRpb25GaWxlID0gYWRvcHRHUmVmKGdfZmlsZV9uZXdfZm9yX3VyaShkZXN0aW5hdGlv
blVSSS51dGY4KCkuZGF0YSgpKSk7CiAgICAgICAgIEdVbmlxdWVPdXRQdHI8R0Vycm9yPiBlcnJv
cjsKKyAgICAgICAgR1JlZlB0cjxHRmlsZU91dHB1dFN0cmVhbT4gb3V0cHV0U3RyZWFtID0gYWRv
cHRHUmVmKGdfZmlsZV9jcmVhdGUobV9kZXN0aW5hdGlvbkZpbGUuZ2V0KCksIG1fYWxsb3dPdmVy
d3JpdGUgPyBHX0ZJTEVfQ1JFQVRFX1JFUExBQ0VfREVTVElOQVRJT04gOiBHX0ZJTEVfQ1JFQVRF
X05PTkUsIG51bGxwdHIsICZlcnJvci5vdXRQdHIoKSkpOworICAgICAgICBpZiAoIW91dHB1dFN0
cmVhbSkgeworICAgICAgICAgICAgZG93bmxvYWRGYWlsZWQocGxhdGZvcm1Eb3dubG9hZERlc3Rp
bmF0aW9uRXJyb3IocmVzcG9uc2UsIGVycm9yLT5tZXNzYWdlKSk7CisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIH0KKyAgICAgICAgbV9jcmVhdGVkRGVzdGluYXRpb24gPSB0cnVlOworCisg
ICAgICAgIFN0cmluZyBpbnRlcm1lZGlhdGVVUkkgPSBkZXN0aW5hdGlvblVSSSArICIud2tkb3du
bG9hZCI7CisgICAgICAgIG1faW50ZXJtZWRpYXRlRmlsZSA9IGFkb3B0R1JlZihnX2ZpbGVfbmV3
X2Zvcl91cmkoaW50ZXJtZWRpYXRlVVJJLnV0ZjgoKS5kYXRhKCkpKTsKICAgICAgICAgbV9vdXRw
dXRTdHJlYW0gPSBhZG9wdEdSZWYoZ19maWxlX3JlcGxhY2UobV9pbnRlcm1lZGlhdGVGaWxlLmdl
dCgpLCAwLCBUUlVFLCBHX0ZJTEVfQ1JFQVRFX05PTkUsIDAsICZlcnJvci5vdXRQdHIoKSkpOwog
ICAgICAgICBpZiAoIW1fb3V0cHV0U3RyZWFtKSB7CiAgICAgICAgICAgICBkb3dubG9hZEZhaWxl
ZChwbGF0Zm9ybURvd25sb2FkRGVzdGluYXRpb25FcnJvcihyZXNwb25zZSwgZXJyb3ItPm1lc3Nh
Z2UpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIG1fZG93bmxv
YWQtPmRpZENyZWF0ZURlc3RpbmF0aW9uKG1fZGVzdGluYXRpb25VUkkpOworICAgICAgICBtX2Rv
d25sb2FkLT5kaWRDcmVhdGVEZXN0aW5hdGlvbihkZXN0aW5hdGlvblVSSSk7CiAgICAgfQogCiAg
ICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IGNoYXIqIGRhdGEs
IHVuc2lnbmVkIGxlbmd0aCwgaW50IC8qZW5jb2RlZERhdGFMZW5ndGgqLykKQEAgLTEzNCwxMCAr
MTQ5LDEwIEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIG1fb3V0cHV0U3RyZWFtID0gMDsKIAor
ICAgICAgICBBU1NFUlQobV9kZXN0aW5hdGlvbkZpbGUpOwogICAgICAgICBBU1NFUlQobV9pbnRl
cm1lZGlhdGVGaWxlKTsKLSAgICAgICAgR1JlZlB0cjxHRmlsZT4gZGVzdGluYXRpb25GaWxlID0g
YWRvcHRHUmVmKGdfZmlsZV9uZXdfZm9yX3VyaShtX2Rlc3RpbmF0aW9uVVJJLnV0ZjgoKS5kYXRh
KCkpKTsKICAgICAgICAgR1VuaXF1ZU91dFB0cjxHRXJyb3I+IGVycm9yOwotICAgICAgICBpZiAo
IWdfZmlsZV9tb3ZlKG1faW50ZXJtZWRpYXRlRmlsZS5nZXQoKSwgZGVzdGluYXRpb25GaWxlLmdl
dCgpLCBtX2FsbG93T3ZlcndyaXRlID8gR19GSUxFX0NPUFlfT1ZFUldSSVRFIDogR19GSUxFX0NP
UFlfTk9ORSwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgJmVycm9yLm91dFB0cigpKSkgewor
ICAgICAgICBpZiAoIWdfZmlsZV9tb3ZlKG1faW50ZXJtZWRpYXRlRmlsZS5nZXQoKSwgbV9kZXN0
aW5hdGlvbkZpbGUuZ2V0KCksIEdfRklMRV9DT1BZX09WRVJXUklURSwgbnVsbHB0ciwgbnVsbHB0
ciwgbnVsbHB0ciwgJmVycm9yLm91dFB0cigpKSkgewogICAgICAgICAgICAgZG93bmxvYWRGYWls
ZWQocGxhdGZvcm1Eb3dubG9hZERlc3RpbmF0aW9uRXJyb3IobV9yZXNwb25zZSwgZXJyb3ItPm1l
c3NhZ2UpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtMTQ2LDcgKzE2MSw3
IEBAIHB1YmxpYzoKICAgICAgICAgQ1N0cmluZyB1cmkgPSBtX3Jlc3BvbnNlLnVybCgpLnN0cmlu
ZygpLnV0ZjgoKTsKICAgICAgICAgZ19maWxlX2luZm9fc2V0X2F0dHJpYnV0ZV9zdHJpbmcoaW5m
by5nZXQoKSwgIm1ldGFkYXRhOjpkb3dubG9hZC11cmkiLCB1cmkuZGF0YSgpKTsKICAgICAgICAg
Z19maWxlX2luZm9fc2V0X2F0dHJpYnV0ZV9zdHJpbmcoaW5mby5nZXQoKSwgInhhdHRyOjp4ZGcu
b3JpZ2luLnVybCIsIHVyaS5kYXRhKCkpOwotICAgICAgICBnX2ZpbGVfc2V0X2F0dHJpYnV0ZXNf
YXN5bmMoZGVzdGluYXRpb25GaWxlLmdldCgpLCBpbmZvLmdldCgpLCBHX0ZJTEVfUVVFUllfSU5G
T19OT05FLCBHX1BSSU9SSVRZX0RFRkFVTFQsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpOwor
ICAgICAgICBnX2ZpbGVfc2V0X2F0dHJpYnV0ZXNfYXN5bmMobV9kZXN0aW5hdGlvbkZpbGUuZ2V0
KCksIGluZm8uZ2V0KCksIEdfRklMRV9RVUVSWV9JTkZPX05PTkUsIEdfUFJJT1JJVFlfREVGQVVM
VCwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0cik7CiAKICAgICAgICAgbV9kb3dubG9hZC0+ZGlk
RmluaXNoKCk7CiAgICAgfQpAQCAtMTY5LDcgKzE4NCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNh
bmNlbChSZXNvdXJjZUhhbmRsZSogaGFuZGxlKQogICAgIHsKICAgICAgICAgaGFuZGxlLT5jYW5j
ZWwoKTsKLSAgICAgICAgZGVsZXRlSW50ZXJtZWRpYXRlRmlsZUluTmVlZGVkKCk7CisgICAgICAg
IGRlbGV0ZUZpbGVzSWZOZWVkZWQoKTsKICAgICAgICAgbV9kb3dubG9hZC0+ZGlkQ2FuY2VsKElQ
Qzo6RGF0YVJlZmVyZW5jZSgpKTsKICAgICB9CiAKQEAgLTE5MywxMSArMjA4LDEyIEBAIHB1Ymxp
YzoKICAgICBEb3dubG9hZCogbV9kb3dubG9hZDsKICAgICBHUmVmUHRyPEdGaWxlT3V0cHV0U3Ry
ZWFtPiBtX291dHB1dFN0cmVhbTsKICAgICBSZXNvdXJjZVJlc3BvbnNlIG1fcmVzcG9uc2U7Ci0g
ICAgU3RyaW5nIG1fZGVzdGluYXRpb25VUkk7CisgICAgR1JlZlB0cjxHRmlsZT4gbV9kZXN0aW5h
dGlvbkZpbGU7CiAgICAgR1JlZlB0cjxHRmlsZT4gbV9pbnRlcm1lZGlhdGVGaWxlOwogICAgIFJl
c291cmNlUmVzcG9uc2UgbV9kZWxheWVkUmVzcG9uc2U7CiAgICAgR01haW5Mb29wU291cmNlIG1f
aGFuZGxlUmVzcG9uc2VMYXRlcjsKICAgICBib29sIG1fYWxsb3dPdmVyd3JpdGU7CisgICAgYm9v
bCBtX2NyZWF0ZWREZXN0aW5hdGlvbjsKIH07CiAKIHZvaWQgRG93bmxvYWQ6OnN0YXJ0KCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>237459</attachid>
            <date>2014-09-01 13:11:47 -0700</date>
            <delta_ts>2014-09-03 12:54:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-136423-20140901151140.patch</filename>
            <type>text/plain</type>
            <size>7167</size>
            <attacher name="Michael Catanzaro">mcatanzaro</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTczMTU5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNWQxOTgyZjEzNDljZmNj
YTdmNTZmOTAwY2UzODMyZmU2M2NhN2VmMS4uMDhjYzZlOWFmMGJiNGI3NWVjN2RjNWYzNWNlMTNj
M2ZhZmY5N2RmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDE0LTA5LTAxICBNaWNo
YWVsIENhdGFuemFybyAgPG1jYXRhbnphcm9AaWdhbGlhLmNvbT4KKworICAgICAgICBbU09VUF0g
UmFjZSBjb25kaXRpb24gd2hlbiBkb3dubG9hZGluZyBhIGZpbGUgZHVlIHRvIHRoZSBpbnRlcm1l
ZGlhdGUgdGVtcG9yYXJ5IGZpbGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEzNjQyMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogU2hhcmVkL0Rvd25sb2Fkcy9zb3VwL0Rvd25sb2FkU291cC5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OkRvd25sb2FkQ2xpZW50OjpEb3dubG9hZENsaWVudCk6IFJlcGxhY2Ug
bV9kZXN0aW5hdGlvblVSSSB3aXRoCisgICAgICAgIG1fZGVzdGluYXRpb25GaWxlIGFuZCBhZGQg
bV9jcmVhdGVkRGVzdGluYXRpb24uCisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkQ2xpZW50Ojpk
ZWxldGVGaWxlc0lmTmVlZGVkKTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkQ2xp
ZW50Ojpkb3dubG9hZEZhaWxlZCk6IENhbGwgZGVsZXRlRmlsZXNJZk5lZWRlZC4KKyAgICAgICAg
KFdlYktpdDo6RG93bmxvYWRDbGllbnQ6OmRpZFJlY2VpdmVSZXNwb25zZSk6IEF0dGVtcHQgdG8g
Y3JlYXRlIHRoZQorICAgICAgICBkZXN0aW5hdGlvbiBmaWxlIGJlZm9yZSB0aGUgaW50ZXJtZWRp
YXRlIGZpbGUuIEZhaWwgaGVyZSBpZiB0aGUgZmlsZQorICAgICAgICBleGlzdHMgYW5kIG92ZXJ3
cml0ZSBpcyBub3QgYWxsb3dlZCwgc28gd2UgZG9uJ3QgZXJyb25lb3VzbHkgZmlyZSB0aGUKKyAg
ICAgICAgZGlkQ3JlYXRlRGVzdGluYXRpb24gZXZlbnQgb3Igd2FzdGUgdGltZSBkb3dubG9hZGlu
ZyB0aGUgZmlsZSB3aGVuIHdlCisgICAgICAgIGtub3cgdGhlIGRvd25sb2FkIHdpbGwgZmFpbC4K
KyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRDbGllbnQ6OmRpZEZpbmlzaExvYWRpbmcpOiBVbmNv
bmRpdGlvbmFsbHkgb3ZlcndyaXRlCisgICAgICAgIHRoZSBlbXB0eSBkZXN0aW5hdGlvbiBmaWxl
LgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZENsaWVudDo6Y2FuY2VsKTogQ2FsbCBkZWxldGVG
aWxlc0lmTmVlZGVkLgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZENsaWVudDo6ZGVsZXRlSW50
ZXJtZWRpYXRlRmlsZUluTmVlZGVkKTogRGVsZXRlZC4KKwogMjAxNC0wOS0wMSAgR3l1eW91bmcg
S2ltICA8Z3l1eW91bmcua2ltQHNhbXN1bmcuY29tPgogCiAgICAgICAgIFtDTUFLRV0gQnVpbGQg
d2FybmluZyBieSBJTlRFUkZBQ0VfTElOS19MSUJSQVJJRVMKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9Eb3dubG9hZHMvc291cC9Eb3dubG9hZFNvdXAuY3BwIGIvU291cmNlL1dl
YktpdDIvU2hhcmVkL0Rvd25sb2Fkcy9zb3VwL0Rvd25sb2FkU291cC5jcHAKaW5kZXggODM2Mzg2
NWMzOWExZDlhNmEyODY4YjAzMGE5NGI5ODczMTRjYjIwMS4uNjk3NDQ2YTE3YTQ1MTI4YzgxZTA0
ZTM4MzVhOWVmY2RhNjZhMTRjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0Rv
d25sb2Fkcy9zb3VwL0Rvd25sb2FkU291cC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVk
L0Rvd25sb2Fkcy9zb3VwL0Rvd25sb2FkU291cC5jcHAKQEAgLTUxLDYgKzUxLDcgQEAgcHVibGlj
OgogICAgIERvd25sb2FkQ2xpZW50KERvd25sb2FkKiBkb3dubG9hZCkKICAgICAgICAgOiBtX2Rv
d25sb2FkKGRvd25sb2FkKQogICAgICAgICAsIG1fYWxsb3dPdmVyd3JpdGUoZmFsc2UpCisgICAg
ICAgICwgbV9jcmVhdGVkRGVzdGluYXRpb24oZmFsc2UpCiAgICAgewogICAgIH0KIApAQCAtNTgs
MTYgKzU5LDIyIEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQogCi0gICAgdm9pZCBkZWxldGVJbnRl
cm1lZGlhdGVGaWxlSW5OZWVkZWQoKQorICAgIHZvaWQgZGVsZXRlRmlsZXNJZk5lZWRlZCgpCiAg
ICAgewotICAgICAgICBpZiAoIW1faW50ZXJtZWRpYXRlRmlsZSkKLSAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgZ19maWxlX2RlbGV0ZShtX2ludGVybWVkaWF0ZUZpbGUuZ2V0KCksIG51bGxw
dHIsIG51bGxwdHIpOworICAgICAgICBpZiAobV9jcmVhdGVkRGVzdGluYXRpb24pIHsKKyAgICAg
ICAgICAgIEFTU0VSVChtX2Rlc3RpbmF0aW9uRmlsZSk7CisgICAgICAgICAgICBnX2ZpbGVfZGVs
ZXRlKG1fZGVzdGluYXRpb25GaWxlLmdldCgpLCBudWxscHRyLCBudWxscHRyKTsKKyAgICAgICAg
fQorCisgICAgICAgIGlmIChtX2ludGVybWVkaWF0ZUZpbGUpIHsKKyAgICAgICAgICAgIEFTU0VS
VChtX2NyZWF0ZWREZXN0aW5hdGlvbik7CisgICAgICAgICAgICBnX2ZpbGVfZGVsZXRlKG1faW50
ZXJtZWRpYXRlRmlsZS5nZXQoKSwgbnVsbHB0ciwgbnVsbHB0cik7CisgICAgICAgIH0KICAgICB9
CiAKICAgICB2b2lkIGRvd25sb2FkRmFpbGVkKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQog
ICAgIHsKLSAgICAgICAgZGVsZXRlSW50ZXJtZWRpYXRlRmlsZUluTmVlZGVkKCk7CisgICAgICAg
IGRlbGV0ZUZpbGVzSWZOZWVkZWQoKTsKICAgICAgICAgbV9kb3dubG9hZC0+ZGlkRmFpbChlcnJv
ciwgSVBDOjpEYXRhUmVmZXJlbmNlKCkpOwogICAgIH0KIApAQCAtODksOCArOTYsOCBAQCBwdWJs
aWM6CiAgICAgICAgICAgICBzdWdnZXN0ZWRGaWxlbmFtZSA9IGRlY29kZVVSTEVzY2FwZVNlcXVl
bmNlcyh1cmwubGFzdFBhdGhDb21wb25lbnQoKSk7CiAgICAgICAgIH0KIAotICAgICAgICBtX2Rl
c3RpbmF0aW9uVVJJID0gbV9kb3dubG9hZC0+ZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVk
RmlsZW5hbWUoc3VnZ2VzdGVkRmlsZW5hbWUsIG1fYWxsb3dPdmVyd3JpdGUpOwotICAgICAgICBp
ZiAobV9kZXN0aW5hdGlvblVSSS5pc0VtcHR5KCkpIHsKKyAgICAgICAgU3RyaW5nIGRlc3RpbmF0
aW9uVVJJID0gbV9kb3dubG9hZC0+ZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5h
bWUoc3VnZ2VzdGVkRmlsZW5hbWUsIG1fYWxsb3dPdmVyd3JpdGUpOworICAgICAgICBpZiAoZGVz
dGluYXRpb25VUkkuaXNFbXB0eSgpKSB7CiAjaWYgUExBVEZPUk0oR1RLKQogICAgICAgICAgICAg
R1VuaXF1ZVB0cjxjaGFyPiBidWZmZXIoZ19zdHJkdXBfcHJpbnRmKF8oIkNhbm5vdCBkZXRlcm1p
bmUgZGVzdGluYXRpb24gVVJJIGZvciBkb3dubG9hZCB3aXRoIHN1Z2dlc3RlZCBmaWxlbmFtZSAl
cyIpLCBzdWdnZXN0ZWRGaWxlbmFtZS51dGY4KCkuZGF0YSgpKSk7CiAgICAgICAgICAgICBTdHJp
bmcgZXJyb3JNZXNzYWdlID0gU3RyaW5nOjpmcm9tVVRGOChidWZmZXIuZ2V0KCkpOwpAQCAtMTAx
LDE2ICsxMDgsMjggQEAgcHVibGljOgogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAK
LSAgICAgICAgU3RyaW5nIGludGVybWVkaWF0ZVVSSSA9IG1fZGVzdGluYXRpb25VUkkgKyAiLndr
ZG93bmxvYWQiOwotICAgICAgICBtX2ludGVybWVkaWF0ZUZpbGUgPSBhZG9wdEdSZWYoZ19maWxl
X25ld19mb3JfdXJpKGludGVybWVkaWF0ZVVSSS51dGY4KCkuZGF0YSgpKSk7CisgICAgICAgIG1f
ZGVzdGluYXRpb25GaWxlID0gYWRvcHRHUmVmKGdfZmlsZV9uZXdfZm9yX3VyaShkZXN0aW5hdGlv
blVSSS51dGY4KCkuZGF0YSgpKSk7CisgICAgICAgIEdSZWZQdHI8R0ZpbGVPdXRwdXRTdHJlYW0+
IG91dHB1dFN0cmVhbTsKICAgICAgICAgR1VuaXF1ZU91dFB0cjxHRXJyb3I+IGVycm9yOworICAg
ICAgICBpZiAobV9hbGxvd092ZXJ3cml0ZSkKKyAgICAgICAgICAgIG91dHB1dFN0cmVhbSA9IGFk
b3B0R1JlZihnX2ZpbGVfcmVwbGFjZShtX2Rlc3RpbmF0aW9uRmlsZS5nZXQoKSwgbnVsbHB0ciwg
ZmFsc2UsIEdfRklMRV9DUkVBVEVfTk9ORSwgbnVsbHB0ciwgJmVycm9yLm91dFB0cigpKSk7Cisg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgIG91dHB1dFN0cmVhbSA9IGFkb3B0R1JlZihnX2ZpbGVf
Y3JlYXRlKG1fZGVzdGluYXRpb25GaWxlLmdldCgpLCBHX0ZJTEVfQ1JFQVRFX05PTkUsIG51bGxw
dHIsICZlcnJvci5vdXRQdHIoKSkpOworICAgICAgICBpZiAoIW91dHB1dFN0cmVhbSkgeworICAg
ICAgICAgICAgZG93bmxvYWRGYWlsZWQocGxhdGZvcm1Eb3dubG9hZERlc3RpbmF0aW9uRXJyb3Io
cmVzcG9uc2UsIGVycm9yLT5tZXNzYWdlKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IH0KKyAgICAgICAgbV9jcmVhdGVkRGVzdGluYXRpb24gPSB0cnVlOworCisgICAgICAgIFN0cmlu
ZyBpbnRlcm1lZGlhdGVVUkkgPSBkZXN0aW5hdGlvblVSSSArICIud2tkb3dubG9hZCI7CisgICAg
ICAgIG1faW50ZXJtZWRpYXRlRmlsZSA9IGFkb3B0R1JlZihnX2ZpbGVfbmV3X2Zvcl91cmkoaW50
ZXJtZWRpYXRlVVJJLnV0ZjgoKS5kYXRhKCkpKTsKICAgICAgICAgbV9vdXRwdXRTdHJlYW0gPSBh
ZG9wdEdSZWYoZ19maWxlX3JlcGxhY2UobV9pbnRlcm1lZGlhdGVGaWxlLmdldCgpLCAwLCBUUlVF
LCBHX0ZJTEVfQ1JFQVRFX05PTkUsIDAsICZlcnJvci5vdXRQdHIoKSkpOwogICAgICAgICBpZiAo
IW1fb3V0cHV0U3RyZWFtKSB7CiAgICAgICAgICAgICBkb3dubG9hZEZhaWxlZChwbGF0Zm9ybURv
d25sb2FkRGVzdGluYXRpb25FcnJvcihyZXNwb25zZSwgZXJyb3ItPm1lc3NhZ2UpKTsKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIG1fZG93bmxvYWQtPmRpZENyZWF0
ZURlc3RpbmF0aW9uKG1fZGVzdGluYXRpb25VUkkpOworICAgICAgICBtX2Rvd25sb2FkLT5kaWRD
cmVhdGVEZXN0aW5hdGlvbihkZXN0aW5hdGlvblVSSSk7CiAgICAgfQogCiAgICAgdm9pZCBkaWRS
ZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IGNoYXIqIGRhdGEsIHVuc2lnbmVkIGxl
bmd0aCwgaW50IC8qZW5jb2RlZERhdGFMZW5ndGgqLykKQEAgLTEzNCwxMCArMTUzLDEwIEBAIHB1
YmxpYzoKICAgICB7CiAgICAgICAgIG1fb3V0cHV0U3RyZWFtID0gMDsKIAorICAgICAgICBBU1NF
UlQobV9kZXN0aW5hdGlvbkZpbGUpOwogICAgICAgICBBU1NFUlQobV9pbnRlcm1lZGlhdGVGaWxl
KTsKLSAgICAgICAgR1JlZlB0cjxHRmlsZT4gZGVzdGluYXRpb25GaWxlID0gYWRvcHRHUmVmKGdf
ZmlsZV9uZXdfZm9yX3VyaShtX2Rlc3RpbmF0aW9uVVJJLnV0ZjgoKS5kYXRhKCkpKTsKICAgICAg
ICAgR1VuaXF1ZU91dFB0cjxHRXJyb3I+IGVycm9yOwotICAgICAgICBpZiAoIWdfZmlsZV9tb3Zl
KG1faW50ZXJtZWRpYXRlRmlsZS5nZXQoKSwgZGVzdGluYXRpb25GaWxlLmdldCgpLCBtX2FsbG93
T3ZlcndyaXRlID8gR19GSUxFX0NPUFlfT1ZFUldSSVRFIDogR19GSUxFX0NPUFlfTk9ORSwgbnVs
bHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgJmVycm9yLm91dFB0cigpKSkgeworICAgICAgICBpZiAo
IWdfZmlsZV9tb3ZlKG1faW50ZXJtZWRpYXRlRmlsZS5nZXQoKSwgbV9kZXN0aW5hdGlvbkZpbGUu
Z2V0KCksIEdfRklMRV9DT1BZX09WRVJXUklURSwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwg
JmVycm9yLm91dFB0cigpKSkgewogICAgICAgICAgICAgZG93bmxvYWRGYWlsZWQocGxhdGZvcm1E
b3dubG9hZERlc3RpbmF0aW9uRXJyb3IobV9yZXNwb25zZSwgZXJyb3ItPm1lc3NhZ2UpKTsKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtMTQ2LDcgKzE2NSw3IEBAIHB1YmxpYzoK
ICAgICAgICAgQ1N0cmluZyB1cmkgPSBtX3Jlc3BvbnNlLnVybCgpLnN0cmluZygpLnV0ZjgoKTsK
ICAgICAgICAgZ19maWxlX2luZm9fc2V0X2F0dHJpYnV0ZV9zdHJpbmcoaW5mby5nZXQoKSwgIm1l
dGFkYXRhOjpkb3dubG9hZC11cmkiLCB1cmkuZGF0YSgpKTsKICAgICAgICAgZ19maWxlX2luZm9f
c2V0X2F0dHJpYnV0ZV9zdHJpbmcoaW5mby5nZXQoKSwgInhhdHRyOjp4ZGcub3JpZ2luLnVybCIs
IHVyaS5kYXRhKCkpOwotICAgICAgICBnX2ZpbGVfc2V0X2F0dHJpYnV0ZXNfYXN5bmMoZGVzdGlu
YXRpb25GaWxlLmdldCgpLCBpbmZvLmdldCgpLCBHX0ZJTEVfUVVFUllfSU5GT19OT05FLCBHX1BS
SU9SSVRZX0RFRkFVTFQsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpOworICAgICAgICBnX2Zp
bGVfc2V0X2F0dHJpYnV0ZXNfYXN5bmMobV9kZXN0aW5hdGlvbkZpbGUuZ2V0KCksIGluZm8uZ2V0
KCksIEdfRklMRV9RVUVSWV9JTkZPX05PTkUsIEdfUFJJT1JJVFlfREVGQVVMVCwgbnVsbHB0ciwg
bnVsbHB0ciwgbnVsbHB0cik7CiAKICAgICAgICAgbV9kb3dubG9hZC0+ZGlkRmluaXNoKCk7CiAg
ICAgfQpAQCAtMTY5LDcgKzE4OCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNhbmNlbChSZXNvdXJj
ZUhhbmRsZSogaGFuZGxlKQogICAgIHsKICAgICAgICAgaGFuZGxlLT5jYW5jZWwoKTsKLSAgICAg
ICAgZGVsZXRlSW50ZXJtZWRpYXRlRmlsZUluTmVlZGVkKCk7CisgICAgICAgIGRlbGV0ZUZpbGVz
SWZOZWVkZWQoKTsKICAgICAgICAgbV9kb3dubG9hZC0+ZGlkQ2FuY2VsKElQQzo6RGF0YVJlZmVy
ZW5jZSgpKTsKICAgICB9CiAKQEAgLTE5MywxMSArMjEyLDEyIEBAIHB1YmxpYzoKICAgICBEb3du
bG9hZCogbV9kb3dubG9hZDsKICAgICBHUmVmUHRyPEdGaWxlT3V0cHV0U3RyZWFtPiBtX291dHB1
dFN0cmVhbTsKICAgICBSZXNvdXJjZVJlc3BvbnNlIG1fcmVzcG9uc2U7Ci0gICAgU3RyaW5nIG1f
ZGVzdGluYXRpb25VUkk7CisgICAgR1JlZlB0cjxHRmlsZT4gbV9kZXN0aW5hdGlvbkZpbGU7CiAg
ICAgR1JlZlB0cjxHRmlsZT4gbV9pbnRlcm1lZGlhdGVGaWxlOwogICAgIFJlc291cmNlUmVzcG9u
c2UgbV9kZWxheWVkUmVzcG9uc2U7CiAgICAgR01haW5Mb29wU291cmNlIG1faGFuZGxlUmVzcG9u
c2VMYXRlcjsKICAgICBib29sIG1fYWxsb3dPdmVyd3JpdGU7CisgICAgYm9vbCBtX2NyZWF0ZWRE
ZXN0aW5hdGlvbjsKIH07CiAKIHZvaWQgRG93bmxvYWQ6OnN0YXJ0KCkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>237572</attachid>
            <date>2014-09-03 12:54:21 -0700</date>
            <delta_ts>2014-09-03 23:43:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-136423-20140903145415.patch</filename>
            <type>text/plain</type>
            <size>6844</size>
            <attacher name="Michael Catanzaro">mcatanzaro</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTczMjA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMDQ3MzY3MTVlNTdhNGM2
MWIwNDJmYjg1MmEyYmNhZDkyZTEyNjAzZC4uOWZiZGNkNzhlZjFlZWJhZjgwMGFmNDEzYmNmNDAw
MWFlMWNlYmM0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDE0LTA5LTAzICBNaWNo
YWVsIENhdGFuemFybyAgPG1jYXRhbnphcm9AaWdhbGlhLmNvbT4KKworICAgICAgICBbU09VUF0g
UmFjZSBjb25kaXRpb24gd2hlbiBkb3dubG9hZGluZyBhIGZpbGUgZHVlIHRvIHRoZSBpbnRlcm1l
ZGlhdGUgdGVtcG9yYXJ5IGZpbGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEzNjQyMworCisgICAgICAgIFJldmlld2VkIGJ5IENhcmxvcyBHYXJjaWEg
Q2FtcG9zLgorCisgICAgICAgICogU2hhcmVkL0Rvd25sb2Fkcy9zb3VwL0Rvd25sb2FkU291cC5j
cHA6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkQ2xpZW50OjpEb3dubG9hZENsaWVudCk6IFJl
cGxhY2UgbV9kZXN0aW5hdGlvblVSSSB3aXRoCisgICAgICAgIG1fZGVzdGluYXRpb25GaWxlIGFu
ZCBhZGQgbV9jcmVhdGVkRGVzdGluYXRpb24uCisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkQ2xp
ZW50OjpkZWxldGVGaWxlc0lmTmVlZGVkKTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OkRvd25s
b2FkQ2xpZW50Ojpkb3dubG9hZEZhaWxlZCk6IENhbGwgZGVsZXRlRmlsZXNJZk5lZWRlZC4KKyAg
ICAgICAgKFdlYktpdDo6RG93bmxvYWRDbGllbnQ6OmRpZFJlY2VpdmVSZXNwb25zZSk6IEF0dGVt
cHQgdG8gY3JlYXRlIHRoZQorICAgICAgICBkZXN0aW5hdGlvbiBmaWxlIGJlZm9yZSB0aGUgaW50
ZXJtZWRpYXRlIGZpbGUuIEZhaWwgaGVyZSBpZiB0aGUgZmlsZQorICAgICAgICBleGlzdHMgYW5k
IG92ZXJ3cml0ZSBpcyBub3QgYWxsb3dlZCwgc28gd2UgZG9uJ3QgZXJyb25lb3VzbHkgZmlyZSB0
aGUKKyAgICAgICAgZGlkQ3JlYXRlRGVzdGluYXRpb24gZXZlbnQgb3Igd2FzdGUgdGltZSBkb3du
bG9hZGluZyB0aGUgZmlsZSB3aGVuIHdlCisgICAgICAgIGtub3cgdGhlIGRvd25sb2FkIHdpbGwg
ZmFpbC4KKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRDbGllbnQ6OmRpZEZpbmlzaExvYWRpbmcp
OiBVbmNvbmRpdGlvbmFsbHkgb3ZlcndyaXRlCisgICAgICAgIHRoZSBlbXB0eSBkZXN0aW5hdGlv
biBmaWxlLgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZENsaWVudDo6Y2FuY2VsKTogQ2FsbCBk
ZWxldGVGaWxlc0lmTmVlZGVkLgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZENsaWVudDo6ZGVs
ZXRlSW50ZXJtZWRpYXRlRmlsZUluTmVlZGVkKTogRGVsZXRlZC4KKwogMjAxNC0wOS0wMiAgWW9u
Z2p1biBaaGFuZyAgPHlvbmdqdW5femhhbmdAYXBwbGUuY29tPgogCiAgICAgICAgIFBhc3MgdGhl
IHJlc291cmNlIGlkZW50aWZpZXIgaW4gd2lsbFNlbmRSZXF1ZXN0IGNhbGxiYWNrLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0Rvd25sb2Fkcy9zb3VwL0Rvd25sb2FkU291cC5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvRG93bmxvYWRzL3NvdXAvRG93bmxvYWRTb3VwLmNw
cAppbmRleCA4MzYzODY1YzM5YTFkOWE2YTI4NjhiMDMwYTk0Yjk4NzMxNGNiMjAxLi5kZWY2NDQ0
NDI5OWMzMjM3ZjI0ODcwNWNiNzZmZDA2MzMzNjEyZjY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvRG93bmxvYWRzL3NvdXAvRG93bmxvYWRTb3VwLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvRG93bmxvYWRzL3NvdXAvRG93bmxvYWRTb3VwLmNwcApAQCAtNTgsMTYg
KzU4LDIwIEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQogCi0gICAgdm9pZCBkZWxldGVJbnRlcm1l
ZGlhdGVGaWxlSW5OZWVkZWQoKQorICAgIHZvaWQgZGVsZXRlRmlsZXNJZk5lZWRlZCgpCiAgICAg
ewotICAgICAgICBpZiAoIW1faW50ZXJtZWRpYXRlRmlsZSkKLSAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgZ19maWxlX2RlbGV0ZShtX2ludGVybWVkaWF0ZUZpbGUuZ2V0KCksIG51bGxwdHIs
IG51bGxwdHIpOworICAgICAgICBpZiAobV9kZXN0aW5hdGlvbkZpbGUpCisgICAgICAgICAgICBn
X2ZpbGVfZGVsZXRlKG1fZGVzdGluYXRpb25GaWxlLmdldCgpLCBudWxscHRyLCBudWxscHRyKTsK
KworICAgICAgICBpZiAobV9pbnRlcm1lZGlhdGVGaWxlKSB7CisgICAgICAgICAgICBBU1NFUlQo
bV9kZXN0aW5hdGlvbkZpbGUpOworICAgICAgICAgICAgZ19maWxlX2RlbGV0ZShtX2ludGVybWVk
aWF0ZUZpbGUuZ2V0KCksIG51bGxwdHIsIG51bGxwdHIpOworICAgICAgICB9CiAgICAgfQogCiAg
ICAgdm9pZCBkb3dubG9hZEZhaWxlZChjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKICAgICB7
Ci0gICAgICAgIGRlbGV0ZUludGVybWVkaWF0ZUZpbGVJbk5lZWRlZCgpOworICAgICAgICBkZWxl
dGVGaWxlc0lmTmVlZGVkKCk7CiAgICAgICAgIG1fZG93bmxvYWQtPmRpZEZhaWwoZXJyb3IsIElQ
Qzo6RGF0YVJlZmVyZW5jZSgpKTsKICAgICB9CiAKQEAgLTg5LDggKzkzLDggQEAgcHVibGljOgog
ICAgICAgICAgICAgc3VnZ2VzdGVkRmlsZW5hbWUgPSBkZWNvZGVVUkxFc2NhcGVTZXF1ZW5jZXMo
dXJsLmxhc3RQYXRoQ29tcG9uZW50KCkpOwogICAgICAgICB9CiAKLSAgICAgICAgbV9kZXN0aW5h
dGlvblVSSSA9IG1fZG93bmxvYWQtPmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVu
YW1lKHN1Z2dlc3RlZEZpbGVuYW1lLCBtX2FsbG93T3ZlcndyaXRlKTsKLSAgICAgICAgaWYgKG1f
ZGVzdGluYXRpb25VUkkuaXNFbXB0eSgpKSB7CisgICAgICAgIFN0cmluZyBkZXN0aW5hdGlvblVS
SSA9IG1fZG93bmxvYWQtPmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKHN1
Z2dlc3RlZEZpbGVuYW1lLCBtX2FsbG93T3ZlcndyaXRlKTsKKyAgICAgICAgaWYgKGRlc3RpbmF0
aW9uVVJJLmlzRW1wdHkoKSkgewogI2lmIFBMQVRGT1JNKEdUSykKICAgICAgICAgICAgIEdVbmlx
dWVQdHI8Y2hhcj4gYnVmZmVyKGdfc3RyZHVwX3ByaW50ZihfKCJDYW5ub3QgZGV0ZXJtaW5lIGRl
c3RpbmF0aW9uIFVSSSBmb3IgZG93bmxvYWQgd2l0aCBzdWdnZXN0ZWQgZmlsZW5hbWUgJXMiKSwg
c3VnZ2VzdGVkRmlsZW5hbWUudXRmOCgpLmRhdGEoKSkpOwogICAgICAgICAgICAgU3RyaW5nIGVy
cm9yTWVzc2FnZSA9IFN0cmluZzo6ZnJvbVVURjgoYnVmZmVyLmdldCgpKTsKQEAgLTEwMSwxNiAr
MTA1LDI4IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAg
ICAgIFN0cmluZyBpbnRlcm1lZGlhdGVVUkkgPSBtX2Rlc3RpbmF0aW9uVVJJICsgIi53a2Rvd25s
b2FkIjsKLSAgICAgICAgbV9pbnRlcm1lZGlhdGVGaWxlID0gYWRvcHRHUmVmKGdfZmlsZV9uZXdf
Zm9yX3VyaShpbnRlcm1lZGlhdGVVUkkudXRmOCgpLmRhdGEoKSkpOworICAgICAgICBtX2Rlc3Rp
bmF0aW9uRmlsZSA9IGFkb3B0R1JlZihnX2ZpbGVfbmV3X2Zvcl91cmkoZGVzdGluYXRpb25VUkku
dXRmOCgpLmRhdGEoKSkpOworICAgICAgICBHUmVmUHRyPEdGaWxlT3V0cHV0U3RyZWFtPiBvdXRw
dXRTdHJlYW07CiAgICAgICAgIEdVbmlxdWVPdXRQdHI8R0Vycm9yPiBlcnJvcjsKKyAgICAgICAg
aWYgKG1fYWxsb3dPdmVyd3JpdGUpCisgICAgICAgICAgICBvdXRwdXRTdHJlYW0gPSBhZG9wdEdS
ZWYoZ19maWxlX3JlcGxhY2UobV9kZXN0aW5hdGlvbkZpbGUuZ2V0KCksIG51bGxwdHIsIEZBTFNF
LCBHX0ZJTEVfQ1JFQVRFX05PTkUsIG51bGxwdHIsICZlcnJvci5vdXRQdHIoKSkpOworICAgICAg
ICBlbHNlCisgICAgICAgICAgICBvdXRwdXRTdHJlYW0gPSBhZG9wdEdSZWYoZ19maWxlX2NyZWF0
ZShtX2Rlc3RpbmF0aW9uRmlsZS5nZXQoKSwgR19GSUxFX0NSRUFURV9OT05FLCBudWxscHRyLCAm
ZXJyb3Iub3V0UHRyKCkpKTsKKyAgICAgICAgaWYgKCFvdXRwdXRTdHJlYW0pIHsKKyAgICAgICAg
ICAgIG1fZGVzdGluYXRpb25GaWxlLmNsZWFyKCk7CisgICAgICAgICAgICBkb3dubG9hZEZhaWxl
ZChwbGF0Zm9ybURvd25sb2FkRGVzdGluYXRpb25FcnJvcihyZXNwb25zZSwgZXJyb3ItPm1lc3Nh
Z2UpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIFN0cmluZyBp
bnRlcm1lZGlhdGVVUkkgPSBkZXN0aW5hdGlvblVSSSArICIud2tkb3dubG9hZCI7CisgICAgICAg
IG1faW50ZXJtZWRpYXRlRmlsZSA9IGFkb3B0R1JlZihnX2ZpbGVfbmV3X2Zvcl91cmkoaW50ZXJt
ZWRpYXRlVVJJLnV0ZjgoKS5kYXRhKCkpKTsKICAgICAgICAgbV9vdXRwdXRTdHJlYW0gPSBhZG9w
dEdSZWYoZ19maWxlX3JlcGxhY2UobV9pbnRlcm1lZGlhdGVGaWxlLmdldCgpLCAwLCBUUlVFLCBH
X0ZJTEVfQ1JFQVRFX05PTkUsIDAsICZlcnJvci5vdXRQdHIoKSkpOwogICAgICAgICBpZiAoIW1f
b3V0cHV0U3RyZWFtKSB7CiAgICAgICAgICAgICBkb3dubG9hZEZhaWxlZChwbGF0Zm9ybURvd25s
b2FkRGVzdGluYXRpb25FcnJvcihyZXNwb25zZSwgZXJyb3ItPm1lc3NhZ2UpKTsKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIG1fZG93bmxvYWQtPmRpZENyZWF0ZURl
c3RpbmF0aW9uKG1fZGVzdGluYXRpb25VUkkpOworICAgICAgICBtX2Rvd25sb2FkLT5kaWRDcmVh
dGVEZXN0aW5hdGlvbihkZXN0aW5hdGlvblVSSSk7CiAgICAgfQogCiAgICAgdm9pZCBkaWRSZWNl
aXZlRGF0YShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IGNoYXIqIGRhdGEsIHVuc2lnbmVkIGxlbmd0
aCwgaW50IC8qZW5jb2RlZERhdGFMZW5ndGgqLykKQEAgLTEzNCwxMCArMTUwLDEwIEBAIHB1Ymxp
YzoKICAgICB7CiAgICAgICAgIG1fb3V0cHV0U3RyZWFtID0gMDsKIAorICAgICAgICBBU1NFUlQo
bV9kZXN0aW5hdGlvbkZpbGUpOwogICAgICAgICBBU1NFUlQobV9pbnRlcm1lZGlhdGVGaWxlKTsK
LSAgICAgICAgR1JlZlB0cjxHRmlsZT4gZGVzdGluYXRpb25GaWxlID0gYWRvcHRHUmVmKGdfZmls
ZV9uZXdfZm9yX3VyaShtX2Rlc3RpbmF0aW9uVVJJLnV0ZjgoKS5kYXRhKCkpKTsKICAgICAgICAg
R1VuaXF1ZU91dFB0cjxHRXJyb3I+IGVycm9yOwotICAgICAgICBpZiAoIWdfZmlsZV9tb3ZlKG1f
aW50ZXJtZWRpYXRlRmlsZS5nZXQoKSwgZGVzdGluYXRpb25GaWxlLmdldCgpLCBtX2FsbG93T3Zl
cndyaXRlID8gR19GSUxFX0NPUFlfT1ZFUldSSVRFIDogR19GSUxFX0NPUFlfTk9ORSwgbnVsbHB0
ciwgbnVsbHB0ciwgbnVsbHB0ciwgJmVycm9yLm91dFB0cigpKSkgeworICAgICAgICBpZiAoIWdf
ZmlsZV9tb3ZlKG1faW50ZXJtZWRpYXRlRmlsZS5nZXQoKSwgbV9kZXN0aW5hdGlvbkZpbGUuZ2V0
KCksIEdfRklMRV9DT1BZX09WRVJXUklURSwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgJmVy
cm9yLm91dFB0cigpKSkgewogICAgICAgICAgICAgZG93bmxvYWRGYWlsZWQocGxhdGZvcm1Eb3du
bG9hZERlc3RpbmF0aW9uRXJyb3IobV9yZXNwb25zZSwgZXJyb3ItPm1lc3NhZ2UpKTsKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtMTQ2LDcgKzE2Miw3IEBAIHB1YmxpYzoKICAg
ICAgICAgQ1N0cmluZyB1cmkgPSBtX3Jlc3BvbnNlLnVybCgpLnN0cmluZygpLnV0ZjgoKTsKICAg
ICAgICAgZ19maWxlX2luZm9fc2V0X2F0dHJpYnV0ZV9zdHJpbmcoaW5mby5nZXQoKSwgIm1ldGFk
YXRhOjpkb3dubG9hZC11cmkiLCB1cmkuZGF0YSgpKTsKICAgICAgICAgZ19maWxlX2luZm9fc2V0
X2F0dHJpYnV0ZV9zdHJpbmcoaW5mby5nZXQoKSwgInhhdHRyOjp4ZGcub3JpZ2luLnVybCIsIHVy
aS5kYXRhKCkpOwotICAgICAgICBnX2ZpbGVfc2V0X2F0dHJpYnV0ZXNfYXN5bmMoZGVzdGluYXRp
b25GaWxlLmdldCgpLCBpbmZvLmdldCgpLCBHX0ZJTEVfUVVFUllfSU5GT19OT05FLCBHX1BSSU9S
SVRZX0RFRkFVTFQsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpOworICAgICAgICBnX2ZpbGVf
c2V0X2F0dHJpYnV0ZXNfYXN5bmMobV9kZXN0aW5hdGlvbkZpbGUuZ2V0KCksIGluZm8uZ2V0KCks
IEdfRklMRV9RVUVSWV9JTkZPX05PTkUsIEdfUFJJT1JJVFlfREVGQVVMVCwgbnVsbHB0ciwgbnVs
bHB0ciwgbnVsbHB0cik7CiAKICAgICAgICAgbV9kb3dubG9hZC0+ZGlkRmluaXNoKCk7CiAgICAg
fQpAQCAtMTY5LDcgKzE4NSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNhbmNlbChSZXNvdXJjZUhh
bmRsZSogaGFuZGxlKQogICAgIHsKICAgICAgICAgaGFuZGxlLT5jYW5jZWwoKTsKLSAgICAgICAg
ZGVsZXRlSW50ZXJtZWRpYXRlRmlsZUluTmVlZGVkKCk7CisgICAgICAgIGRlbGV0ZUZpbGVzSWZO
ZWVkZWQoKTsKICAgICAgICAgbV9kb3dubG9hZC0+ZGlkQ2FuY2VsKElQQzo6RGF0YVJlZmVyZW5j
ZSgpKTsKICAgICB9CiAKQEAgLTE5Myw3ICsyMDksNyBAQCBwdWJsaWM6CiAgICAgRG93bmxvYWQq
IG1fZG93bmxvYWQ7CiAgICAgR1JlZlB0cjxHRmlsZU91dHB1dFN0cmVhbT4gbV9vdXRwdXRTdHJl
YW07CiAgICAgUmVzb3VyY2VSZXNwb25zZSBtX3Jlc3BvbnNlOwotICAgIFN0cmluZyBtX2Rlc3Rp
bmF0aW9uVVJJOworICAgIEdSZWZQdHI8R0ZpbGU+IG1fZGVzdGluYXRpb25GaWxlOwogICAgIEdS
ZWZQdHI8R0ZpbGU+IG1faW50ZXJtZWRpYXRlRmlsZTsKICAgICBSZXNvdXJjZVJlc3BvbnNlIG1f
ZGVsYXllZFJlc3BvbnNlOwogICAgIEdNYWluTG9vcFNvdXJjZSBtX2hhbmRsZVJlc3BvbnNlTGF0
ZXI7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>