<?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>151881</bug_id>
          
          <creation_ts>2015-12-04 13:21:07 -0800</creation_ts>
          <short_desc>TestNetscapePlugIn: Fix leaks found by static analyzer</short_desc>
          <delta_ts>2015-12-07 05:50:34 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>Other</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="David Kilzer (:ddkilzer)">ddkilzer</reporter>
          <assigned_to name="David Kilzer (:ddkilzer)">ddkilzer</assigned_to>
          <cc>andersca</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>joepeck</cc>
    
    <cc>lforschler</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1146371</commentid>
    <comment_count>0</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2015-12-04 13:21:07 -0800</bug_when>
    <thetext>Fix the following leaks found by the static analyzer in the TestNetscapePlugIn project:

    DumpRenderTree/TestNetscapePlugIn/PluginObject.cpp:808:16: warning: Potential leak of memory pointed to by &apos;path&apos;
            return false;
                   ^~~~~
    DumpRenderTree/TestNetscapePlugIn/PluginObject.cpp:808:16: warning: Potential leak of memory pointed to by &apos;target&apos;
            return false;
                   ^~~~~
    DumpRenderTree/TestNetscapePlugIn/PluginObject.cpp:808:16: warning: Potential leak of memory pointed to by &apos;url&apos;
            return false;
                   ^~~~~

The toCString() method returns malloc()ed memory, and the early returns in testPostURLFile() don&apos;t call free() on them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1146374</commentid>
    <comment_count>1</comment_count>
      <attachid>266649</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2015-12-04 13:24:10 -0800</bug_when>
    <thetext>Created attachment 266649
Patch v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1146375</commentid>
    <comment_count>2</comment_count>
      <attachid>266649</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2015-12-04 13:30:30 -0800</bug_when>
    <thetext>Comment on attachment 266649
Patch v1

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

