<?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>140068</bug_id>
          
          <creation_ts>2015-01-04 19:38:39 -0800</creation_ts>
          <short_desc>[Linux] SeccompBrokerClient should cache arbitrary file descriptors</short_desc>
          <delta_ts>2015-07-15 09:02:56 -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>PC</rep_platform>
          <op_sys>Linux</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>
          <dependson>140067</dependson>
          <blocked>110014</blocked>
    
    <blocked>140070</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Michael Catanzaro">mcatanzaro</reporter>
          <assigned_to name="Michael Catanzaro">mcatanzaro</assigned_to>
          <cc>cgarcia</cc>
    
    <cc>commit-queue</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>tmpsantos</cc>
    
    <cc>zan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1058638</commentid>
    <comment_count>0</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2015-01-04 19:38:39 -0800</bug_when>
    <thetext>If malloc() attempts to open /proc/sys/vm/overcommit_memory in a SIGSYS signal handler, the SeccompBroker will attempt to recursively broker the open() syscall. Generalize the existing code that already handles the similar case where malloc() opens /sys/devices/system/cpu/online to handle this situation as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1058641</commentid>
    <comment_count>1</comment_count>
      <attachid>243956</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2015-01-04 19:54:23 -0800</bug_when>
    <thetext>Created attachment 243956
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1076946</commentid>
    <comment_count>2</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2015-03-13 08:48:15 -0700</bug_when>
    <thetext>So this works well enough for just open. But for the past few weeks I&apos;ve been using a whitelist of calls to not trap, rather than a blacklist. This is risky because if any syscall gets trapped inside a call to malloc or free, we are doomed because they&apos;re not reentrant and we use them all over the place inside the SIGSYS handler.

So, a few things to try:

* A custom memory allocator, to parcel out preallocated memory, which we would have to use everywhere inside the signal handler implementation. I think this won&apos;t work because we use WebKit IPC, and would have to ensure that no memory is ever allocated by the IPC code, or at least goes through the custom allocator. Tricky since the allocator would need to be written without using any dynamic memory.
* LD_PRELOAD on malloc and free. Set up a new SIGSYS handler for just these two functions, to kill the process if SIGSYS arrives inside the function. Then if we could determine whether we&apos;re currently running in our main SIGSYS handler, we could allocate from a preallocated pool instead of getting more memory from the OS. That would slow down the entire web process and would be a bit tricky since now memory could have been allocated by either our custom allocator (which also can&apos;t use any dynamic memory!) or normal malloc. (Actually I&apos;m not even sure if we can call normal malloc if we use LD_PRELOAD to replace it.)
* Completely give up on SIGSYS and switch to using ptrace instead.
* Or simply hope that I&apos;ve whitelisted all syscalls that can be used inside malloc. (brk is the obvious one here.) This is actually not as bad an option as it seems, since it only fails if malloc uses syscall we don&apos;t expect, which is the failure case for the rest of the sandbox anyway.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1079491</commentid>
    <comment_count>3</comment_count>
      <attachid>249294</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2015-03-23 15:55:23 -0700</bug_when>
    <thetext>Created attachment 249294
[Linux] SeccompBrokerClient should cache arbitrary file descriptors

If malloc() attempts to open /proc/sys/vm/overcommit_memory in a SIGSYS
signal handler, the SeccompBroker will attempt to recursively broker the
open() syscall. Generalize the existing code that already handles the
similar case where malloc() opens /sys/devices/system/cpu/online to
handle this situation as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1109398</commentid>
    <comment_count>4</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2015-07-14 11:04:01 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; * Or simply hope that I&apos;ve whitelisted all syscalls that can be used inside
&gt; malloc. (brk is the obvious one here.) This is actually not as bad an option
&gt; as it seems, since it only fails if malloc uses syscall we don&apos;t expect,
&gt; which is the failure case for the rest of the sandbox anyway.

This is the approach I decided to take. It&apos;s not robust, but nothing about this sandbox is, and it&apos;s working well in practice. Any of the other options would be quite complex to implement.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1109604</commentid>
    <comment_count>5</comment_count>
      <attachid>249294</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2015-07-15 03:13:56 -0700</bug_when>
    <thetext>Comment on attachment 249294
[Linux] SeccompBrokerClient should cache arbitrary file descriptors

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

&gt; Source/WebKit2/Shared/linux/SeccompFilters/SeccompBroker.cpp:64
&gt; +    void cacheFile(const char* pathname);

Nit: I&apos;d use &apos;path&apos; or &apos;pathName&apos;.

&gt; Source/WebKit2/Shared/linux/SeccompFilters/SeccompBroker.cpp:199
&gt; +    for (auto pair : m_fileDescriptorCache)
&gt; +        close(pair.value);

Just iterate over m_fileDescriptorCache.values():

    for (int fd : m_fileDescriptorCache.values())
        close(fd);

&gt; Source/WebKit2/Shared/linux/SeccompFilters/SeccompBroker.cpp:243
&gt; +    auto iter = m_fileDescriptorCache.find(String(path));

Nit: the String ctor is not required, but I&apos;d prefer this to be aligned in whichever way with the HashMap&lt;&gt;::set() call in ::cacheFile().

&gt; Source/WebKit2/Shared/linux/SeccompFilters/SeccompBroker.cpp:258
&gt; +void SeccompBrokerClient::cacheFile(const char* pathname)

Nit: same as above, I&apos;d prefer &apos;path&apos; or &apos;pathName&apos;, but it&apos;s not that critical.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1109629</commentid>
    <comment_count>6</comment_count>
      <attachid>256839</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2015-07-15 07:59:11 -0700</bug_when>
    <thetext>Created attachment 256839
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1109630</commentid>
    <comment_count>7</comment_count>
      <attachid>256840</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2015-07-15 08:05:47 -0700</bug_when>
    <thetext>Created attachment 256840
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1109633</commentid>
    <comment_count>8</comment_count>
      <attachid>256840</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-07-15 09:02:45 -0700</bug_when>
    <thetext>Comment on attachment 256840
Patch

Clearing flags on attachment: 256840

Committed r186839: &lt;http://trac.webkit.org/changeset/186839&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1109634</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-07-15 09:02:56 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>243956</attachid>
            <date>2015-01-04 19:54:23 -0800</date>
            <delta_ts>2015-03-23 15:55:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>0005-Linux-SeccompBrokerClient-should-cache-arbitrary-fil.patch</filename>
            <type>text/plain</type>
            <size>5864</size>
            <attacher name="Michael Catanzaro">mcatanzaro</attacher>
            
              <data encoding="base64">RnJvbSA0NmI4Mzg2ZTEwYzFiNmYwZmY1Nzk5MTFjYjM3ZjU0NDZiNGJjZDZkIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBNaWNoYWVsIENhdGFuemFybyA8bWNhdGFuemFyb0BpZ2FsaWEu
Y29tPgpEYXRlOiBNb24sIDI5IERlYyAyMDE0IDE5OjUwOjIwIC0wNjAwClN1YmplY3Q6IFtQQVRD
SCA1LzVdIFtMaW51eF0gU2VjY29tcEJyb2tlckNsaWVudCBzaG91bGQgY2FjaGUgYXJiaXRyYXJ5
IGZpbGUKIGRlc2NyaXB0b3JzCgpJZiBtYWxsb2MoKSBhdHRlbXB0cyB0byBvcGVuIC9wcm9jL3N5
cy92bS9vdmVyY29tbWl0X21lbW9yeSBpbiBhIFNJR1NZUwpzaWduYWwgaGFuZGxlciwgdGhlIFNl
Y2NvbXBCcm9rZXIgd2lsbCBhdHRlbXB0IHRvIHJlY3Vyc2l2ZWx5IGJyb2tlciB0aGUKb3Blbigp
IHN5c2NhbGwuIEdlbmVyYWxpemUgdGhlIGV4aXN0aW5nIGNvZGUgdGhhdCBhbHJlYWR5IGhhbmRs
ZXMgdGhlCnNpbWlsYXIgY2FzZSB3aGVyZSBtYWxsb2MoKSBvcGVucyAvc3lzL2RldmljZXMvc3lz
dGVtL2NwdS9vbmxpbmUgdG8KaGFuZGxlIHRoaXMgc2l0dWF0aW9uIGFzIHdlbGwuCi0tLQogU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyMSArKysr
KysrKysrKysKIC4uLi9TaGFyZWQvbGludXgvU2VjY29tcEZpbHRlcnMvU2VjY29tcEJyb2tlci5j
cHAgIHwgNDAgKysrKysrKysrKysrKysrLS0tLS0tLQogMiBmaWxlcyBjaGFuZ2VkLCA0OSBpbnNl
cnRpb25zKCspLCAxMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZWQyYWViNy4uOWFjNjVk
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDI2IEBACiAyMDE1LTAxLTA0ICBNaWNoYWVsIENhdGFu
emFybyAgPG1jYXRhbnphcm9AaWdhbGlhLmNvbT4KIAorICAgICAgICBbTGludXhdIFNlY2NvbXBC
cm9rZXJDbGllbnQgc2hvdWxkIGNhY2hlIGFyYml0cmFyeSBmaWxlIGRlc2NyaXB0b3JzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDAwNjgKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJZiBtYWxsb2MoKSBh
dHRlbXB0cyB0byBvcGVuIC9wcm9jL3N5cy92bS9vdmVyY29tbWl0X21lbW9yeSBpbiBhIFNJR1NZ
UworICAgICAgICBzaWduYWwgaGFuZGxlciwgdGhlIFNlY2NvbXBCcm9rZXIgd2lsbCBhdHRlbXB0
IHRvIHJlY3Vyc2l2ZWx5IGJyb2tlciB0aGUKKyAgICAgICAgb3BlbigpIHN5c2NhbGwuIEdlbmVy
YWxpemUgdGhlIGV4aXN0aW5nIGNvZGUgdGhhdCBhbHJlYWR5IGhhbmRsZXMgdGhlCisgICAgICAg
IHNpbWlsYXIgY2FzZSB3aGVyZSBtYWxsb2MoKSBvcGVucyAvc3lzL2RldmljZXMvc3lzdGVtL2Nw
dS9vbmxpbmUgdG8KKyAgICAgICAgaGFuZGxlIHRoaXMgc2l0dWF0aW9uIGFzIHdlbGwuCisKKyAg
ICAgICAgKiBTaGFyZWQvbGludXgvU2VjY29tcEZpbHRlcnMvU2VjY29tcEJyb2tlci5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OlNJR1NZU0hhbmRsZXIpOgorICAgICAgICAoV2ViS2l0OjpTZWNjb21w
QnJva2VyQ2xpZW50OjpTZWNjb21wQnJva2VyQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6U2Vj
Y29tcEJyb2tlckNsaWVudDo6flNlY2NvbXBCcm9rZXJDbGllbnQpOgorICAgICAgICAoV2ViS2l0
OjpTZWNjb21wQnJva2VyQ2xpZW50OjpoYW5kbGVJZk9wZW5pbmdDYWNoZWRGaWxlKToKKyAgICAg
ICAgKFdlYktpdDo6U2VjY29tcEJyb2tlckNsaWVudDo6Y2FjaGVGaWxlKToKKyAgICAgICAgKFdl
YktpdDo6U2VjY29tcEJyb2tlckNsaWVudDo6aGFuZGxlSWZPcGVuaW5nT25saW5lQ1BVQ291bnQp
OiBEZWxldGVkLgorCisyMDE1LTAxLTA0ICBNaWNoYWVsIENhdGFuemFybyAgPG1jYXRhbnphcm9A
aWdhbGlhLmNvbT4KKwogICAgICAgICBbTGludXhdIFNlY2NvbXBGaWx0ZXJzOiB3aGl0ZWxpc3Qg
YWxsIE5QQVBJIHBsdWdpbiBkaXJlY3RvcmllcwogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQwMDY3CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9saW51eC9TZWNjb21wRmlsdGVycy9TZWNjb21wQnJva2VyLmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9saW51eC9TZWNjb21wRmlsdGVycy9TZWNjb21wQnJva2VyLmNwcAppbmRl
eCA1OGU3M2Y5Li4zZGVlMTZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbGlu
dXgvU2VjY29tcEZpbHRlcnMvU2VjY29tcEJyb2tlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
U2hhcmVkL2xpbnV4L1NlY2NvbXBGaWx0ZXJzL1NlY2NvbXBCcm9rZXIuY3BwCkBAIC00Niw3ICs0
Niw2IEBACiAjZW5kaWYKIAogc3RhdGljIGNvbnN0IHNpemVfdCBtZXNzYWdlTWF4U2l6ZSA9IDQw
OTY7Ci1zdGF0aWMgY29uc3QgY2hhciBvbmxpbmVDUFVDb3VudFBhdGhbXSA9ICIvc3lzL2Rldmlj
ZXMvc3lzdGVtL2NwdS9vbmxpbmUiOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIApAQCAtNTcsMTUg
KzU2LDE5IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZGlzcGF0Y2goU3lzY2FsbCopIGNvbnN0Owog
Ci0gICAgYm9vbCBoYW5kbGVJZk9wZW5pbmdPbmxpbmVDUFVDb3VudChtY29udGV4dF90KikgY29u
c3Q7CisgICAgYm9vbCBoYW5kbGVJZk9wZW5pbmdDYWNoZWRGaWxlKG1jb250ZXh0X3QqKSBjb25z
dDsKIAogcHJpdmF0ZToKICAgICBTZWNjb21wQnJva2VyQ2xpZW50KGludCBzb2NrZXQpOwogCisg
ICAgdm9pZCBjYWNoZUZpbGUoY29uc3QgY2hhciogcGF0aG5hbWUpOworCiAgICAgaW50IG1fc29j
a2V0OwotICAgIGludCBtX29ubGluZUNQVUNvdW50RmQ7CiAKICAgICBtdXRhYmxlIE11dGV4IG1f
c29ja2V0TG9jazsKKworICAgIC8vIE1hcHMgZmlsZXMgdGhhdCBtYXkgYmUgcmVhZCBieSBtYWxs
b2MoKSB0byBvcGVuIGZpbGUgZGVzY3JpcHRvcnMuCisgICAgSGFzaE1hcDxTdHJpbmcsIGludD4g
bV9maWxlRGVzY3JpcHRvckNhY2hlOwogfTsKIAogc3RhdGljIHNzaXplX3Qgc2VuZE1lc3NhZ2Uo
aW50IHNvY2tldCwgdm9pZCogZGF0YSwgc2l6ZV90IHNpemUsIGludCBmZCA9IC0xKQpAQCAtMTQy
LDcgKzE0NSw3IEBAIHN0YXRpYyB2b2lkIFNJR1NZU0hhbmRsZXIoaW50IHNpZ25hbCwgc2lnaW5m
b190KiBpbmZvLCB2b2lkKiBkYXRhKQogCiAgICAgU2VjY29tcEJyb2tlckNsaWVudCogY2xpZW50
ID0gJlNlY2NvbXBCcm9rZXJDbGllbnQ6OnNoYXJlZCgpOwogCi0gICAgaWYgKGNsaWVudC0+aGFu
ZGxlSWZPcGVuaW5nT25saW5lQ1BVQ291bnQoJnVjb250ZXh0LT51Y19tY29udGV4dCkpCisgICAg
aWYgKGNsaWVudC0+aGFuZGxlSWZPcGVuaW5nQ2FjaGVkRmlsZSgmdWNvbnRleHQtPnVjX21jb250
ZXh0KSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gY3JlYXRlRnJvbUNvbnRleHQgbWlnaHQg
cmV0dXJuIGEgbnVsbHB0ciBpZiBpdCBpcyBhYmxlIHRvIHJlc29sdmUgdGhlCkBAIC0xODMsMTUg
KzE4NiwxOCBAQCBTZWNjb21wQnJva2VyQ2xpZW50JiBTZWNjb21wQnJva2VyQ2xpZW50OjpzaGFy
ZWQoaW50IHNvY2tldCkKIAogU2VjY29tcEJyb2tlckNsaWVudDo6U2VjY29tcEJyb2tlckNsaWVu
dChpbnQgc29ja2V0KQogICAgIDogbV9zb2NrZXQoc29ja2V0KQotICAgICwgbV9vbmxpbmVDUFVD
b3VudEZkKG9wZW4ob25saW5lQ1BVQ291bnRQYXRoLCBPX1JET05MWSkpCiB7Ci0gICAgQVNTRVJU
KG1fc29ja2V0ID49IDAgJiYgbV9vbmxpbmVDUFVDb3VudEZkID49IDApOworICAgIEFTU0VSVCht
X3NvY2tldCA+PSAwKTsKKworICAgIGNhY2hlRmlsZSgiL3Byb2Mvc3lzL3ZtL292ZXJjb21taXRf
bWVtb3J5Iik7CisgICAgY2FjaGVGaWxlKCIvc3lzL2RldmljZXMvc3lzdGVtL2NwdS9vbmxpbmUi
KTsKIH0KIAogU2VjY29tcEJyb2tlckNsaWVudDo6flNlY2NvbXBCcm9rZXJDbGllbnQoKQogewor
ICAgIGZvciAoYXV0byBwYWlyIDogbV9maWxlRGVzY3JpcHRvckNhY2hlKQorICAgICAgICBjbG9z
ZShwYWlyLnZhbHVlKTsKICAgICBjbG9zZShtX3NvY2tldCk7Ci0gICAgY2xvc2UobV9vbmxpbmVD
UFVDb3VudEZkKTsKIH0KIAogdm9pZCBTZWNjb21wQnJva2VyQ2xpZW50OjpkaXNwYXRjaChTeXNj
YWxsKiBzeXNjYWxsKSBjb25zdApAQCAtMjI3LDI1ICsyMzMsMzUgQEAgdm9pZCBTZWNjb21wQnJv
a2VyQ2xpZW50OjpkaXNwYXRjaChTeXNjYWxsKiBzeXNjYWxsKSBjb25zdAogICAgIHN5c2NhbGwt
PnNldFJlc3VsdChyZXN1bHQuZ2V0KCkpOwogfQogCi1ib29sIFNlY2NvbXBCcm9rZXJDbGllbnQ6
OmhhbmRsZUlmT3BlbmluZ09ubGluZUNQVUNvdW50KG1jb250ZXh0X3QqIGNvbnRleHQpIGNvbnN0
Citib29sIFNlY2NvbXBCcm9rZXJDbGllbnQ6OmhhbmRsZUlmT3BlbmluZ0NhY2hlZEZpbGUobWNv
bnRleHRfdCogY29udGV4dCkgY29uc3QKIHsKICAgICBpZiAoY29udGV4dC0+Z3JlZ3NbUkVHX1NZ
U0NBTExdICE9IF9fTlJfb3BlbikKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgY29uc3Qg
Y2hhciAqcGF0aCA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGNvbnRleHQtPmdyZWdzW1JFR19B
UkcwXSk7Ci0gICAgaWYgKHN0cmNtcChvbmxpbmVDUFVDb3VudFBhdGgsIHBhdGgpKQorCisgICAg
YXV0byBpdGVyID0gbV9maWxlRGVzY3JpcHRvckNhY2hlLmZpbmQoU3RyaW5nKHBhdGgpKTsKKyAg
ICBpZiAoaXRlciA9PSBtX2ZpbGVEZXNjcmlwdG9yQ2FjaGUuZW5kKCkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAogICAgIC8vIE1hbGxvYyB3aWxsIGV2ZW50dWFsbHkgY2hlY2sgdGhlIG51bWJl
ciBvZiBvbmxpbmUgQ1BVcyAoaS5lIGJlaW5nCiAgICAgLy8gc2NoZWR1bGVkKSBwcmVzZW50IG9u
IHRoZSBzeXN0ZW0gYnkgb3BlbmluZyBhIHNwZWNpYWwgZmlsZS4gSWYgaXQgZG9lcwogICAgIC8v
IHRoYXQgaW4gdGhlIG1pZGRsZSBvZiB0aGUgU0lHU1lTIHNpZ25hbCBoYW5kbGVyLCBpdCBtaWdo
dCB0cmlnZ2VyIGEKLSAgICAvLyByZWN1cnNpdmUgYXR0ZW1wdCBvZiBwcm94eWluZyB0aGUgb3Bl
bigpIHN5c2NhbGwgdG8gdGhlIGJyb2tlci4KLSAgICAvLyBCZWNhdXNlIG9mIHRoYXQsIHdlIGNh
Y2hlIHRoaXMgcmVzb3VyY2UuCi0gICAgY29udGV4dC0+Z3JlZ3NbUkVHX1NZU0NBTExdID0gZHVw
KG1fb25saW5lQ1BVQ291bnRGZCk7CisgICAgLy8gcmVjdXJzaXZlIGF0dGVtcHQgb2YgcHJveHlp
bmcgdGhlIG9wZW4oKSBzeXNjYWxsIHRvIHRoZSBicm9rZXIuIFRoZSBzYW1lCisgICAgLy8gcHJv
YmxlbSBvY2N1cnMgaWYgbWFsbG9jKCkgY2hlY2tzIHRoZSBtZW1vcnkgb3ZlcmNvbW1pdCBwb2xp
Y3kuIEJlY2F1c2UKKyAgICAvLyBvZiB0aGF0LCB3ZSBjYWNoZSB0aGVzZSByZXNvdXJjZXMuCisg
ICAgY29udGV4dC0+Z3JlZ3NbUkVHX1NZU0NBTExdID0gZHVwKGl0ZXItPnZhbHVlKTsKIAogICAg
IHJldHVybiB0cnVlOwogfQogCit2b2lkIFNlY2NvbXBCcm9rZXJDbGllbnQ6OmNhY2hlRmlsZShj
b25zdCBjaGFyKiBwYXRobmFtZSkKK3sKKyAgICBpbnQgZmQgPSBvcGVuKHBhdGhuYW1lLCBPX1JE
T05MWSk7CisgICAgQVNTRVJUKGZkID49IDApOworICAgIG1fZmlsZURlc2NyaXB0b3JDYWNoZS5z
ZXQocGF0aG5hbWUsIGZkKTsKK30KKwogdm9pZCBTZWNjb21wQnJva2VyOjpsYXVuY2hQcm9jZXNz
KFNlY2NvbXBGaWx0ZXJzKiBmaWx0ZXJzLCBjb25zdCBTeXNjYWxsUG9saWN5JiBwb2xpY3kpCiB7
CiAgICAgc3RhdGljIGJvb2wgaW5pdGlhbGl6ZWQgPSBmYWxzZTsKLS0gCjIuMS4wCgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>249294</attachid>
            <date>2015-03-23 15:55:23 -0700</date>
            <delta_ts>2015-07-15 07:59:07 -0700</delta_ts>
            <desc>[Linux] SeccompBrokerClient should cache arbitrary file descriptors</desc>
            <filename>Linux-SeccompBrokerClient-should-cache-arbitrary-f.patch</filename>
            <type>text/plain</type>
            <size>5912</size>
            <attacher name="Michael Catanzaro">mcatanzaro</attacher>
            
              <data encoding="base64">RnJvbSAzZGYyNzY2YWE4ZmExZjE2MmY2YTA2ZmFiZDY5YWNhMzQ3ZThkNjlmIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBNaWNoYWVsIENhdGFuemFybyA8bWNhdGFuemFyb0BpZ2FsaWEu