&gt; Tools/DumpRenderTree/TestNetscapePlugIn/PluginObject.cpp:790
&gt; +typedef std::unique_ptr&lt;char, void (*)(void*)&gt; CStringBuffer;
&gt; +static CStringBuffer toCString(const NPString&amp; string)
&gt;  {
&gt; -    char* result = static_cast&lt;char*&gt;(malloc(string.UTF8Length + 1));
&gt; -    memcpy(result, string.UTF8Characters, string.UTF8Length);
&gt; -    result[string.UTF8Length] = &apos;\0&apos;;
&gt; +    size_t length = string.UTF8Length;
&gt; +    char* buffer = static_cast&lt;char*&gt;(malloc(length + 1));
&gt; +    if (!buffer)
&gt; +        return CStringBuffer(nullptr, free);
&gt;  
&gt; -    return result;
&gt; +    memcpy(buffer, string.UTF8Characters, length);
&gt; +    buffer[length] = &apos;\0&apos;;
&gt; +
&gt; +    return CStringBuffer(buffer, free);

I don&apos;t think there&apos;s a need for this to use free, can just use std::unique_ptr&lt;char[]&gt; (and std::make_unique).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1146396</commentid>
    <comment_count>3</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2015-12-04 14:08:38 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; Comment on attachment 266649 [details]
&gt; Patch v1
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=266649&amp;action=review
&gt; 
&gt; &gt; Tools/DumpRenderTree/TestNetscapePlugIn/PluginObject.cpp:790
&gt; &gt; +typedef std::unique_ptr&lt;char, void (*)(void*)&gt; CStringBuffer;
&gt; &gt; +static CStringBuffer toCString(const NPString&amp; string)
&gt; &gt;  {
&gt; &gt; -    char* result = static_cast&lt;char*&gt;(malloc(string.UTF8Length + 1));
&gt; &gt; -    memcpy(result, string.UTF8Characters, string.UTF8Length);
&gt; &gt; -    result[string.UTF8Length] = &apos;\0&apos;;
&gt; &gt; +    size_t length = string.UTF8Length;
&gt; &gt; +    char* buffer = static_cast&lt;char*&gt;(malloc(length + 1));
&gt; &gt; +    if (!buffer)
&gt; &gt; +        return CStringBuffer(nullptr, free);
&gt; &gt;  
&gt; &gt; -    return result;
&gt; &gt; +    memcpy(buffer, string.UTF8Characters, length);
&gt; &gt; +    buffer[length] = &apos;\0&apos;;
&gt; &gt; +
&gt; &gt; +    return CStringBuffer(buffer, free);
&gt; 
&gt; I don&apos;t think there&apos;s a need for this to use free, can just use
&gt; std::unique_ptr&lt;char[]&gt; (and std::make_unique).

The only downside here is that std::make_unique&lt;&gt; requires &lt;WTF/StdLibExtras.h&gt;, and based on the project sources, I don&apos;t think TestNetscapePlugin should depend on WTF.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1146398</commentid>
    <comment_count>4</comment_count>
      <attachid>266649</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2015-12-04 14:10:39 -0800</bug_when>
    <thetext>Comment on attachment 266649
Patch v1

then just use std::unique_ptr&lt;char[]&gt;(new char[string.UTF8Length + 1]);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1146438</commentid>
    <comment_count>5</comment_count>
      <attachid>266669</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2015-12-04 15:34:41 -0800</bug_when>
    <thetext>Created attachment 266669
Patch v2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1146737</commentid>
    <comment_count>6</comment_count>
      <attachid>266669</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-12-06 18:40:27 -0800</bug_when>
    <thetext>Comment on attachment 266669
Patch v2

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

&gt; Tools/DumpRenderTree/TestNetscapePlugIn/PluginObject.cpp:977
&gt; +    std::unique_ptr&lt;char[]&gt; message(nullptr);

No need for the explicit nullptr here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1146739</commentid>
    <comment_count>7</comment_count>
      <attachid>266669</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-12-06 19:27:49 -0800</bug_when>
    <thetext>Comment on attachment 266669
Patch v2

Clearing flags on attachment: 266669

Committed r193607: &lt;http://trac.webkit.org/changeset/193607&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1146740</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-12-06 19:27:54 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1146836</commentid>
    <comment_count>9</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2015-12-07 05:50:34 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; Comment on attachment 266669 [details]
&gt; Patch v2
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=266669&amp;action=review
&gt; 
&gt; &gt; Tools/DumpRenderTree/TestNetscapePlugIn/PluginObject.cpp:977
&gt; &gt; +    std::unique_ptr&lt;char[]&gt; message(nullptr);
&gt; 
&gt; No need for the explicit nullptr here.

Fixed in r193623:  &lt;http://trac.webkit.org/r193623&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>266649</attachid>
            <date>2015-12-04 13:24:10 -0800</date>
            <delta_ts>2015-12-04 15:34:39 -0800</delta_ts>
            <desc>Patch v1</desc>
            <filename>bug-151881-20151204132343.patch</filename>
            <type>text/plain</type>
            <size>5032</size>
            <attacher name="David Kilzer (:ddkilzer)">ddkilzer</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkzMzkwCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMjc2MWI3Y2NjYzNkOTIzNWNjMzQyNDFmNzI5YWFlYjlh
ZTI0ZjcxNy4uN2FiMjFkZTcyNDg1M2NiYTE2MjA2NTY2MjMxZTE1YTExNDY1N2FkMyAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMw
IEBACisyMDE1LTEyLTA0ICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CisKKyAg
ICAgICAgVGVzdE5ldHNjYXBlUGx1Z0luOiBGaXggbGVha3MgZm91bmQgYnkgc3RhdGljIGFuYWx5
emVyCisgICAgICAgIDxodHRwOi8vd2Via2l0Lm9yZy9iLzE1MTg4MT4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGaXhlcyB0aGUgZm9sbG93aW5nIGxl
YWtzIGZvdW5kIGJ5IHRoZSBzdGF0aWMgYW5hbHl6ZXI6CisgICAgICAgICAgICBEdW1wUmVuZGVy
VHJlZS9UZXN0TmV0c2NhcGVQbHVnSW4vUGx1Z2luT2JqZWN0LmNwcDo4MDg6MTY6IHdhcm5pbmc6
IFBvdGVudGlhbCBsZWFrIG9mIG1lbW9yeSBwb2ludGVkIHRvIGJ5ICdwYXRoJworICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgICAgICAgICBefn5+
fgorICAgICAgICAgICAgRHVtcFJlbmRlclRyZWUvVGVzdE5ldHNjYXBlUGx1Z0luL1BsdWdpbk9i
amVjdC5jcHA6ODA4OjE2OiB3YXJuaW5nOiBQb3RlbnRpYWwgbGVhayBvZiBtZW1vcnkgcG9pbnRl
ZCB0byBieSAndGFyZ2V0JworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICBefn5+fgorICAgICAgICAgICAgRHVtcFJlbmRlclRyZWUv
VGVzdE5ldHNjYXBlUGx1Z0luL1BsdWdpbk9iamVjdC5jcHA6ODA4OjE2OiB3YXJuaW5nOiBQb3Rl
bnRpYWwgbGVhayBvZiBtZW1vcnkgcG9pbnRlZCB0byBieSAndXJsJworICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgICAgICAgICBefn5+fgorCisg
ICAgICAgICogRHVtcFJlbmRlclRyZWUvVGVzdE5ldHNjYXBlUGx1Z0luL1BsdWdpbk9iamVjdC5j
cHA6CisgICAgICAgICh0eXBlZGVmIENTdHJpbmdCdWZmZXIpOiBEZWNsYXJlIENTdHJpbmdCdWZm
ZXIgdHlwZSB0byBtYWtlIGl0CisgICAgICAgIGhhcmRlciB0byBsZWFrIG1lbW9yeSBhbGxvY2F0
ZWQgYnkgbWFsbG9jKCkuCisgICAgICAgICh0b0NTdHJpbmcpOiBTd2l0Y2ggdG8gcmV0dXJuaW5n
IENTdHJpbmdCdWZmZXIuIEFkZCBlYXJseSByZXR1cm4KKyAgICAgICAgaWYgbWFsbG9jKCkgZmFp
bHMuCisgICAgICAgICh0ZXN0UG9zdFVSTEZpbGUpOiBTd2l0Y2ggdG8gdXNpbmcgQ1N0cmluZ0J1
ZmZlci4gIE1ha2Ugc3VyZSB0bworICAgICAgICBjYWxsIGZjbG9zZSgpIG9uIGZpbGVoYW5kbGUs
IGV2ZW4gZm9yIGFuIGVhcmx5IHJldHVybi4KKyAgICAgICAgKHRlc3RTZXRTdGF0dXMpOiBTd2l0
Y2ggdG8gdXNpbmcgQ1N0cmluZ0J1ZmZlci4KKwogMjAxNS0xMi0wMyAgRGF2aWQgS2lsemVyICA8
ZGRraWx6ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIER1bXBSZW5kZXJUcmVlOiBVc2UtYWZ0ZXIt
ZnJlZSBpbiBjcmVhdGVCaXRtYXBDb250ZXh0KCkgaW4gUGl4ZWxEdW1wU3VwcG9ydE1hYy5tbQpk
aWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdE5ldHNjYXBlUGx1Z0luL1BsdWdp
bk9iamVjdC5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9UZXN0TmV0c2NhcGVQbHVnSW4vUGx1
Z2luT2JqZWN0LmNwcAppbmRleCBhZTkwMTY4NDgxYzE2MGFlNWU0MmJhY2ZhOTVkYjdhNzFjZmEz
MjE0Li45NzBmYTY3OWE1YTBjODZjNjhmN2MxYjkzNmVmYmFiNWVmNmM1ZTUxIDEwMDY0NAotLS0g
YS9Ub29scy9EdW1wUmVuZGVyVHJlZS9UZXN0TmV0c2NhcGVQbHVnSW4vUGx1Z2luT2JqZWN0LmNw
cAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9UZXN0TmV0c2NhcGVQbHVnSW4vUGx1Z2luT2Jq
ZWN0LmNwcApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIlBsdWdpblRlc3QuaCIKICNpbmNs
dWRlICJUZXN0T2JqZWN0LmgiCiAjaW5jbHVkZSA8YXNzZXJ0Lmg+CisjaW5jbHVkZSA8bWVtb3J5
PgogI2luY2x1ZGUgPHN0ZGFyZy5oPgogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8c3Rk
bGliLmg+CkBAIC03NzUsMTMgKzc3NiwxOCBAQCBzdGF0aWMgYm9vbCB0ZXN0R2V0UHJvcGVydHlS
ZXR1cm5WYWx1ZShQbHVnaW5PYmplY3QqIG9iaiwgY29uc3QgTlBWYXJpYW50KiBhcmdzLAogICAg
IHJldHVybiB0cnVlOwogfQogCi1zdGF0aWMgY2hhciogdG9DU3RyaW5nKGNvbnN0IE5QU3RyaW5n
JiBzdHJpbmcpCit0eXBlZGVmIHN0ZDo6dW5pcXVlX3B0cjxjaGFyLCB2b2lkICgqKSh2b2lkKik+
IENTdHJpbmdCdWZmZXI7CitzdGF0aWMgQ1N0cmluZ0J1ZmZlciB0b0NTdHJpbmcoY29uc3QgTlBT
dHJpbmcmIHN0cmluZykKIHsKLSAgICBjaGFyKiByZXN1bHQgPSBzdGF0aWNfY2FzdDxjaGFyKj4o
bWFsbG9jKHN0cmluZy5VVEY4TGVuZ3RoICsgMSkpOwotICAgIG1lbWNweShyZXN1bHQsIHN0cmlu
Zy5VVEY4Q2hhcmFjdGVycywgc3RyaW5nLlVURjhMZW5ndGgpOwotICAgIHJlc3VsdFtzdHJpbmcu
VVRGOExlbmd0aF0gPSAnXDAnOworICAgIHNpemVfdCBsZW5ndGggPSBzdHJpbmcuVVRGOExlbmd0
aDsKKyAgICBjaGFyKiBidWZmZXIgPSBzdGF0aWNfY2FzdDxjaGFyKj4obWFsbG9jKGxlbmd0aCAr
IDEpKTsKKyAgICBpZiAoIWJ1ZmZlcikKKyAgICAgICAgcmV0dXJuIENTdHJpbmdCdWZmZXIobnVs
bHB0ciwgZnJlZSk7CiAKLSAgICByZXR1cm4gcmVzdWx0OworICAgIG1lbWNweShidWZmZXIsIHN0
cmluZy5VVEY4Q2hhcmFjdGVycywgbGVuZ3RoKTsKKyAgICBidWZmZXJbbGVuZ3RoXSA9ICdcMCc7
CisKKyAgICByZXR1cm4gQ1N0cmluZ0J1ZmZlcihidWZmZXIsIGZyZWUpOwogfQogCiBzdGF0aWMg
Ym9vbCB0ZXN0UG9zdFVSTEZpbGUoUGx1Z2luT2JqZWN0KiBvYmosIGNvbnN0IE5QVmFyaWFudCog
YXJncywgdWludDMyX3QgYXJnQ291bnQsIE5QVmFyaWFudCogcmVzdWx0KQpAQCAtNzkwLDMwICs3
OTYsMjcgQEAgc3RhdGljIGJvb2wgdGVzdFBvc3RVUkxGaWxlKFBsdWdpbk9iamVjdCogb2JqLCBj
b25zdCBOUFZhcmlhbnQqIGFyZ3MsIHVpbnQzMl90IGEKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
CiAgICAgTlBTdHJpbmcgdXJsU3RyaW5nID0gTlBWQVJJQU5UX1RPX1NUUklORyhhcmdzWzBdKTsK
LSAgICBjaGFyKiB1cmwgPSB0b0NTdHJpbmcodXJsU3RyaW5nKTsKKyAgICBhdXRvIHVybCA9IHRv
Q1N0cmluZyh1cmxTdHJpbmcpOwogCiAgICAgTlBTdHJpbmcgdGFyZ2V0U3RyaW5nID0gTlBWQVJJ
QU5UX1RPX1NUUklORyhhcmdzWzFdKTsKLSAgICBjaGFyKiB0YXJnZXQgPSB0b0NTdHJpbmcodGFy
Z2V0U3RyaW5nKTsKKyAgICBhdXRvIHRhcmdldCA9IHRvQ1N0cmluZyh0YXJnZXRTdHJpbmcpOwog
CiAgICAgTlBTdHJpbmcgcGF0aFN0cmluZyA9IE5QVkFSSUFOVF9UT19TVFJJTkcoYXJnc1syXSk7
Ci0gICAgY2hhciogcGF0aCA9IHRvQ1N0cmluZyhwYXRoU3RyaW5nKTsKKyAgICBhdXRvIHBhdGgg
PSB0b0NTdHJpbmcocGF0aFN0cmluZyk7CiAKICAgICBOUFN0cmluZyBjb250ZW50c1N0cmluZyA9
IE5QVkFSSUFOVF9UT19TVFJJTkcoYXJnc1szXSk7CiAKLSAgICBGSUxFKiB0ZW1wRmlsZSA9IGZv
cGVuKHBhdGgsICJ3Iik7CisgICAgRklMRSogdGVtcEZpbGUgPSBmb3BlbihwYXRoLmdldCgpLCAi
dyIpOwogICAgIGlmICghdGVtcEZpbGUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGlm
ICghZndyaXRlKGNvbnRlbnRzU3RyaW5nLlVURjhDaGFyYWN0ZXJzLCBjb250ZW50c1N0cmluZy5V
VEY4TGVuZ3RoLCAxLCB0ZW1wRmlsZSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQorICAgIHNp
emVfdCBjb3VudCA9IGZ3cml0ZShjb250ZW50c1N0cmluZy5VVEY4Q2hhcmFjdGVycywgY29udGVu
dHNTdHJpbmcuVVRGOExlbmd0aCwgMSwgdGVtcEZpbGUpOwogICAgIGZjbG9zZSh0ZW1wRmlsZSk7
CiAKLSAgICBOUEVycm9yIGVycm9yID0gYnJvd3Nlci0+cG9zdHVybChvYmotPm5wcCwgdXJsLCB0
YXJnZXQsIHBhdGhTdHJpbmcuVVRGOExlbmd0aCwgcGF0aCwgVFJVRSk7CisgICAgaWYgKCFjb3Vu
dCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgZnJlZShwYXRoKTsKLSAgICBmcmVlKHRh
cmdldCk7Ci0gICAgZnJlZSh1cmwpOworICAgIE5QRXJyb3IgZXJyb3IgPSBicm93c2VyLT5wb3N0
dXJsKG9iai0+bnBwLCB1cmwuZ2V0KCksIHRhcmdldC5nZXQoKSwgcGF0aFN0cmluZy5VVEY4TGVu
Z3RoLCBwYXRoLmdldCgpLCBUUlVFKTsKIAogICAgIEJPT0xFQU5fVE9fTlBWQVJJQU5UKGVycm9y
ID09IE5QRVJSX05PX0VSUk9SLCAqcmVzdWx0KTsKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTk3Miwx
NSArOTc1LDE0IEBAIGJvb2wgdGVzdFdpbmRvd09wZW4oTlBQIG5wcCkKIAogc3RhdGljIGJvb2wg
dGVzdFNldFN0YXR1cyhQbHVnaW5PYmplY3QqIG9iaiwgY29uc3QgTlBWYXJpYW50KiBhcmdzLCB1
aW50MzJfdCBhcmdDb3VudCwgTlBWYXJpYW50KiByZXN1bHQpCiB7Ci0gICAgY2hhciogbWVzc2Fn
ZSA9IDA7CisgICAgQ1N0cmluZ0J1ZmZlciBtZXNzYWdlKG51bGxwdHIsIGZyZWUpOwogICAgIGlm
IChhcmdDb3VudCAmJiBOUFZBUklBTlRfSVNfU1RSSU5HKGFyZ3NbMF0pKSB7CiAgICAgICAgIE5Q
U3RyaW5nIHN0YXR1c1N0cmluZyA9IE5QVkFSSUFOVF9UT19TVFJJTkcoYXJnc1swXSk7CiAgICAg
ICAgIG1lc3NhZ2UgPSB0b0NTdHJpbmcoc3RhdHVzU3RyaW5nKTsKICAgICB9Ci0gICAgCi0gICAg
YnJvd3Nlci0+c3RhdHVzKG9iai0+bnBwLCBtZXNzYWdlKTsKIAotICAgIGZyZWUobWVzc2FnZSk7
CisgICAgYnJvd3Nlci0+c3RhdHVzKG9iai0+bnBwLCBtZXNzYWdlLmdldCgpKTsKKwogICAgIHJl
dHVybiB0cnVlOwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>266669</attachid>
            <date>2015-12-04 15:34:41 -0800</date>
            <delta_ts>2015-12-06 19:27:49 -0800</delta_ts>
            <desc>Patch v2</desc>
            <filename>bug-151881-20151204153414.patch</filename>
            <type>text/plain</type>
            <size>4729</size>
            <attacher name="David Kilzer (:ddkilzer)">ddkilzer</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkzMzkwCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMjc2MWI3Y2NjYzNkOTIzNWNjMzQyNDFmNzI5YWFlYjlh
ZTI0ZjcxNy4uMjljNTZmMDk5Mjc4YTk2NjNjYzUyN2U4NjZiNzIzNTgxMmI3YWE4MyAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5
IEBACisyMDE1LTEyLTA0ICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CisKKyAg
ICAgICAgVGVzdE5ldHNjYXBlUGx1Z0luOiBGaXggbGVha3MgZm91bmQgYnkgc3RhdGljIGFuYWx5
emVyCisgICAgICAgIDxodHRwOi8vd2Via2l0Lm9yZy9iLzE1MTg4MT4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGaXhlcyB0aGUgZm9sbG93aW5nIGxl
YWtzIGZvdW5kIGJ5IHRoZSBzdGF0aWMgYW5hbHl6ZXI6CisgICAgICAgICAgICBEdW1wUmVuZGVy
VHJlZS9UZXN0TmV0c2NhcGVQbHVnSW4vUGx1Z2luT2JqZWN0LmNwcDo4MDg6MTY6IHdhcm5pbmc6
IFBvdGVudGlhbCBsZWFrIG9mIG1lbW9yeSBwb2ludGVkIHRvIGJ5ICdwYXRoJworICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgICAgICAgICBefn5+
fgorICAgICAgICAgICAgRHVtcFJlbmRlclRyZWUvVGVzdE5ldHNjYXBlUGx1Z0luL1BsdWdpbk9i
amVjdC5jcHA6ODA4OjE2OiB3YXJuaW5nOiBQb3RlbnRpYWwgbGVhayBvZiBtZW1vcnkgcG9pbnRl
ZCB0byBieSAndGFyZ2V0JworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICBefn5+fgorICAgICAgICAgICAgRHVtcFJlbmRlclRyZWUv
VGVzdE5ldHNjYXBlUGx1Z0luL1BsdWdpbk9iamVjdC5jcHA6ODA4OjE2OiB3YXJuaW5nOiBQb3Rl
bnRpYWwgbGVhayBvZiBtZW1vcnkgcG9pbnRlZCB0byBieSAndXJsJworICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgICAgICAgICBefn5+fgorCisg
ICAgICAgICogRHVtcFJlbmRlclRyZWUvVGVzdE5ldHNjYXBlUGx1Z0luL1BsdWdpbk9iamVjdC5j
cHA6CisgICAgICAgICh0b0NTdHJpbmcpOiBTd2l0Y2ggdG8gcmV0dXJuaW5nIHN0ZDo6dW5pcXVl
X3B0cjxjaGFyW10+LiAgQWRkCisgICAgICAgIGVhcmx5IHJldHVybiBpZiBhbGxvY2F0aW9uIGZh
aWxzLgorICAgICAgICAodGVzdFBvc3RVUkxGaWxlKTogU3dpdGNoIHRvIHVzaW5nIHN0ZDo6dW5p
cXVlX3B0cjxjaGFyW10+LgorICAgICAgICBNYWtlIHN1cmUgdG8gY2FsbCBmY2xvc2UoKSBvbiBm
aWxlaGFuZGxlLCBldmVuIGZvciBhbiBlYXJseQorICAgICAgICByZXR1cm4uCisgICAgICAgICh0
ZXN0U2V0U3RhdHVzKTogU3dpdGNoIHRvIHVzaW5nIHN0ZDo6dW5pcXVlX3B0cjxjaGFyW10+Lgor
CiAyMDE1LTEyLTAzICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CiAKICAgICAg
ICAgRHVtcFJlbmRlclRyZWU6IFVzZS1hZnRlci1mcmVlIGluIGNyZWF0ZUJpdG1hcENvbnRleHQo
KSBpbiBQaXhlbER1bXBTdXBwb3J0TWFjLm1tCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVy
VHJlZS9UZXN0TmV0c2NhcGVQbHVnSW4vUGx1Z2luT2JqZWN0LmNwcCBiL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL1Rlc3ROZXRzY2FwZVBsdWdJbi9QbHVnaW5PYmplY3QuY3BwCmluZGV4IGFlOTAxNjg0
ODFjMTYwYWU1ZTQyYmFjZmE5NWRiN2E3MWNmYTMyMTQuLjg5MjVkMTVhZTBlODA2NTBhYjU2ODM1
M2M1N2JjNmNhY2RhOTNmNjUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RO
ZXRzY2FwZVBsdWdJbi9QbHVnaW5PYmplY3QuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L1Rlc3ROZXRzY2FwZVBsdWdJbi9QbHVnaW5PYmplY3QuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAj
aW5jbHVkZSAiUGx1Z2luVGVzdC5oIgogI2luY2x1ZGUgIlRlc3RPYmplY3QuaCIKICNpbmNsdWRl
IDxhc3NlcnQuaD4KKyNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8c3RkYXJnLmg+CiAjaW5j
bHVkZSA8c3RkaW8uaD4KICNpbmNsdWRlIDxzdGRsaWIuaD4KQEAgLTc3NSwxMSArNzc2LDE1IEBA
IHN0YXRpYyBib29sIHRlc3RHZXRQcm9wZXJ0eVJldHVyblZhbHVlKFBsdWdpbk9iamVjdCogb2Jq
LCBjb25zdCBOUFZhcmlhbnQqIGFyZ3MsCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXN0YXRpYyBj
aGFyKiB0b0NTdHJpbmcoY29uc3QgTlBTdHJpbmcmIHN0cmluZykKK3N0YXRpYyBzdGQ6OnVuaXF1
ZV9wdHI8Y2hhcltdPiB0b0NTdHJpbmcoY29uc3QgTlBTdHJpbmcmIHN0cmluZykKIHsKLSAgICBj
aGFyKiByZXN1bHQgPSBzdGF0aWNfY2FzdDxjaGFyKj4obWFsbG9jKHN0cmluZy5VVEY4TGVuZ3Ro
ICsgMSkpOwotICAgIG1lbWNweShyZXN1bHQsIHN0cmluZy5VVEY4Q2hhcmFjdGVycywgc3RyaW5n
LlVURjhMZW5ndGgpOwotICAgIHJlc3VsdFtzdHJpbmcuVVRGOExlbmd0aF0gPSAnXDAnOworICAg
IHNpemVfdCBsZW5ndGggPSBzdHJpbmcuVVRGOExlbmd0aDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
Y2hhcltdPiByZXN1bHQobmV3IGNoYXJbbGVuZ3RoICsgMV0pOworICAgIGlmICghcmVzdWx0KQor
ICAgICAgICByZXR1cm4gcmVzdWx0OworCisgICAgbWVtY3B5KHJlc3VsdC5nZXQoKSwgc3RyaW5n
LlVURjhDaGFyYWN0ZXJzLCBsZW5ndGgpOworICAgIHJlc3VsdFtsZW5ndGhdID0gJ1wwJzsKIAog
ICAgIHJldHVybiByZXN1bHQ7CiB9CkBAIC03OTAsMzAgKzc5NSwyNyBAQCBzdGF0aWMgYm9vbCB0
ZXN0UG9zdFVSTEZpbGUoUGx1Z2luT2JqZWN0KiBvYmosIGNvbnN0IE5QVmFyaWFudCogYXJncywg
dWludDMyX3QgYQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBOUFN0cmluZyB1cmxTdHJp
bmcgPSBOUFZBUklBTlRfVE9fU1RSSU5HKGFyZ3NbMF0pOwotICAgIGNoYXIqIHVybCA9IHRvQ1N0
cmluZyh1cmxTdHJpbmcpOworICAgIGF1dG8gdXJsID0gdG9DU3RyaW5nKHVybFN0cmluZyk7CiAK
ICAgICBOUFN0cmluZyB0YXJnZXRTdHJpbmcgPSBOUFZBUklBTlRfVE9fU1RSSU5HKGFyZ3NbMV0p
OwotICAgIGNoYXIqIHRhcmdldCA9IHRvQ1N0cmluZyh0YXJnZXRTdHJpbmcpOworICAgIGF1dG8g
dGFyZ2V0ID0gdG9DU3RyaW5nKHRhcmdldFN0cmluZyk7CiAKICAgICBOUFN0cmluZyBwYXRoU3Ry
aW5nID0gTlBWQVJJQU5UX1RPX1NUUklORyhhcmdzWzJdKTsKLSAgICBjaGFyKiBwYXRoID0gdG9D
U3RyaW5nKHBhdGhTdHJpbmcpOworICAgIGF1dG8gcGF0aCA9IHRvQ1N0cmluZyhwYXRoU3RyaW5n
KTsKIAogICAgIE5QU3RyaW5nIGNvbnRlbnRzU3RyaW5nID0gTlBWQVJJQU5UX1RPX1NUUklORyhh
cmdzWzNdKTsKIAotICAgIEZJTEUqIHRlbXBGaWxlID0gZm9wZW4ocGF0aCwgInciKTsKKyAgICBG
SUxFKiB0ZW1wRmlsZSA9IGZvcGVuKHBhdGguZ2V0KCksICJ3Iik7CiAgICAgaWYgKCF0ZW1wRmls
ZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgaWYgKCFmd3JpdGUoY29udGVudHNTdHJp
bmcuVVRGOENoYXJhY3RlcnMsIGNvbnRlbnRzU3RyaW5nLlVURjhMZW5ndGgsIDEsIHRlbXBGaWxl
KSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCisgICAgc2l6ZV90IGNvdW50ID0gZndyaXRlKGNv
bnRlbnRzU3RyaW5nLlVURjhDaGFyYWN0ZXJzLCBjb250ZW50c1N0cmluZy5VVEY4TGVuZ3RoLCAx
LCB0ZW1wRmlsZSk7CiAgICAgZmNsb3NlKHRlbXBGaWxlKTsKIAotICAgIE5QRXJyb3IgZXJyb3Ig
PSBicm93c2VyLT5wb3N0dXJsKG9iai0+bnBwLCB1cmwsIHRhcmdldCwgcGF0aFN0cmluZy5VVEY4
TGVuZ3RoLCBwYXRoLCBUUlVFKTsKKyAgICBpZiAoIWNvdW50KQorICAgICAgICByZXR1cm4gZmFs
c2U7CiAKLSAgICBmcmVlKHBhdGgpOwotICAgIGZyZWUodGFyZ2V0KTsKLSAgICBmcmVlKHVybCk7
CisgICAgTlBFcnJvciBlcnJvciA9IGJyb3dzZXItPnBvc3R1cmwob2JqLT5ucHAsIHVybC5nZXQo
KSwgdGFyZ2V0LmdldCgpLCBwYXRoU3RyaW5nLlVURjhMZW5ndGgsIHBhdGguZ2V0KCksIFRSVUUp
OwogCiAgICAgQk9PTEVBTl9UT19OUFZBUklBTlQoZXJyb3IgPT0gTlBFUlJfTk9fRVJST1IsICpy
ZXN1bHQpOwogICAgIHJldHVybiB0cnVlOwpAQCAtOTcyLDE1ICs5NzQsMTQgQEAgYm9vbCB0ZXN0
V2luZG93T3BlbihOUFAgbnBwKQogCiBzdGF0aWMgYm9vbCB0ZXN0U2V0U3RhdHVzKFBsdWdpbk9i
amVjdCogb2JqLCBjb25zdCBOUFZhcmlhbnQqIGFyZ3MsIHVpbnQzMl90IGFyZ0NvdW50LCBOUFZh
cmlhbnQqIHJlc3VsdCkKIHsKLSAgICBjaGFyKiBtZXNzYWdlID0gMDsKKyAgICBzdGQ6OnVuaXF1
ZV9wdHI8Y2hhcltdPiBtZXNzYWdlKG51bGxwdHIpOwogICAgIGlmIChhcmdDb3VudCAmJiBOUFZB
UklBTlRfSVNfU1RSSU5HKGFyZ3NbMF0pKSB7CiAgICAgICAgIE5QU3RyaW5nIHN0YXR1c1N0cmlu
ZyA9IE5QVkFSSUFOVF9UT19TVFJJTkcoYXJnc1swXSk7CiAgICAgICAgIG1lc3NhZ2UgPSB0b0NT
dHJpbmcoc3RhdHVzU3RyaW5nKTsKICAgICB9Ci0gICAgCi0gICAgYnJvd3Nlci0+c3RhdHVzKG9i
ai0+bnBwLCBtZXNzYWdlKTsKIAotICAgIGZyZWUobWVzc2FnZSk7CisgICAgYnJvd3Nlci0+c3Rh
dHVzKG9iai0+bnBwLCBtZXNzYWdlLmdldCgpKTsKKwogICAgIHJldHVybiB0cnVlOwogfQogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>