Y29tPgpEYXRlOiBNb24sIDI5IERlYyAyMDE0IDE5OjUwOjIwIC0wNjAwClN1YmplY3Q6IFtQQVRD
SF0gW0xpbnV4XSBTZWNjb21wQnJva2VyQ2xpZW50IHNob3VsZCBjYWNoZSBhcmJpdHJhcnkgZmls
ZQogZGVzY3JpcHRvcnMKCklmIG1hbGxvYygpIGF0dGVtcHRzIHRvIG9wZW4gL3Byb2Mvc3lzL3Zt
L292ZXJjb21taXRfbWVtb3J5IGluIGEgU0lHU1lTCnNpZ25hbCBoYW5kbGVyLCB0aGUgU2VjY29t
cEJyb2tlciB3aWxsIGF0dGVtcHQgdG8gcmVjdXJzaXZlbHkgYnJva2VyIHRoZQpvcGVuKCkgc3lz
Y2FsbC4gR2VuZXJhbGl6ZSB0aGUgZXhpc3RpbmcgY29kZSB0aGF0IGFscmVhZHkgaGFuZGxlcyB0
aGUKc2ltaWxhciBjYXNlIHdoZXJlIG1hbGxvYygpIG9wZW5zIC9zeXMvZGV2aWNlcy9zeXN0ZW0v
Y3B1L29ubGluZSB0bwpoYW5kbGUgdGhpcyBzaXR1YXRpb24gYXMgd2VsbC4KCmh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDAwNjgKLS0tCiBTb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDIxICsrKysrKysrKysrKwogLi4u
L1NoYXJlZC9saW51eC9TZWNjb21wRmlsdGVycy9TZWNjb21wQnJva2VyLmNwcCAgfCA0MCArKysr
KysrKysrKysrKystLS0tLS0tCiAyIGZpbGVzIGNoYW5nZWQsIDQ5IGluc2VydGlvbnMoKyksIDEy
IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBlOTAxYWFlLi5jNmEyMjZmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
CkBAIC0xLDUgKzEsMjYgQEAKIDIwMTUtMDEtMDQgIE1pY2hhZWwgQ2F0YW56YXJvICA8bWNhdGFu
emFyb0BpZ2FsaWEuY29tPgogCisgICAgICAgIFtMaW51eF0gU2VjY29tcEJyb2tlckNsaWVudCBz
aG91bGQgY2FjaGUgYXJiaXRyYXJ5IGZpbGUgZGVzY3JpcHRvcnMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MDA2OAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIElmIG1hbGxvYygpIGF0dGVtcHRzIHRvIG9w
ZW4gL3Byb2Mvc3lzL3ZtL292ZXJjb21taXRfbWVtb3J5IGluIGEgU0lHU1lTCisgICAgICAgIHNp
Z25hbCBoYW5kbGVyLCB0aGUgU2VjY29tcEJyb2tlciB3aWxsIGF0dGVtcHQgdG8gcmVjdXJzaXZl
bHkgYnJva2VyIHRoZQorICAgICAgICBvcGVuKCkgc3lzY2FsbC4gR2VuZXJhbGl6ZSB0aGUgZXhp
c3RpbmcgY29kZSB0aGF0IGFscmVhZHkgaGFuZGxlcyB0aGUKKyAgICAgICAgc2ltaWxhciBjYXNl
IHdoZXJlIG1hbGxvYygpIG9wZW5zIC9zeXMvZGV2aWNlcy9zeXN0ZW0vY3B1L29ubGluZSB0bwor
ICAgICAgICBoYW5kbGUgdGhpcyBzaXR1YXRpb24gYXMgd2VsbC4KKworICAgICAgICAqIFNoYXJl
ZC9saW51eC9TZWNjb21wRmlsdGVycy9TZWNjb21wQnJva2VyLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6U0lHU1lTSGFuZGxlcik6CisgICAgICAgIChXZWJLaXQ6OlNlY2NvbXBCcm9rZXJDbGllbnQ6
OlNlY2NvbXBCcm9rZXJDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpTZWNjb21wQnJva2VyQ2xp
ZW50Ojp+U2VjY29tcEJyb2tlckNsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OlNlY2NvbXBCcm9r
ZXJDbGllbnQ6OmhhbmRsZUlmT3BlbmluZ0NhY2hlZEZpbGUpOgorICAgICAgICAoV2ViS2l0OjpT
ZWNjb21wQnJva2VyQ2xpZW50OjpjYWNoZUZpbGUpOgorICAgICAgICAoV2ViS2l0OjpTZWNjb21w
QnJva2VyQ2xpZW50OjpoYW5kbGVJZk9wZW5pbmdPbmxpbmVDUFVDb3VudCk6IERlbGV0ZWQuCisK
KzIwMTUtMDEtMDQgIE1pY2hhZWwgQ2F0YW56YXJvICA8bWNhdGFuemFyb0BpZ2FsaWEuY29tPgor
CiAgICAgICAgIFtMaW51eF0gU2VjY29tcEZpbHRlcnM6IHdoaXRlbGlzdCBhbGwgTlBBUEkgcGx1
Z2luIGRpcmVjdG9yaWVzCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNDAwNjcKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL2xpbnV4
L1NlY2NvbXBGaWx0ZXJzL1NlY2NvbXBCcm9rZXIuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVk
L2xpbnV4L1NlY2NvbXBGaWx0ZXJzL1NlY2NvbXBCcm9rZXIuY3BwCmluZGV4IGI0MTFmMDkuLjFj
YTYzZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9saW51eC9TZWNjb21wRmls
dGVycy9TZWNjb21wQnJva2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbGludXgv
U2VjY29tcEZpbHRlcnMvU2VjY29tcEJyb2tlci5jcHAKQEAgLTQ2LDcgKzQ2LDYgQEAKICNlbmRp
ZgogCiBzdGF0aWMgY29uc3Qgc2l6ZV90IG1lc3NhZ2VNYXhTaXplID0gNDA5NjsKLXN0YXRpYyBj
b25zdCBjaGFyIG9ubGluZUNQVUNvdW50UGF0aFtdID0gIi9zeXMvZGV2aWNlcy9zeXN0ZW0vY3B1
L29ubGluZSI7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCkBAIC01NywxNSArNTYsMTkgQEAgcHVi
bGljOgogCiAgICAgdm9pZCBkaXNwYXRjaChTeXNjYWxsKikgY29uc3Q7CiAKLSAgICBib29sIGhh
bmRsZUlmT3BlbmluZ09ubGluZUNQVUNvdW50KG1jb250ZXh0X3QqKSBjb25zdDsKKyAgICBib29s
IGhhbmRsZUlmT3BlbmluZ0NhY2hlZEZpbGUobWNvbnRleHRfdCopIGNvbnN0OwogCiBwcml2YXRl
OgogICAgIFNlY2NvbXBCcm9rZXJDbGllbnQoaW50IHNvY2tldCk7CiAKKyAgICB2b2lkIGNhY2hl
RmlsZShjb25zdCBjaGFyKiBwYXRobmFtZSk7CisKICAgICBpbnQgbV9zb2NrZXQ7Ci0gICAgaW50
IG1fb25saW5lQ1BVQ291bnRGZDsKIAogICAgIG11dGFibGUgTXV0ZXggbV9zb2NrZXRMb2NrOwor
CisgICAgLy8gTWFwcyBmaWxlcyB0aGF0IG1heSBiZSByZWFkIGJ5IG1hbGxvYygpIHRvIG9wZW4g
ZmlsZSBkZXNjcmlwdG9ycy4KKyAgICBIYXNoTWFwPFN0cmluZywgaW50PiBtX2ZpbGVEZXNjcmlw
dG9yQ2FjaGU7CiB9OwogCiBzdGF0aWMgc3NpemVfdCBzZW5kTWVzc2FnZShpbnQgc29ja2V0LCB2
b2lkKiBkYXRhLCBzaXplX3Qgc2l6ZSwgaW50IGZkID0gLTEpCkBAIC0xNDIsNyArMTQ1LDcgQEAg
c3RhdGljIHZvaWQgU0lHU1lTSGFuZGxlcihpbnQgc2lnbmFsLCBzaWdpbmZvX3QqIGluZm8sIHZv
aWQqIGRhdGEpCiAKICAgICBTZWNjb21wQnJva2VyQ2xpZW50KiBjbGllbnQgPSAmU2VjY29tcEJy
b2tlckNsaWVudDo6c2luZ2xldG9uKCk7CiAKLSAgICBpZiAoY2xpZW50LT5oYW5kbGVJZk9wZW5p
bmdPbmxpbmVDUFVDb3VudCgmdWNvbnRleHQtPnVjX21jb250ZXh0KSkKKyAgICBpZiAoY2xpZW50
LT5oYW5kbGVJZk9wZW5pbmdDYWNoZWRGaWxlKCZ1Y29udGV4dC0+dWNfbWNvbnRleHQpKQogICAg
ICAgICByZXR1cm47CiAKICAgICAvLyBjcmVhdGVGcm9tQ29udGV4dCBtaWdodCByZXR1cm4gYSBu
dWxscHRyIGlmIGl0IGlzIGFibGUgdG8gcmVzb2x2ZSB0aGUKQEAgLTE4MywxNSArMTg2LDE4IEBA
IFNlY2NvbXBCcm9rZXJDbGllbnQmIFNlY2NvbXBCcm9rZXJDbGllbnQ6OnNpbmdsZXRvbihpbnQg
c29ja2V0KQogCiBTZWNjb21wQnJva2VyQ2xpZW50OjpTZWNjb21wQnJva2VyQ2xpZW50KGludCBz
b2NrZXQpCiAgICAgOiBtX3NvY2tldChzb2NrZXQpCi0gICAgLCBtX29ubGluZUNQVUNvdW50RmQo
b3BlbihvbmxpbmVDUFVDb3VudFBhdGgsIE9fUkRPTkxZKSkKIHsKLSAgICBBU1NFUlQobV9zb2Nr
ZXQgPj0gMCAmJiBtX29ubGluZUNQVUNvdW50RmQgPj0gMCk7CisgICAgQVNTRVJUKG1fc29ja2V0
ID49IDApOworCisgICAgY2FjaGVGaWxlKCIvcHJvYy9zeXMvdm0vb3ZlcmNvbW1pdF9tZW1vcnki
KTsKKyAgICBjYWNoZUZpbGUoIi9zeXMvZGV2aWNlcy9zeXN0ZW0vY3B1L29ubGluZSIpOwogfQog
CiBTZWNjb21wQnJva2VyQ2xpZW50Ojp+U2VjY29tcEJyb2tlckNsaWVudCgpCiB7CisgICAgZm9y
IChhdXRvIHBhaXIgOiBtX2ZpbGVEZXNjcmlwdG9yQ2FjaGUpCisgICAgICAgIGNsb3NlKHBhaXIu
dmFsdWUpOwogICAgIGNsb3NlKG1fc29ja2V0KTsKLSAgICBjbG9zZShtX29ubGluZUNQVUNvdW50
RmQpOwogfQogCiB2b2lkIFNlY2NvbXBCcm9rZXJDbGllbnQ6OmRpc3BhdGNoKFN5c2NhbGwqIHN5
c2NhbGwpIGNvbnN0CkBAIC0yMjcsMjUgKzIzMywzNSBAQCB2b2lkIFNlY2NvbXBCcm9rZXJDbGll
bnQ6OmRpc3BhdGNoKFN5c2NhbGwqIHN5c2NhbGwpIGNvbnN0CiAgICAgc3lzY2FsbC0+c2V0UmVz
dWx0KHJlc3VsdC5nZXQoKSk7CiB9CiAKLWJvb2wgU2VjY29tcEJyb2tlckNsaWVudDo6aGFuZGxl
SWZPcGVuaW5nT25saW5lQ1BVQ291bnQobWNvbnRleHRfdCogY29udGV4dCkgY29uc3QKK2Jvb2wg
U2VjY29tcEJyb2tlckNsaWVudDo6aGFuZGxlSWZPcGVuaW5nQ2FjaGVkRmlsZShtY29udGV4dF90
KiBjb250ZXh0KSBjb25zdAogewogICAgIGlmIChjb250ZXh0LT5ncmVnc1tSRUdfU1lTQ0FMTF0g
IT0gX19OUl9vcGVuKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBjb25zdCBjaGFyICpw
YXRoID0gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oY29udGV4dC0+Z3JlZ3NbUkVHX0FSRzBdKTsK
LSAgICBpZiAoc3RyY21wKG9ubGluZUNQVUNvdW50UGF0aCwgcGF0aCkpCisKKyAgICBhdXRvIGl0
ZXIgPSBtX2ZpbGVEZXNjcmlwdG9yQ2FjaGUuZmluZChTdHJpbmcocGF0aCkpOworICAgIGlmIChp
dGVyID09IG1fZmlsZURlc2NyaXB0b3JDYWNoZS5lbmQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCiAgICAgLy8gTWFsbG9jIHdpbGwgZXZlbnR1YWxseSBjaGVjayB0aGUgbnVtYmVyIG9mIG9u
bGluZSBDUFVzIChpLmUgYmVpbmcKICAgICAvLyBzY2hlZHVsZWQpIHByZXNlbnQgb24gdGhlIHN5
c3RlbSBieSBvcGVuaW5nIGEgc3BlY2lhbCBmaWxlLiBJZiBpdCBkb2VzCiAgICAgLy8gdGhhdCBp
biB0aGUgbWlkZGxlIG9mIHRoZSBTSUdTWVMgc2lnbmFsIGhhbmRsZXIsIGl0IG1pZ2h0IHRyaWdn
ZXIgYQotICAgIC8vIHJlY3Vyc2l2ZSBhdHRlbXB0IG9mIHByb3h5aW5nIHRoZSBvcGVuKCkgc3lz
Y2FsbCB0byB0aGUgYnJva2VyLgotICAgIC8vIEJlY2F1c2Ugb2YgdGhhdCwgd2UgY2FjaGUgdGhp
cyByZXNvdXJjZS4KLSAgICBjb250ZXh0LT5ncmVnc1tSRUdfU1lTQ0FMTF0gPSBkdXAobV9vbmxp
bmVDUFVDb3VudEZkKTsKKyAgICAvLyByZWN1cnNpdmUgYXR0ZW1wdCBvZiBwcm94eWluZyB0aGUg
b3BlbigpIHN5c2NhbGwgdG8gdGhlIGJyb2tlci4gVGhlIHNhbWUKKyAgICAvLyBwcm9ibGVtIG9j
Y3VycyBpZiBtYWxsb2MoKSBjaGVja3MgdGhlIG1lbW9yeSBvdmVyY29tbWl0IHBvbGljeS4gQmVj
YXVzZQorICAgIC8vIG9mIHRoYXQsIHdlIGNhY2hlIHRoZXNlIHJlc291cmNlcy4KKyAgICBjb250
ZXh0LT5ncmVnc1tSRUdfU1lTQ0FMTF0gPSBkdXAoaXRlci0+dmFsdWUpOwogCiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKK3ZvaWQgU2VjY29tcEJyb2tlckNsaWVudDo6Y2FjaGVGaWxlKGNvbnN0IGNo
YXIqIHBhdGhuYW1lKQoreworICAgIGludCBmZCA9IG9wZW4ocGF0aG5hbWUsIE9fUkRPTkxZKTsK
KyAgICBBU1NFUlQoZmQgPj0gMCk7CisgICAgbV9maWxlRGVzY3JpcHRvckNhY2hlLnNldChwYXRo
bmFtZSwgZmQpOworfQorCiB2b2lkIFNlY2NvbXBCcm9rZXI6OmxhdW5jaFByb2Nlc3MoU2VjY29t
cEZpbHRlcnMqIGZpbHRlcnMsIGNvbnN0IFN5c2NhbGxQb2xpY3kmIHBvbGljeSkKIHsKICAgICBz
dGF0aWMgYm9vbCBpbml0aWFsaXplZCA9IGZhbHNlOwotLSAKMi4xLjA=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>256839</attachid>
            <date>2015-07-15 07:59:11 -0700</date>
            <delta_ts>2015-07-15 08:05:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-140068-20150715095803.patch</filename>
            <type>text/plain</type>
            <size>5172</size>
            <attacher name="Michael Catanzaro">mcatanzaro</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg2ODM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYjFlMmRiMTdjNGVjNjcz
NmE2NGFlZmM1NjBjMzljNmNjYjMzNTlkNC4uODRhMTVkYmRhN2Q4YTE3NzM2NzlhNzI4ZmVjYzk5
ODA4ZTFiODI4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDE1LTA3LTE1ICBNaWNo
YWVsIENhdGFuemFybyAgPG1jYXRhbnphcm9AaWdhbGlhLmNvbT4KKworICAgICAgICBbTGludXhd
IFNlY2NvbXBCcm9rZXJDbGllbnQgc2hvdWxkIGNhY2hlIGFyYml0cmFyeSBmaWxlIGRlc2NyaXB0
b3JzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDAw
NjgKKworICAgICAgICBSZXZpZXdlZCBieSDFvWFuIERvYmVyxaFlay4KKworICAgICAgICBJZiBt
YWxsb2MoKSBhdHRlbXB0cyB0byBvcGVuIC9wcm9jL3N5cy92bS9vdmVyY29tbWl0X21lbW9yeSBp
biBhIFNJR1NZUworICAgICAgICBzaWduYWwgaGFuZGxlciwgdGhlIFNlY2NvbXBCcm9rZXIgd2ls
bCBhdHRlbXB0IHRvIHJlY3Vyc2l2ZWx5IGJyb2tlciB0aGUKKyAgICAgICAgb3BlbigpIHN5c2Nh
bGwuIEdlbmVyYWxpemUgdGhlIGV4aXN0aW5nIGNvZGUgdGhhdCBhbHJlYWR5IGhhbmRsZXMgdGhl
CisgICAgICAgIHNpbWlsYXIgY2FzZSB3aGVyZSBtYWxsb2MoKSBvcGVucyAvc3lzL2RldmljZXMv
c3lzdGVtL2NwdS9vbmxpbmUgdG8KKyAgICAgICAgaGFuZGxlIHRoaXMgc2l0dWF0aW9uIGFzIHdl
bGwuCisKKyAgICAgICAgKiBTaGFyZWQvbGludXgvU2VjY29tcEZpbHRlcnMvU2VjY29tcEJyb2tl
ci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNJR1NZU0hhbmRsZXIpOgorICAgICAgICAoV2ViS2l0
OjpTZWNjb21wQnJva2VyQ2xpZW50OjpTZWNjb21wQnJva2VyQ2xpZW50KToKKyAgICAgICAgKFdl
YktpdDo6U2VjY29tcEJyb2tlckNsaWVudDo6flNlY2NvbXBCcm9rZXJDbGllbnQpOgorICAgICAg
ICAoV2ViS2l0OjpTZWNjb21wQnJva2VyQ2xpZW50OjpoYW5kbGVJZk9wZW5pbmdDYWNoZWRGaWxl
KToKKyAgICAgICAgKFdlYktpdDo6U2VjY29tcEJyb2tlckNsaWVudDo6Y2FjaGVGaWxlKToKKyAg
ICAgICAgKFdlYktpdDo6U2VjY29tcEJyb2tlckNsaWVudDo6aGFuZGxlSWZPcGVuaW5nT25saW5l
Q1BVQ291bnQpOiBEZWxldGVkLgorCiAyMDE1LTA3LTE1ICBDaGFuZ1Nlb2sgT2ggIDxjaGFuZ3Nl
b2sub2hAY29sbGFib3JhLmNvbT4KIAogICAgICAgICBbR1RLXSBBY2NlbGVyYXRlZCBjb21wb3Np
dGluZyBpcyBlbmFibGVkIGJ5IE1pbmlCcm93c2VyIGluIFdheWxhbmQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9saW51eC9TZWNjb21wRmlsdGVycy9TZWNjb21wQnJva2VyLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9saW51eC9TZWNjb21wRmlsdGVycy9TZWNjb21wQnJv
a2VyLmNwcAppbmRleCBiNDExZjA5NzUyOTYwNTU0MGQxNmUxNGJhMDU5ZjBlMDliOThhNDU0Li42
MTIyNDg1NjI2MTNiMzdhNGExMTM2OGU2NTMxZDUyOGFiOTQ2NGI0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvbGludXgvU2VjY29tcEZpbHRlcnMvU2VjY29tcEJyb2tlci5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL2xpbnV4L1NlY2NvbXBGaWx0ZXJzL1NlY2NvbXBC
cm9rZXIuY3BwCkBAIC00Niw3ICs0Niw2IEBACiAjZW5kaWYKIAogc3RhdGljIGNvbnN0IHNpemVf
dCBtZXNzYWdlTWF4U2l6ZSA9IDQwOTY7Ci1zdGF0aWMgY29uc3QgY2hhciBvbmxpbmVDUFVDb3Vu
dFBhdGhbXSA9ICIvc3lzL2RldmljZXMvc3lzdGVtL2NwdS9vbmxpbmUiOwogCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKIApAQCAtNTcsMTUgKzU2LDE5IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZGlzcGF0
Y2goU3lzY2FsbCopIGNvbnN0OwogCi0gICAgYm9vbCBoYW5kbGVJZk9wZW5pbmdPbmxpbmVDUFVD
b3VudChtY29udGV4dF90KikgY29uc3Q7CisgICAgYm9vbCBoYW5kbGVJZk9wZW5pbmdDYWNoZWRG
aWxlKG1jb250ZXh0X3QqKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICBTZWNjb21wQnJva2VyQ2xp
ZW50KGludCBzb2NrZXQpOwogCisgICAgdm9pZCBjYWNoZUZpbGUoY29uc3QgY2hhciogcGF0aCk7
CisKICAgICBpbnQgbV9zb2NrZXQ7Ci0gICAgaW50IG1fb25saW5lQ1BVQ291bnRGZDsKIAogICAg
IG11dGFibGUgTXV0ZXggbV9zb2NrZXRMb2NrOworCisgICAgLy8gTWFwcyBmaWxlcyB0aGF0IG1h
eSBiZSByZWFkIGJ5IG1hbGxvYygpIHRvIG9wZW4gZmlsZSBkZXNjcmlwdG9ycy4KKyAgICBIYXNo
TWFwPFN0cmluZywgaW50PiBtX2ZpbGVEZXNjcmlwdG9yQ2FjaGU7CiB9OwogCiBzdGF0aWMgc3Np
emVfdCBzZW5kTWVzc2FnZShpbnQgc29ja2V0LCB2b2lkKiBkYXRhLCBzaXplX3Qgc2l6ZSwgaW50
IGZkID0gLTEpCkBAIC0xNDIsNyArMTQ1LDcgQEAgc3RhdGljIHZvaWQgU0lHU1lTSGFuZGxlcihp
bnQgc2lnbmFsLCBzaWdpbmZvX3QqIGluZm8sIHZvaWQqIGRhdGEpCiAKICAgICBTZWNjb21wQnJv
a2VyQ2xpZW50KiBjbGllbnQgPSAmU2VjY29tcEJyb2tlckNsaWVudDo6c2luZ2xldG9uKCk7CiAK
LSAgICBpZiAoY2xpZW50LT5oYW5kbGVJZk9wZW5pbmdPbmxpbmVDUFVDb3VudCgmdWNvbnRleHQt
PnVjX21jb250ZXh0KSkKKyAgICBpZiAoY2xpZW50LT5oYW5kbGVJZk9wZW5pbmdDYWNoZWRGaWxl
KCZ1Y29udGV4dC0+dWNfbWNvbnRleHQpKQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBjcmVh
dGVGcm9tQ29udGV4dCBtaWdodCByZXR1cm4gYSBudWxscHRyIGlmIGl0IGlzIGFibGUgdG8gcmVz
b2x2ZSB0aGUKQEAgLTE4MywxNSArMTg2LDE4IEBAIFNlY2NvbXBCcm9rZXJDbGllbnQmIFNlY2Nv
bXBCcm9rZXJDbGllbnQ6OnNpbmdsZXRvbihpbnQgc29ja2V0KQogCiBTZWNjb21wQnJva2VyQ2xp
ZW50OjpTZWNjb21wQnJva2VyQ2xpZW50KGludCBzb2NrZXQpCiAgICAgOiBtX3NvY2tldChzb2Nr
ZXQpCi0gICAgLCBtX29ubGluZUNQVUNvdW50RmQob3BlbihvbmxpbmVDUFVDb3VudFBhdGgsIE9f
UkRPTkxZKSkKIHsKLSAgICBBU1NFUlQobV9zb2NrZXQgPj0gMCAmJiBtX29ubGluZUNQVUNvdW50
RmQgPj0gMCk7CisgICAgQVNTRVJUKG1fc29ja2V0ID49IDApOworCisgICAgY2FjaGVGaWxlKCIv
cHJvYy9zeXMvdm0vb3ZlcmNvbW1pdF9tZW1vcnkiKTsKKyAgICBjYWNoZUZpbGUoIi9zeXMvZGV2
aWNlcy9zeXN0ZW0vY3B1L29ubGluZSIpOwogfQogCiBTZWNjb21wQnJva2VyQ2xpZW50Ojp+U2Vj
Y29tcEJyb2tlckNsaWVudCgpCiB7CisgICAgZm9yIChhdXRvIHBhaXIgOiBtX2ZpbGVEZXNjcmlw
dG9yQ2FjaGUpCisgICAgICAgIGNsb3NlKHBhaXIudmFsdWUpOwogICAgIGNsb3NlKG1fc29ja2V0
KTsKLSAgICBjbG9zZShtX29ubGluZUNQVUNvdW50RmQpOwogfQogCiB2b2lkIFNlY2NvbXBCcm9r
ZXJDbGllbnQ6OmRpc3BhdGNoKFN5c2NhbGwqIHN5c2NhbGwpIGNvbnN0CkBAIC0yMjcsMjUgKzIz
MywzNSBAQCB2b2lkIFNlY2NvbXBCcm9rZXJDbGllbnQ6OmRpc3BhdGNoKFN5c2NhbGwqIHN5c2Nh
bGwpIGNvbnN0CiAgICAgc3lzY2FsbC0+c2V0UmVzdWx0KHJlc3VsdC5nZXQoKSk7CiB9CiAKLWJv
b2wgU2VjY29tcEJyb2tlckNsaWVudDo6aGFuZGxlSWZPcGVuaW5nT25saW5lQ1BVQ291bnQobWNv
bnRleHRfdCogY29udGV4dCkgY29uc3QKK2Jvb2wgU2VjY29tcEJyb2tlckNsaWVudDo6aGFuZGxl
SWZPcGVuaW5nQ2FjaGVkRmlsZShtY29udGV4dF90KiBjb250ZXh0KSBjb25zdAogewogICAgIGlm
IChjb250ZXh0LT5ncmVnc1tSRUdfU1lTQ0FMTF0gIT0gX19OUl9vcGVuKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKICAgICBjb25zdCBjaGFyICpwYXRoID0gcmVpbnRlcnByZXRfY2FzdDxjaGFy
Kj4oY29udGV4dC0+Z3JlZ3NbUkVHX0FSRzBdKTsKLSAgICBpZiAoc3RyY21wKG9ubGluZUNQVUNv
dW50UGF0aCwgcGF0aCkpCisKKyAgICBhdXRvIGl0ZXIgPSBtX2ZpbGVEZXNjcmlwdG9yQ2FjaGUu
ZmluZChwYXRoKTsKKyAgICBpZiAoaXRlciA9PSBtX2ZpbGVEZXNjcmlwdG9yQ2FjaGUuZW5kKCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIC8vIE1hbGxvYyB3aWxsIGV2ZW50dWFsbHkg
Y2hlY2sgdGhlIG51bWJlciBvZiBvbmxpbmUgQ1BVcyAoaS5lIGJlaW5nCiAgICAgLy8gc2NoZWR1
bGVkKSBwcmVzZW50IG9uIHRoZSBzeXN0ZW0gYnkgb3BlbmluZyBhIHNwZWNpYWwgZmlsZS4gSWYg
aXQgZG9lcwogICAgIC8vIHRoYXQgaW4gdGhlIG1pZGRsZSBvZiB0aGUgU0lHU1lTIHNpZ25hbCBo
YW5kbGVyLCBpdCBtaWdodCB0cmlnZ2VyIGEKLSAgICAvLyByZWN1cnNpdmUgYXR0ZW1wdCBvZiBw
cm94eWluZyB0aGUgb3BlbigpIHN5c2NhbGwgdG8gdGhlIGJyb2tlci4KLSAgICAvLyBCZWNhdXNl
IG9mIHRoYXQsIHdlIGNhY2hlIHRoaXMgcmVzb3VyY2UuCi0gICAgY29udGV4dC0+Z3JlZ3NbUkVH
X1NZU0NBTExdID0gZHVwKG1fb25saW5lQ1BVQ291bnRGZCk7CisgICAgLy8gcmVjdXJzaXZlIGF0
dGVtcHQgb2YgcHJveHlpbmcgdGhlIG9wZW4oKSBzeXNjYWxsIHRvIHRoZSBicm9rZXIuIFRoZSBz
YW1lCisgICAgLy8gcHJvYmxlbSBvY2N1cnMgaWYgbWFsbG9jKCkgY2hlY2tzIHRoZSBtZW1vcnkg
b3ZlcmNvbW1pdCBwb2xpY3kuIEJlY2F1c2UKKyAgICAvLyBvZiB0aGF0LCB3ZSBjYWNoZSB0aGVz
ZSByZXNvdXJjZXMuCisgICAgY29udGV4dC0+Z3JlZ3NbUkVHX1NZU0NBTExdID0gZHVwKGl0ZXIt
PnZhbHVlKTsKIAogICAgIHJldHVybiB0cnVlOwogfQogCit2b2lkIFNlY2NvbXBCcm9rZXJDbGll
bnQ6OmNhY2hlRmlsZShjb25zdCBjaGFyKiBwYXRoKQoreworICAgIGludCBmZCA9IG9wZW4ocGF0
aCwgT19SRE9OTFkpOworICAgIEFTU0VSVChmZCA+PSAwKTsKKyAgICBtX2ZpbGVEZXNjcmlwdG9y
Q2FjaGUuc2V0KHBhdGgsIGZkKTsKK30KKwogdm9pZCBTZWNjb21wQnJva2VyOjpsYXVuY2hQcm9j
ZXNzKFNlY2NvbXBGaWx0ZXJzKiBmaWx0ZXJzLCBjb25zdCBTeXNjYWxsUG9saWN5JiBwb2xpY3kp
CiB7CiAgICAgc3RhdGljIGJvb2wgaW5pdGlhbGl6ZWQgPSBmYWxzZTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>256840</attachid>
            <date>2015-07-15 08:05:47 -0700</date>
            <delta_ts>2015-07-15 09:02:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-140068-20150715100440.patch</filename>
            <type>text/plain</type>
            <size>5170</size>
            <attacher name="Michael Catanzaro">mcatanzaro</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg2ODM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYjFlMmRiMTdjNGVjNjcz
NmE2NGFlZmM1NjBjMzljNmNjYjMzNTlkNC4uODRhMTVkYmRhN2Q4YTE3NzM2NzlhNzI4ZmVjYzk5
ODA4ZTFiODI4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDE1LTA3LTE1ICBNaWNo
YWVsIENhdGFuemFybyAgPG1jYXRhbnphcm9AaWdhbGlhLmNvbT4KKworICAgICAgICBbTGludXhd
IFNlY2NvbXBCcm9rZXJDbGllbnQgc2hvdWxkIGNhY2hlIGFyYml0cmFyeSBmaWxlIGRlc2NyaXB0
b3JzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDAw
NjgKKworICAgICAgICBSZXZpZXdlZCBieSDFvWFuIERvYmVyxaFlay4KKworICAgICAgICBJZiBt
YWxsb2MoKSBhdHRlbXB0cyB0byBvcGVuIC9wcm9jL3N5cy92bS9vdmVyY29tbWl0X21lbW9yeSBp
biBhIFNJR1NZUworICAgICAgICBzaWduYWwgaGFuZGxlciwgdGhlIFNlY2NvbXBCcm9rZXIgd2ls
bCBhdHRlbXB0IHRvIHJlY3Vyc2l2ZWx5IGJyb2tlciB0aGUKKyAgICAgICAgb3BlbigpIHN5c2Nh
bGwuIEdlbmVyYWxpemUgdGhlIGV4aXN0aW5nIGNvZGUgdGhhdCBhbHJlYWR5IGhhbmRsZXMgdGhl
CisgICAgICAgIHNpbWlsYXIgY2FzZSB3aGVyZSBtYWxsb2MoKSBvcGVucyAvc3lzL2RldmljZXMv
c3lzdGVtL2NwdS9vbmxpbmUgdG8KKyAgICAgICAgaGFuZGxlIHRoaXMgc2l0dWF0aW9uIGFzIHdl
bGwuCisKKyAgICAgICAgKiBTaGFyZWQvbGludXgvU2VjY29tcEZpbHRlcnMvU2VjY29tcEJyb2tl
ci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNJR1NZU0hhbmRsZXIpOgorICAgICAgICAoV2ViS2l0
OjpTZWNjb21wQnJva2VyQ2xpZW50OjpTZWNjb21wQnJva2VyQ2xpZW50KToKKyAgICAgICAgKFdl
YktpdDo6U2VjY29tcEJyb2tlckNsaWVudDo6flNlY2NvbXBCcm9rZXJDbGllbnQpOgorICAgICAg
ICAoV2ViS2l0OjpTZWNjb21wQnJva2VyQ2xpZW50OjpoYW5kbGVJZk9wZW5pbmdDYWNoZWRGaWxl
KToKKyAgICAgICAgKFdlYktpdDo6U2VjY29tcEJyb2tlckNsaWVudDo6Y2FjaGVGaWxlKToKKyAg
ICAgICAgKFdlYktpdDo6U2VjY29tcEJyb2tlckNsaWVudDo6aGFuZGxlSWZPcGVuaW5nT25saW5l
Q1BVQ291bnQpOiBEZWxldGVkLgorCiAyMDE1LTA3LTE1ICBDaGFuZ1Nlb2sgT2ggIDxjaGFuZ3Nl
b2sub2hAY29sbGFib3JhLmNvbT4KIAogICAgICAgICBbR1RLXSBBY2NlbGVyYXRlZCBjb21wb3Np
dGluZyBpcyBlbmFibGVkIGJ5IE1pbmlCcm93c2VyIGluIFdheWxhbmQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9saW51eC9TZWNjb21wRmlsdGVycy9TZWNjb21wQnJva2VyLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9saW51eC9TZWNjb21wRmlsdGVycy9TZWNjb21wQnJv
a2VyLmNwcAppbmRleCBiNDExZjA5NzUyOTYwNTU0MGQxNmUxNGJhMDU5ZjBlMDliOThhNDU0Li41
OTFmMDg5YTdiMTEzNjZmNmI1YjcxYWQ3M2RhYzhlOTQ5MWViM2E4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvbGludXgvU2VjY29tcEZpbHRlcnMvU2VjY29tcEJyb2tlci5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL2xpbnV4L1NlY2NvbXBGaWx0ZXJzL1NlY2NvbXBC
cm9rZXIuY3BwCkBAIC00Niw3ICs0Niw2IEBACiAjZW5kaWYKIAogc3RhdGljIGNvbnN0IHNpemVf
dCBtZXNzYWdlTWF4U2l6ZSA9IDQwOTY7Ci1zdGF0aWMgY29uc3QgY2hhciBvbmxpbmVDUFVDb3Vu
dFBhdGhbXSA9ICIvc3lzL2RldmljZXMvc3lzdGVtL2NwdS9vbmxpbmUiOwogCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKIApAQCAtNTcsMTUgKzU2LDE5IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZGlzcGF0
Y2goU3lzY2FsbCopIGNvbnN0OwogCi0gICAgYm9vbCBoYW5kbGVJZk9wZW5pbmdPbmxpbmVDUFVD
b3VudChtY29udGV4dF90KikgY29uc3Q7CisgICAgYm9vbCBoYW5kbGVJZk9wZW5pbmdDYWNoZWRG
aWxlKG1jb250ZXh0X3QqKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICBTZWNjb21wQnJva2VyQ2xp
ZW50KGludCBzb2NrZXQpOwogCisgICAgdm9pZCBjYWNoZUZpbGUoY29uc3QgY2hhciogcGF0aCk7
CisKICAgICBpbnQgbV9zb2NrZXQ7Ci0gICAgaW50IG1fb25saW5lQ1BVQ291bnRGZDsKIAogICAg
IG11dGFibGUgTXV0ZXggbV9zb2NrZXRMb2NrOworCisgICAgLy8gTWFwcyBmaWxlcyB0aGF0IG1h
eSBiZSByZWFkIGJ5IG1hbGxvYygpIHRvIG9wZW4gZmlsZSBkZXNjcmlwdG9ycy4KKyAgICBIYXNo
TWFwPFN0cmluZywgaW50PiBtX2ZpbGVEZXNjcmlwdG9yQ2FjaGU7CiB9OwogCiBzdGF0aWMgc3Np
emVfdCBzZW5kTWVzc2FnZShpbnQgc29ja2V0LCB2b2lkKiBkYXRhLCBzaXplX3Qgc2l6ZSwgaW50
IGZkID0gLTEpCkBAIC0xNDIsNyArMTQ1LDcgQEAgc3RhdGljIHZvaWQgU0lHU1lTSGFuZGxlcihp
bnQgc2lnbmFsLCBzaWdpbmZvX3QqIGluZm8sIHZvaWQqIGRhdGEpCiAKICAgICBTZWNjb21wQnJv
a2VyQ2xpZW50KiBjbGllbnQgPSAmU2VjY29tcEJyb2tlckNsaWVudDo6c2luZ2xldG9uKCk7CiAK
LSAgICBpZiAoY2xpZW50LT5oYW5kbGVJZk9wZW5pbmdPbmxpbmVDUFVDb3VudCgmdWNvbnRleHQt
PnVjX21jb250ZXh0KSkKKyAgICBpZiAoY2xpZW50LT5oYW5kbGVJZk9wZW5pbmdDYWNoZWRGaWxl
KCZ1Y29udGV4dC0+dWNfbWNvbnRleHQpKQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBjcmVh
dGVGcm9tQ29udGV4dCBtaWdodCByZXR1cm4gYSBudWxscHRyIGlmIGl0IGlzIGFibGUgdG8gcmVz
b2x2ZSB0aGUKQEAgLTE4MywxNSArMTg2LDE4IEBAIFNlY2NvbXBCcm9rZXJDbGllbnQmIFNlY2Nv
bXBCcm9rZXJDbGllbnQ6OnNpbmdsZXRvbihpbnQgc29ja2V0KQogCiBTZWNjb21wQnJva2VyQ2xp
ZW50OjpTZWNjb21wQnJva2VyQ2xpZW50KGludCBzb2NrZXQpCiAgICAgOiBtX3NvY2tldChzb2Nr
ZXQpCi0gICAgLCBtX29ubGluZUNQVUNvdW50RmQob3BlbihvbmxpbmVDUFVDb3VudFBhdGgsIE9f
UkRPTkxZKSkKIHsKLSAgICBBU1NFUlQobV9zb2NrZXQgPj0gMCAmJiBtX29ubGluZUNQVUNvdW50
RmQgPj0gMCk7CisgICAgQVNTRVJUKG1fc29ja2V0ID49IDApOworCisgICAgY2FjaGVGaWxlKCIv
cHJvYy9zeXMvdm0vb3ZlcmNvbW1pdF9tZW1vcnkiKTsKKyAgICBjYWNoZUZpbGUoIi9zeXMvZGV2
aWNlcy9zeXN0ZW0vY3B1L29ubGluZSIpOwogfQogCiBTZWNjb21wQnJva2VyQ2xpZW50Ojp+U2Vj
Y29tcEJyb2tlckNsaWVudCgpCiB7CisgICAgZm9yIChpbnQgZmQgOiBtX2ZpbGVEZXNjcmlwdG9y
Q2FjaGUudmFsdWVzKCkpCisgICAgICAgIGNsb3NlKGZkKTsKICAgICBjbG9zZShtX3NvY2tldCk7
Ci0gICAgY2xvc2UobV9vbmxpbmVDUFVDb3VudEZkKTsKIH0KIAogdm9pZCBTZWNjb21wQnJva2Vy
Q2xpZW50OjpkaXNwYXRjaChTeXNjYWxsKiBzeXNjYWxsKSBjb25zdApAQCAtMjI3LDI1ICsyMzMs
MzUgQEAgdm9pZCBTZWNjb21wQnJva2VyQ2xpZW50OjpkaXNwYXRjaChTeXNjYWxsKiBzeXNjYWxs
KSBjb25zdAogICAgIHN5c2NhbGwtPnNldFJlc3VsdChyZXN1bHQuZ2V0KCkpOwogfQogCi1ib29s
IFNlY2NvbXBCcm9rZXJDbGllbnQ6OmhhbmRsZUlmT3BlbmluZ09ubGluZUNQVUNvdW50KG1jb250
ZXh0X3QqIGNvbnRleHQpIGNvbnN0Citib29sIFNlY2NvbXBCcm9rZXJDbGllbnQ6OmhhbmRsZUlm
T3BlbmluZ0NhY2hlZEZpbGUobWNvbnRleHRfdCogY29udGV4dCkgY29uc3QKIHsKICAgICBpZiAo
Y29udGV4dC0+Z3JlZ3NbUkVHX1NZU0NBTExdICE9IF9fTlJfb3BlbikKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCiAgICAgY29uc3QgY2hhciAqcGF0aCA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+
KGNvbnRleHQtPmdyZWdzW1JFR19BUkcwXSk7Ci0gICAgaWYgKHN0cmNtcChvbmxpbmVDUFVDb3Vu
dFBhdGgsIHBhdGgpKQorCisgICAgYXV0byBpdGVyID0gbV9maWxlRGVzY3JpcHRvckNhY2hlLmZp
bmQocGF0aCk7CisgICAgaWYgKGl0ZXIgPT0gbV9maWxlRGVzY3JpcHRvckNhY2hlLmVuZCgpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAvLyBNYWxsb2Mgd2lsbCBldmVudHVhbGx5IGNo
ZWNrIHRoZSBudW1iZXIgb2Ygb25saW5lIENQVXMgKGkuZSBiZWluZwogICAgIC8vIHNjaGVkdWxl
ZCkgcHJlc2VudCBvbiB0aGUgc3lzdGVtIGJ5IG9wZW5pbmcgYSBzcGVjaWFsIGZpbGUuIElmIGl0
IGRvZXMKICAgICAvLyB0aGF0IGluIHRoZSBtaWRkbGUgb2YgdGhlIFNJR1NZUyBzaWduYWwgaGFu
ZGxlciwgaXQgbWlnaHQgdHJpZ2dlciBhCi0gICAgLy8gcmVjdXJzaXZlIGF0dGVtcHQgb2YgcHJv
eHlpbmcgdGhlIG9wZW4oKSBzeXNjYWxsIHRvIHRoZSBicm9rZXIuCi0gICAgLy8gQmVjYXVzZSBv
ZiB0aGF0LCB3ZSBjYWNoZSB0aGlzIHJlc291cmNlLgotICAgIGNvbnRleHQtPmdyZWdzW1JFR19T
WVNDQUxMXSA9IGR1cChtX29ubGluZUNQVUNvdW50RmQpOworICAgIC8vIHJlY3Vyc2l2ZSBhdHRl
bXB0IG9mIHByb3h5aW5nIHRoZSBvcGVuKCkgc3lzY2FsbCB0byB0aGUgYnJva2VyLiBUaGUgc2Ft
ZQorICAgIC8vIHByb2JsZW0gb2NjdXJzIGlmIG1hbGxvYygpIGNoZWNrcyB0aGUgbWVtb3J5IG92
ZXJjb21taXQgcG9saWN5LiBCZWNhdXNlCisgICAgLy8gb2YgdGhhdCwgd2UgY2FjaGUgdGhlc2Ug
cmVzb3VyY2VzLgorICAgIGNvbnRleHQtPmdyZWdzW1JFR19TWVNDQUxMXSA9IGR1cChpdGVyLT52
YWx1ZSk7CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAordm9pZCBTZWNjb21wQnJva2VyQ2xpZW50
OjpjYWNoZUZpbGUoY29uc3QgY2hhciogcGF0aCkKK3sKKyAgICBpbnQgZmQgPSBvcGVuKHBhdGgs
IE9fUkRPTkxZKTsKKyAgICBBU1NFUlQoZmQgPj0gMCk7CisgICAgbV9maWxlRGVzY3JpcHRvckNh
Y2hlLnNldChwYXRoLCBmZCk7Cit9CisKIHZvaWQgU2VjY29tcEJyb2tlcjo6bGF1bmNoUHJvY2Vz
cyhTZWNjb21wRmlsdGVycyogZmlsdGVycywgY29uc3QgU3lzY2FsbFBvbGljeSYgcG9saWN5KQog
ewogICAgIHN0YXRpYyBib29sIGluaXRpYWxpemVkID0gZmFsc2U7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>