<?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>173253</bug_id>
          
          <creation_ts>2017-06-12 03:09:55 -0700</creation_ts>
          <short_desc>[GCrypt] Use utility functions in CryptoKeyEC, CryptoKeyRSA</short_desc>
          <delta_ts>2017-06-12 07:56:42 -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>New Bugs</component>
          <version>WebKit 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>133122</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Zan Dobersek">zan</reporter>
          <assigned_to name="Zan Dobersek">zan</assigned_to>
          <cc>jiewen_tan</cc>
    
    <cc>mcatanzaro</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1318158</commentid>
    <comment_count>0</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-06-12 03:09:55 -0700</bug_when>
    <thetext>[GCrypt] Use utility functions in CryptoKeyEC, CryptoKeyRSA</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1318159</commentid>
    <comment_count>1</comment_count>
      <attachid>312647</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-06-12 03:15:09 -0700</bug_when>
    <thetext>Created attachment 312647
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1318195</commentid>
    <comment_count>2</comment_count>
      <attachid>312647</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-06-12 05:56:17 -0700</bug_when>
    <thetext>Comment on attachment 312647
Patch

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

Nice!

&gt; Source/WebCore/crypto/gcrypt/CryptoKeyECGCrypt.cpp:227
&gt; +    return WTFMove(q.value());

Why do you use WTFMove() here? Doesn&apos;t this prevent return value optimization?

&gt; Source/WebCore/crypto/gcrypt/CryptoKeyRSAGCrypt.cpp:70
&gt; +    return WTFMove(data.value());

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1318224</commentid>
    <comment_count>3</comment_count>
      <attachid>312647</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-06-12 07:55:28 -0700</bug_when>
    <thetext>Comment on attachment 312647
Patch

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

&gt;&gt; Source/WebCore/crypto/gcrypt/CryptoKeyECGCrypt.cpp:227
&gt;&gt; +    return WTFMove(q.value());
&gt; 
&gt; Why do you use WTFMove() here? Doesn&apos;t this prevent return value optimization?

RVO doesn&apos;t help here because q is a std::optional&lt;&gt; object. `q.value()` exposes the embedded Vector&lt;&gt; object, but returning just that would result in copying the object. So the embedded value has to be casted to an rvalue reference via WTFMove() to enforce the move constructor to be generated.

So the Vector&lt;&gt; object inside std::optional&lt;&gt; is moved into the return value, and after that std::optional&lt;&gt; deletes the emptied-out Vector&lt;&gt; it still holds.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1318225</commentid>
    <comment_count>4</comment_count>
      <attachid>312647</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-06-12 07:56:38 -0700</bug_when>
    <thetext>Comment on attachment 312647
Patch

Clearing flags on attachment: 312647

Committed r218100: &lt;http://trac.webkit.org/changeset/218100&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1318226</commentid>
    <comment_count>5</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-06-12 07:56:42 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>312647</attachid>
            <date>2017-06-12 03:15:09 -0700</date>
            <delta_ts>2017-06-12 07:56:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-173253-20170612121508.patch</filename>
            <type>text/plain</type>
            <size>14061</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE4MDkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTc1M2U2NmY4YzcwZTll
Yjg2YzZhZjI3MjkwMWQ4ZWNmNTQ2MTY4Ni4uOTEwMzEwNWY1YzNjYzBlYmVhYTBiMGRiNjViOTZm
ZWQwMGMyNWJkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDE3LTA2LTEyICBaYW4g
RG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KKworICAgICAgICBbR0NyeXB0XSBVc2Ug
dXRpbGl0eSBmdW5jdGlvbnMgaW4gQ3J5cHRvS2V5RUMsIENyeXB0b0tleVJTQQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTczMjUzCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIHRoZSB1dGlsaXR5IGZ1
bmN0aW9ucyBmcm9tIHRoZSBHQ3J5cHRVdGlsaXRpZXMuaCBoZWFkZXIgaW5zdGVhZAorICAgICAg
ICBvZiB3cml0aW5nIHRoZSBzYW1lIGNvZGUgaW4gYm90aCBDcnlwdG9LZXlFQyBhbmQgQ3J5cHRv
S2V5UlNBCisgICAgICAgIGltcGxlbWVudGF0aW9ucy4gVGhlIHN3aXRjaGVzIGFyZSBzdHJhaWdo
dGZvcndhcmQsIHRoZSBvbmx5IGRpZmZlcmVuY2UKKyAgICAgICAgaXMgdGhhdCB0aGUgR0NyeXB0
VXRpbGl0aWVzIGZ1bmN0aW9ucyByZXR1cm4gYSBzdGQ6Om9wdGlvbmFsPD4gb2JqZWN0LAorICAg
ICAgICBtZWFuaW5nIHdlIGhhdmUgdG8gYWRkcmVzcyBwb3NzaWJseSBpbnZhbGlkIHJldHVybiB2
YWx1ZS4KKworICAgICAgICBUaGUgbXBpRGF0YSgpIGZ1bmN0aW9uIGlzIG92ZXJsb2FkZWQsIG1h
a2luZyBpdCBwb3NzaWJsZSB0byBwYXNzIHRvIGl0CisgICAgICAgIGVpdGhlciBhIGdjcnlfc2V4
cF90IG9yIGdjcnlfbXBpX3Qgb2JqZWN0LiBBZGRpdGlvbmFsbHksIG1waUxlbmd0aCgpCisgICAg
ICAgIGZ1bmN0aW9uIGlzIGFkZGVkLCBvdmVybG9hZGluZyBhZ2FpbiBmb3IgZ2NyeV9zZXhwX3Qg
YW5kIGdjcnlfbXBpX3QuCisgICAgICAgIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCBmcm9tIG1waURh
dGEoKSBhcyB3ZWxsIGFzIGluIENyeXB0b0tleVJTQSB3aGVuCisgICAgICAgIHJldHJpZXZpbmcg
dGhlIFJTQSBtb2R1bHVzIGxlbmd0aC4KKworICAgICAgICBObyBuZXcgdGVzdHMgLS0gbm8gY2hh
bmdlcyBpbiBiZWhhdmlvci4KKworICAgICAgICAqIGNyeXB0by9nY3J5cHQvQ3J5cHRvS2V5RUNH
Q3J5cHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvS2V5RUM6OnBsYXRmb3JtRXhwb3J0
UmF3KToKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0tleUVDOjpwbGF0Zm9ybUFkZEZpZWxkRWxl
bWVudHMpOgorICAgICAgICAoV2ViQ29yZTo6ZXh0cmFjdE1QSURhdGEpOiBEZWxldGVkLgorICAg
ICAgICAqIGNyeXB0by9nY3J5cHQvQ3J5cHRvS2V5UlNBR0NyeXB0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmdldFJTQU1vZHVsdXNMZW5ndGgpOgorICAgICAgICAoV2ViQ29yZTo6Z2V0UlNBS2V5
UGFyYW1ldGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0tleVJTQTo6ZXhwb3J0RGF0YSk6
CisgICAgICAgIChXZWJDb3JlOjpnZXRQYXJhbWV0ZXJNUElEYXRhKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBjcnlwdG8vZ2NyeXB0L0dDcnlwdFV0aWxpdGllcy5oOgorICAgICAgICAoV2ViQ29yZTo6
bXBpTGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6Om1waURhdGEpOgorCiAyMDE3LTA2LTA5ICBS
eW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIGRpZE1vdmVUb05ld0Rv
Y3VtZW50IGRvZXNuJ3QgZ2V0IGNhbGxlZCBvbiBhbiBBdHRyIGluc2lkZSBhIHNoYWRvdyB0cmVl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0tleUVDR0Ny
eXB0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvS2V5RUNHQ3J5cHQu
Y3BwCmluZGV4IDQxNGIzNzZlNGY2YjI1MmU3MzI3MTNlZDNjMDU2ZWJkMjdmZGNlMWQuLjVlZmZk
NmM2YTIwYTc0YTQzOGE0OTJkMDU1ODc2MWNiMzg5NTRhZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvS2V5RUNHQ3J5cHQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvS2V5RUNHQ3J5cHQuY3BwCkBAIC0yOSw2ICsyOSw3
IEBACiAjaWYgRU5BQkxFKFNVQlRMRV9DUllQVE8pCiAKICNpbmNsdWRlICJDcnlwdG9LZXlQYWly
LmgiCisjaW5jbHVkZSAiR0NyeXB0VXRpbGl0aWVzLmgiCiAjaW5jbHVkZSAiSnNvbldlYktleS5o
IgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSA8cGFsL2NyeXB0by9nY3J5
cHQvSGFuZGxlLmg+CkBAIC04OSwyNSArOTAsNiBAQCBzdGF0aWMgdW5zaWduZWQgdW5jb21wcmVz
c2VkRmllbGRFbGVtZW50U2l6ZUZvckN1cnZlKENyeXB0b0tleUVDOjpOYW1lZEN1cnZlIGN1cgog
ICAgIHJldHVybiAwOwogfQogCi1zdGF0aWMgVmVjdG9yPHVpbnQ4X3Q+IGV4dHJhY3RNUElEYXRh
KGdjcnlfbXBpX3QgbXBpKQotewotICAgIHNpemVfdCBkYXRhTGVuZ3RoID0gMDsKLSAgICBnY3J5
X2Vycm9yX3QgZXJyb3IgPSBnY3J5X21waV9wcmludChHQ1JZTVBJX0ZNVF9VU0csIG51bGxwdHIs
IDAsICZkYXRhTGVuZ3RoLCBtcGkpOwotICAgIGlmIChlcnJvciAhPSBHUEdfRVJSX05PX0VSUk9S
KSB7Ci0gICAgICAgIFBBTDo6R0NyeXB0Ojpsb2dFcnJvcihlcnJvcik7Ci0gICAgICAgIHJldHVy
biB7IH07Ci0gICAgfQotCi0gICAgVmVjdG9yPHVpbnQ4X3Q+IGRhdGEoZGF0YUxlbmd0aCk7Ci0g
ICAgZXJyb3IgPSBnY3J5X21waV9wcmludChHQ1JZTVBJX0ZNVF9VU0csIGRhdGEuZGF0YSgpLCBk
YXRhLnNpemUoKSwgbnVsbHB0ciwgbXBpKTsKLSAgICBpZiAoZXJyb3IgIT0gR1BHX0VSUl9OT19F
UlJPUikgewotICAgICAgICBQQUw6OkdDcnlwdDo6bG9nRXJyb3IoZXJyb3IpOwotICAgICAgICBy
ZXR1cm4geyB9OwotICAgIH0KLQotICAgIHJldHVybiBkYXRhOwotfTsKLQogQ3J5cHRvS2V5RUM6
On5DcnlwdG9LZXlFQygpCiB7CiAgICAgaWYgKG1fcGxhdGZvcm1LZXkpCkBAIC0yMzgsMTEgKzIy
MCwxMSBAQCBWZWN0b3I8dWludDhfdD4gQ3J5cHRvS2V5RUM6OnBsYXRmb3JtRXhwb3J0UmF3KCkg
Y29uc3QKICAgICBpZiAoIXFNUEkpCiAgICAgICAgIHJldHVybiB7IH07CiAKLSAgICBWZWN0b3I8
dWludDhfdD4gcSA9IGV4dHJhY3RNUElEYXRhKHFNUEkpOwotICAgIGlmIChxLnNpemUoKSAhPSB1
bmNvbXByZXNzZWRQb2ludFNpemVGb3JDdXJ2ZShtX2N1cnZlKSkKKyAgICBhdXRvIHEgPSBtcGlE
YXRhKHFNUEkpOworICAgIGlmICghcSB8fCBxLT5zaXplKCkgIT0gdW5jb21wcmVzc2VkUG9pbnRT
aXplRm9yQ3VydmUobV9jdXJ2ZSkpCiAgICAgICAgIHJldHVybiB7IH07CiAKLSAgICByZXR1cm4g
cTsKKyAgICByZXR1cm4gV1RGTW92ZShxLnZhbHVlKCkpOwogfQogCiB2b2lkIENyeXB0b0tleUVD
OjpwbGF0Zm9ybUFkZEZpZWxkRWxlbWVudHMoSnNvbldlYktleSYgandrKSBjb25zdApAQCAtMjU4
LDE0ICsyNDAsMTQgQEAgdm9pZCBDcnlwdG9LZXlFQzo6cGxhdGZvcm1BZGRGaWVsZEVsZW1lbnRz
KEpzb25XZWJLZXkmIGp3aykgY29uc3QKIAogICAgIFBBTDo6R0NyeXB0OjpIYW5kbGU8Z2NyeV9t
cGlfdD4gcU1QSShnY3J5X21waV9lY19nZXRfbXBpKCJxIiwgY29udGV4dCwgMCkpOwogICAgIGlm
IChxTVBJKSB7Ci0gICAgICAgIFZlY3Rvcjx1aW50OF90PiBxID0gZXh0cmFjdE1QSURhdGEocU1Q
SSk7Ci0gICAgICAgIGlmIChxLnNpemUoKSA9PSB1bmNvbXByZXNzZWRQb2ludFNpemVGb3JDdXJ2
ZShtX2N1cnZlKSkgeworICAgICAgICBhdXRvIHEgPSBtcGlEYXRhKHFNUEkpOworICAgICAgICBp
ZiAocSAmJiBxLT5zaXplKCkgPT0gdW5jb21wcmVzc2VkUG9pbnRTaXplRm9yQ3VydmUobV9jdXJ2
ZSkpIHsKICAgICAgICAgICAgIFZlY3Rvcjx1aW50OF90PiBhOwotICAgICAgICAgICAgYS5hcHBl
bmQocS5kYXRhKCkgKyAxLCB1bmNvbXByZXNzZWRGaWVsZEVsZW1lbnRTaXplKTsKKyAgICAgICAg
ICAgIGEuYXBwZW5kKHEtPmRhdGEoKSArIDEsIHVuY29tcHJlc3NlZEZpZWxkRWxlbWVudFNpemUp
OwogICAgICAgICAgICAgandrLnggPSBiYXNlNjRVUkxFbmNvZGUoYSk7CiAKICAgICAgICAgICAg
IFZlY3Rvcjx1aW50OF90PiBiOwotICAgICAgICAgICAgYi5hcHBlbmQocS5kYXRhKCkgKyAxICsg
dW5jb21wcmVzc2VkRmllbGRFbGVtZW50U2l6ZSwgdW5jb21wcmVzc2VkRmllbGRFbGVtZW50U2l6
ZSk7CisgICAgICAgICAgICBiLmFwcGVuZChxLT5kYXRhKCkgKyAxICsgdW5jb21wcmVzc2VkRmll
bGRFbGVtZW50U2l6ZSwgdW5jb21wcmVzc2VkRmllbGRFbGVtZW50U2l6ZSk7CiAgICAgICAgICAg
ICBqd2sueSA9IGJhc2U2NFVSTEVuY29kZShiKTsKICAgICAgICAgfQogICAgIH0KQEAgLTI3Myw5
ICsyNTUsOSBAQCB2b2lkIENyeXB0b0tleUVDOjpwbGF0Zm9ybUFkZEZpZWxkRWxlbWVudHMoSnNv
bldlYktleSYgandrKSBjb25zdAogICAgIGlmICh0eXBlKCkgPT0gVHlwZTo6UHJpdmF0ZSkgewog
ICAgICAgICBQQUw6OkdDcnlwdDo6SGFuZGxlPGdjcnlfbXBpX3Q+IGRNUEkoZ2NyeV9tcGlfZWNf
Z2V0X21waSgiZCIsIGNvbnRleHQsIDApKTsKICAgICAgICAgaWYgKGRNUEkpIHsKLSAgICAgICAg
ICAgIFZlY3Rvcjx1aW50OF90PiBkID0gZXh0cmFjdE1QSURhdGEoZE1QSSk7Ci0gICAgICAgICAg
ICBpZiAoZC5zaXplKCkgPT0gdW5jb21wcmVzc2VkRmllbGRFbGVtZW50U2l6ZSkKLSAgICAgICAg
ICAgICAgICBqd2suZCA9IGJhc2U2NFVSTEVuY29kZShkKTsKKyAgICAgICAgICAgIGF1dG8gZCA9
IG1waURhdGEoZE1QSSk7CisgICAgICAgICAgICBpZiAoZCAmJiBkLT5zaXplKCkgPT0gdW5jb21w
cmVzc2VkRmllbGRFbGVtZW50U2l6ZSkKKyAgICAgICAgICAgICAgICBqd2suZCA9IGJhc2U2NFVS
TEVuY29kZSgqZCk7CiAgICAgICAgIH0KICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0tleVJTQUdDcnlwdC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0tleVJTQUdDcnlwdC5jcHAKaW5kZXggMjQ3ODBlNmNjZmRi
YWQ1YzQ0MjI2NGQzZDk0MjZhODNiZDgwZTIyZC4uMTI0NWJlMmE3NTZkZDg5NzFkNDQwMjM5ZGNk
OWZiOTRlMmE0YjBiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9D
cnlwdG9LZXlSU0FHQ3J5cHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQv
Q3J5cHRvS2V5UlNBR0NyeXB0LmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkNyeXB0
b0tleURhdGFSU0FDb21wb25lbnRzLmgiCiAjaW5jbHVkZSAiQ3J5cHRvS2V5UGFpci5oIgogI2lu
Y2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKKyNpbmNsdWRlICJHQ3J5cHRVdGlsaXRpZXMuaCIKICNp
bmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQuaCIKICNpbmNsdWRlIDxwYWwvY3J5cHRvL2djcnlwdC9IYW5kbGUuaD4KQEAgLTM5LDYzICs0
MCwzNCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLS8vIFJldHJpZXZlIHNpemUgb2YgdGhl
IHB1YmxpYyBtb2R1bHVzIE4gb2YgdGhlIGdpdmVuIFJTQSBrZXksIGluIGJpdHMuCi1zdGF0aWMg
c2l6ZV90IGdldFJTQU1vZHVsdXNMZW5ndGgoZ2NyeV9zZXhwX3Qgc2V4cCkKK3N0YXRpYyBzaXpl
X3QgZ2V0UlNBTW9kdWx1c0xlbmd0aChnY3J5X3NleHBfdCBrZXlTZXhwKQogewotICAgIC8vIFRo
ZSBzLWV4cHJlc3Npb24gaXMgb2Ygcm91Z2hseSB0aGUgZm9sbG93aW5nIGZvcm06Ci0gICAgLy8g
KHByaXZhdGUta2V5fHB1YmxpYy1rZXkKLSAgICAvLyAgIChyc2EKLSAgICAvLyAgICAgKG4gbi1t
cGkpCi0gICAgLy8gICAgIChlIGUtbXBpKQotICAgIC8vICAgICAuLi4pKQotICAgIFBBTDo6R0Ny
eXB0OjpIYW5kbGU8Z2NyeV9zZXhwX3Q+IG5TZXhwKGdjcnlfc2V4cF9maW5kX3Rva2VuKHNleHAs
ICJuIiwgMCkpOworICAgIC8vIFJldHJpZXZlIHRoZSBzLWV4cHJlc3Npb24gdG9rZW4gZm9yIHRo
ZSBwdWJsaWMgbW9kdWx1cyBOIG9mIHRoZSBnaXZlbiBSU0Ega2V5LgorICAgIFBBTDo6R0NyeXB0
OjpIYW5kbGU8Z2NyeV9zZXhwX3Q+IG5TZXhwKGdjcnlfc2V4cF9maW5kX3Rva2VuKGtleVNleHAs
ICJuIiwgMCkpOwogICAgIGlmICghblNleHApCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgUEFM
OjpHQ3J5cHQ6OkhhbmRsZTxnY3J5X21waV90PiBuTVBJKGdjcnlfc2V4cF9udGhfbXBpKG5TZXhw
LCAxLCBHQ1JZTVBJX0ZNVF9VU0cpKTsKLSAgICBpZiAoIW5NUEkpCisgICAgLy8gUmV0cmlldmUg
dGhlIE1QSSBsZW5ndGggZm9yIHRoZSBjb3JyZXNwb25kaW5nIHMtZXhwcmVzc2lvbiB0b2tlbiwg
aW4gYml0cy4KKyAgICBhdXRvIGxlbmd0aCA9IG1waUxlbmd0aChuU2V4cCk7CisgICAgaWYgKCFs
ZW5ndGgpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgc2l6ZV90IGRhdGFMZW5ndGggPSAwOwot
ICAgIGdjcnlfZXJyb3JfdCBlcnJvciA9IGdjcnlfbXBpX3ByaW50KEdDUllNUElfRk1UX1VTRywg
bnVsbHB0ciwgMCwgJmRhdGFMZW5ndGgsIG5NUEkpOwotICAgIGlmIChlcnJvciAhPSBHUEdfRVJS
X05PX0VSUk9SKSB7Ci0gICAgICAgIFBBTDo6R0NyeXB0Ojpsb2dFcnJvcihlcnJvcik7Ci0gICAg
ICAgIHJldHVybiAwOwotICAgIH0KLQotICAgIHJldHVybiBkYXRhTGVuZ3RoICogODsKKyAgICBy
ZXR1cm4gKmxlbmd0aCAqIDg7CiB9CiAKLXN0YXRpYyBWZWN0b3I8dWludDhfdD4gZ2V0UGFyYW1l
dGVyTVBJRGF0YShnY3J5X21waV90IHBhcmFtTVBJKQorc3RhdGljIFZlY3Rvcjx1aW50OF90PiBn
ZXRSU0FLZXlQYXJhbWV0ZXIoZ2NyeV9zZXhwX3Qga2V5U2V4cCwgY29uc3QgY2hhciogbmFtZSkK
IHsKLSAgICBzaXplX3QgZGF0YUxlbmd0aCA9IDA7Ci0gICAgZ2NyeV9lcnJvcl90IGVycm9yID0g
Z2NyeV9tcGlfcHJpbnQoR0NSWU1QSV9GTVRfVVNHLCBudWxscHRyLCAwLCAmZGF0YUxlbmd0aCwg
cGFyYW1NUEkpOwotICAgIGlmIChlcnJvciAhPSBHUEdfRVJSX05PX0VSUk9SKSB7Ci0gICAgICAg
IFBBTDo6R0NyeXB0Ojpsb2dFcnJvcihlcnJvcik7Ci0gICAgICAgIHJldHVybiB7IH07Ci0gICAg
fQotCi0gICAgVmVjdG9yPHVpbnQ4X3Q+IHBhcmFtZXRlcihkYXRhTGVuZ3RoKTsKLSAgICBlcnJv
ciA9IGdjcnlfbXBpX3ByaW50KEdDUllNUElfRk1UX1VTRywgcGFyYW1ldGVyLmRhdGEoKSwgcGFy
YW1ldGVyLnNpemUoKSwgbnVsbHB0ciwgcGFyYW1NUEkpOwotICAgIGlmIChlcnJvciAhPSBHUEdf
RVJSX05PX0VSUk9SKSB7Ci0gICAgICAgIFBBTDo6R0NyeXB0Ojpsb2dFcnJvcihlcnJvcik7Ci0g
ICAgICAgIHJldHVybiB7IH07Ci0gICAgfQotCi0gICAgcmV0dXJuIHBhcmFtZXRlcjsKLX0KLQot
c3RhdGljIFZlY3Rvcjx1aW50OF90PiBnZXRSU0FLZXlQYXJhbWV0ZXIoZ2NyeV9zZXhwX3Qgc2V4
cCwgY29uc3QgY2hhciogbmFtZSkKLXsKLSAgICBQQUw6OkdDcnlwdDo6SGFuZGxlPGdjcnlfc2V4
cF90PiBwYXJhbVNleHAoZ2NyeV9zZXhwX2ZpbmRfdG9rZW4oc2V4cCwgbmFtZSwgMCkpOworICAg
IC8vIFJldHJpZXZlIHRoZSBzLWV4cHJlc3Npb24gdG9rZW4gZm9yIHRoZSBzcGVjaWZpZWQgcGFy
YW1ldGVyIG9mIHRoZSBnaXZlbiBSU0Ega2V5LgorICAgIFBBTDo6R0NyeXB0OjpIYW5kbGU8Z2Ny
eV9zZXhwX3Q+IHBhcmFtU2V4cChnY3J5X3NleHBfZmluZF90b2tlbihrZXlTZXhwLCBuYW1lLCAw
KSk7CiAgICAgaWYgKCFwYXJhbVNleHApCiAgICAgICAgIHJldHVybiB7IH07CiAKLSAgICBQQUw6
OkdDcnlwdDo6SGFuZGxlPGdjcnlfbXBpX3Q+IHBhcmFtTVBJKGdjcnlfc2V4cF9udGhfbXBpKHBh
cmFtU2V4cCwgMSwgR0NSWU1QSV9GTVRfVVNHKSk7Ci0gICAgaWYgKCFwYXJhbU1QSSkKKyAgICAv
LyBSZXRyaWV2ZSB0aGUgTVBJIGRhdGEgZm9yIHRoZSBjb3JyZXNwb25kaW5nIHMtZXhwcmVzc2lv
biB0b2tlbi4KKyAgICBhdXRvIGRhdGEgPSBtcGlEYXRhKHBhcmFtU2V4cCk7CisgICAgaWYgKCFk
YXRhKQogICAgICAgICByZXR1cm4geyB9OwogCi0gICAgcmV0dXJuIGdldFBhcmFtZXRlck1QSURh
dGEocGFyYW1NUEkpOworICAgIHJldHVybiBXVEZNb3ZlKGRhdGEudmFsdWUoKSk7CiB9CiAKIFJl
ZlB0cjxDcnlwdG9LZXlSU0E+IENyeXB0b0tleVJTQTo6Y3JlYXRlKENyeXB0b0FsZ29yaXRobUlk
ZW50aWZpZXIgaWRlbnRpZmllciwgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBoYXNoLCBib29s
IGhhc0hhc2gsIGNvbnN0IENyeXB0b0tleURhdGFSU0FDb21wb25lbnRzJiBrZXlEYXRhLCBib29s
IGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZUJpdG1hcCB1c2FnZXMpCkBAIC0zMzEsOCArMzAz
LDEzIEBAIHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9LZXlEYXRhPiBDcnlwdG9LZXlSU0E6OmV4cG9y
dERhdGEoKSBjb25zdAogICAgICAgICBpZiAoIWRNUEkgfHwgIXBNUEkgfHwgIXFNUEkpCiAgICAg
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgICAgICBDcnlwdG9LZXlEYXRhUlNBQ29tcG9u
ZW50czo6UHJpbWVJbmZvIGZpcnN0UHJpbWVJbmZvIHsgZ2V0UGFyYW1ldGVyTVBJRGF0YShwTVBJ
KSwgeyB9LCB7IH0gfTsKLSAgICAgICAgQ3J5cHRvS2V5RGF0YVJTQUNvbXBvbmVudHM6OlByaW1l
SW5mbyBzZWNvbmRQcmltZUluZm8geyBnZXRQYXJhbWV0ZXJNUElEYXRhKHFNUEkpLCB7IH0sIHsg
fSB9OworICAgICAgICBDcnlwdG9LZXlEYXRhUlNBQ29tcG9uZW50czo6UHJpbWVJbmZvIGZpcnN0
UHJpbWVJbmZvOworICAgICAgICBpZiAoYXV0byBkYXRhID0gbXBpRGF0YShwTVBJKSkKKyAgICAg
ICAgICAgIGZpcnN0UHJpbWVJbmZvLnByaW1lRmFjdG9yID0gV1RGTW92ZShkYXRhLnZhbHVlKCkp
OworCisgICAgICAgIENyeXB0b0tleURhdGFSU0FDb21wb25lbnRzOjpQcmltZUluZm8gc2Vjb25k
UHJpbWVJbmZvOworICAgICAgICBpZiAoYXV0byBkYXRhID0gbXBpRGF0YShxTVBJKSkKKyAgICAg
ICAgICAgIHNlY29uZFByaW1lSW5mby5wcmltZUZhY3RvciA9IFdURk1vdmUoZGF0YS52YWx1ZSgp
KTsKIAogICAgICAgICAvLyBkcCAtLSBkIG1vZCAocCAtIDEpCiAgICAgICAgIHsKQEAgLTM0MCw3
ICszMTcsOSBAQCBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvS2V5RGF0YT4gQ3J5cHRvS2V5UlNBOjpl
eHBvcnREYXRhKCkgY29uc3QKICAgICAgICAgICAgIFBBTDo6R0NyeXB0OjpIYW5kbGU8Z2NyeV9t
cGlfdD4gcG0xTVBJKGdjcnlfbXBpX25ldygwKSk7CiAgICAgICAgICAgICBnY3J5X21waV9zdWJf
dWkocG0xTVBJLCBwTVBJLCAxKTsKICAgICAgICAgICAgIGdjcnlfbXBpX21vZChkcE1QSSwgZE1Q
SSwgcG0xTVBJKTsKLSAgICAgICAgICAgIGZpcnN0UHJpbWVJbmZvLmZhY3RvckNSVEV4cG9uZW50
ID0gZ2V0UGFyYW1ldGVyTVBJRGF0YShkcE1QSSk7CisKKyAgICAgICAgICAgIGlmIChhdXRvIGRh
dGEgPSBtcGlEYXRhKGRwTVBJKSkKKyAgICAgICAgICAgICAgICBmaXJzdFByaW1lSW5mby5mYWN0
b3JDUlRFeHBvbmVudCA9IFdURk1vdmUoZGF0YS52YWx1ZSgpKTsKICAgICAgICAgfQogCiAgICAg
ICAgIC8vIGRxIC0tIGQgbW9kIChxIC0gMSkKQEAgLTM0OSwxOCArMzI4LDI2IEBAIHN0ZDo6dW5p
cXVlX3B0cjxDcnlwdG9LZXlEYXRhPiBDcnlwdG9LZXlSU0E6OmV4cG9ydERhdGEoKSBjb25zdAog
ICAgICAgICAgICAgUEFMOjpHQ3J5cHQ6OkhhbmRsZTxnY3J5X21waV90PiBxbTFNUEkoZ2NyeV9t
cGlfbmV3KDApKTsKICAgICAgICAgICAgIGdjcnlfbXBpX3N1Yl91aShxbTFNUEksIHFNUEksIDEp
OwogICAgICAgICAgICAgZ2NyeV9tcGlfbW9kKGRxTVBJLCBkTVBJLCBxbTFNUEkpOwotICAgICAg
ICAgICAgc2Vjb25kUHJpbWVJbmZvLmZhY3RvckNSVEV4cG9uZW50ID0gZ2V0UGFyYW1ldGVyTVBJ
RGF0YShkcU1QSSk7CisKKyAgICAgICAgICAgIGlmIChhdXRvIGRhdGEgPSBtcGlEYXRhKGRxTVBJ
KSkKKyAgICAgICAgICAgICAgICBzZWNvbmRQcmltZUluZm8uZmFjdG9yQ1JURXhwb25lbnQgPSBX
VEZNb3ZlKGRhdGEudmFsdWUoKSk7CiAgICAgICAgIH0KIAogICAgICAgICAvLyBxaSAtLSBxXigt
MSkgbW9kIHAKICAgICAgICAgewogICAgICAgICAgICAgUEFMOjpHQ3J5cHQ6OkhhbmRsZTxnY3J5
X21waV90PiBxaU1QSShnY3J5X21waV9uZXcoMCkpOwogICAgICAgICAgICAgZ2NyeV9tcGlfaW52
bShxaU1QSSwgcU1QSSwgcE1QSSk7Ci0gICAgICAgICAgICBzZWNvbmRQcmltZUluZm8uZmFjdG9y
Q1JUQ29lZmZpY2llbnQgPSBnZXRQYXJhbWV0ZXJNUElEYXRhKHFpTVBJKTsKKworICAgICAgICAg
ICAgaWYgKGF1dG8gZGF0YSA9IG1waURhdGEocWlNUEkpKQorICAgICAgICAgICAgICAgIHNlY29u
ZFByaW1lSW5mby5mYWN0b3JDUlRDb2VmZmljaWVudCA9IFdURk1vdmUoZGF0YS52YWx1ZSgpKTsK
ICAgICAgICAgfQogCi0gICAgICAgIHJldHVybiBDcnlwdG9LZXlEYXRhUlNBQ29tcG9uZW50czo6
Y3JlYXRlUHJpdmF0ZVdpdGhBZGRpdGlvbmFsRGF0YShnZXRSU0FLZXlQYXJhbWV0ZXIobV9wbGF0
Zm9ybUtleSwgIm4iKSwKLSAgICAgICAgICAgIGdldFJTQUtleVBhcmFtZXRlcihtX3BsYXRmb3Jt
S2V5LCAiZSIpLCBnZXRQYXJhbWV0ZXJNUElEYXRhKGRNUEkpLAorICAgICAgICBWZWN0b3I8dWlu
dDhfdD4gcHJpdmF0ZUV4cG9uZW50OworICAgICAgICBpZiAoYXV0byBkYXRhID0gbXBpRGF0YShk
TVBJKSkKKyAgICAgICAgICAgIHByaXZhdGVFeHBvbmVudCA9IFdURk1vdmUoZGF0YS52YWx1ZSgp
KTsKKworICAgICAgICByZXR1cm4gQ3J5cHRvS2V5RGF0YVJTQUNvbXBvbmVudHM6OmNyZWF0ZVBy
aXZhdGVXaXRoQWRkaXRpb25hbERhdGEoCisgICAgICAgICAgICBnZXRSU0FLZXlQYXJhbWV0ZXIo
bV9wbGF0Zm9ybUtleSwgIm4iKSwgZ2V0UlNBS2V5UGFyYW1ldGVyKG1fcGxhdGZvcm1LZXksICJl
IiksIFdURk1vdmUocHJpdmF0ZUV4cG9uZW50KSwKICAgICAgICAgICAgIFdURk1vdmUoZmlyc3RQ
cmltZUluZm8pLCBXVEZNb3ZlKHNlY29uZFByaW1lSW5mbyksIFZlY3RvcjxDcnlwdG9LZXlEYXRh
UlNBQ29tcG9uZW50czo6UHJpbWVJbmZvPiB7IH0pOwogICAgIH0KICAgICBkZWZhdWx0OgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9HQ3J5cHRVdGlsaXRpZXMuaCBi
L1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvR0NyeXB0VXRpbGl0aWVzLmgKaW5kZXggNTUx
NDM5ZWU3YTM4YjI2MWRiODg2NzU2NmYzMmIzOTg2YTAzNWQ0MS4uMmZmZmExOWZjMGM3NzBjY2I1
MzM2NTFmOTMyOTQ5ZDAyNTY2YWQyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRv
L2djcnlwdC9HQ3J5cHRVdGlsaXRpZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2Ny
eXB0L0dDcnlwdFV0aWxpdGllcy5oCkBAIC0xMDUsMTQgKzEwNSw5IEBAIHN0YXRpYyBpbmxpbmUg
c3RkOjpvcHRpb25hbDxQQUw6OkNyeXB0b0RpZ2VzdDo6QWxnb3JpdGhtPiBoYXNoQ3J5cHRvRGln
ZXN0QWxnb3JpCiAgICAgfQogfQogCi1zdGF0aWMgaW5saW5lIHN0ZDo6b3B0aW9uYWw8VmVjdG9y
PHVpbnQ4X3Q+PiBtcGlEYXRhKGdjcnlfc2V4cF90IHBhcmFtU2V4cCkKK3N0YXRpYyBpbmxpbmUg
c3RkOjpvcHRpb25hbDxzaXplX3Q+IG1waUxlbmd0aChnY3J5X21waV90IHBhcmFtTVBJKQogewot
ICAgIC8vIFJldHJpZXZlIHRoZSBNUEkgdmFsdWUgc3RvcmVkIGluIHRoZSBzLWV4cHJlc3Npb246
IChuYW1lIG1waS1kYXRhKQotICAgIFBBTDo6R0NyeXB0OjpIYW5kbGU8Z2NyeV9tcGlfdD4gcGFy
YW1NUEkoZ2NyeV9zZXhwX250aF9tcGkocGFyYW1TZXhwLCAxLCBHQ1JZTVBJX0ZNVF9VU0cpKTsK
LSAgICBpZiAoIXBhcmFtTVBJKQotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotCi0gICAg
Ly8gUXVlcnkgdGhlIGRhdGEgbGVuZ3RoIGZpcnN0IHRvIHByb3Blcmx5IHByZXBhcmUgdGhlIGJ1
ZmZlci4KKyAgICAvLyBSZXRyaWV2ZSB0aGUgTVBJIGxlbmd0aCBmb3IgdGhlIHVuc2lnbmVkIGZv
cm1hdC4KICAgICBzaXplX3QgZGF0YUxlbmd0aCA9IDA7CiAgICAgZ2NyeV9lcnJvcl90IGVycm9y
ID0gZ2NyeV9tcGlfcHJpbnQoR0NSWU1QSV9GTVRfVVNHLCBudWxscHRyLCAwLCAmZGF0YUxlbmd0
aCwgcGFyYW1NUEkpOwogICAgIGlmIChlcnJvciAhPSBHUEdfRVJSX05PX0VSUk9SKSB7CkBAIC0x
MjAsOSArMTE1LDI5IEBAIHN0YXRpYyBpbmxpbmUgc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhf
dD4+IG1waURhdGEoZ2NyeV9zZXhwX3QgcGFyYW1TZXhwKQogICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogICAgIH0KIAotICAgIC8vIEZpbmFsbHksIGNvcHkgdGhlIE1QSSBkYXRhIGludG8g
YSBwcm9wZXJseS1zaXplZCBidWZmZXIuCi0gICAgVmVjdG9yPHVpbnQ4X3Q+IG91dHB1dChkYXRh
TGVuZ3RoKTsKLSAgICBlcnJvciA9IGdjcnlfbXBpX3ByaW50KEdDUllNUElfRk1UX1VTRywgb3V0
cHV0LmRhdGEoKSwgb3V0cHV0LnNpemUoKSwgbnVsbHB0ciwgcGFyYW1NUEkpOworICAgIHJldHVy
biBkYXRhTGVuZ3RoOworfQorCitzdGF0aWMgaW5saW5lIHN0ZDo6b3B0aW9uYWw8c2l6ZV90PiBt
cGlMZW5ndGgoZ2NyeV9zZXhwX3QgcGFyYW1TZXhwKQoreworICAgIC8vIFJldHJpZXZlIHRoZSBN
UEkgdmFsdWUgc3RvcmVkIGluIHRoZSBzLWV4cHJlc3Npb246IChuYW1lIG1waS1kYXRhKQorICAg
IFBBTDo6R0NyeXB0OjpIYW5kbGU8Z2NyeV9tcGlfdD4gcGFyYW1NUEkoZ2NyeV9zZXhwX250aF9t
cGkocGFyYW1TZXhwLCAxLCBHQ1JZTVBJX0ZNVF9VU0cpKTsKKyAgICBpZiAoIXBhcmFtTVBJKQor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgcmV0dXJuIG1waUxlbmd0aChwYXJh
bU1QSSk7Cit9CisKK3N0YXRpYyBpbmxpbmUgc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+
IG1waURhdGEoZ2NyeV9tcGlfdCBwYXJhbU1QSSkKK3sKKyAgICAvLyBSZXRyaWV2ZSB0aGUgTVBJ
IGxlbmd0aC4KKyAgICBhdXRvIGxlbmd0aCA9IG1waUxlbmd0aChwYXJhbU1QSSk7CisgICAgaWYg
KCFsZW5ndGgpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICAvLyBDb3B5IHRo
ZSBNUEkgZGF0YSBpbnRvIGEgcHJvcGVybHktc2l6ZWQgYnVmZmVyLgorICAgIFZlY3Rvcjx1aW50
OF90PiBvdXRwdXQoKmxlbmd0aCk7CisgICAgZ2NyeV9lcnJvcl90IGVycm9yID0gZ2NyeV9tcGlf
cHJpbnQoR0NSWU1QSV9GTVRfVVNHLCBvdXRwdXQuZGF0YSgpLCBvdXRwdXQuc2l6ZSgpLCBudWxs
cHRyLCBwYXJhbU1QSSk7CiAgICAgaWYgKGVycm9yICE9IEdQR19FUlJfTk9fRVJST1IpIHsKICAg
ICAgICAgUEFMOjpHQ3J5cHQ6OmxvZ0Vycm9yKGVycm9yKTsKICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKQEAgLTEzMSw0ICsxNDYsMTQgQEAgc3RhdGljIGlubGluZSBzdGQ6Om9wdGlvbmFs
PFZlY3Rvcjx1aW50OF90Pj4gbXBpRGF0YShnY3J5X3NleHBfdCBwYXJhbVNleHApCiAgICAgcmV0
dXJuIG91dHB1dDsKIH0KIAorc3RhdGljIGlubGluZSBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50
OF90Pj4gbXBpRGF0YShnY3J5X3NleHBfdCBwYXJhbVNleHApCit7CisgICAgLy8gUmV0cmlldmUg
dGhlIE1QSSB2YWx1ZSBzdG9yZWQgaW4gdGhlIHMtZXhwcmVzc2lvbjogKG5hbWUgbXBpLWRhdGEp
CisgICAgUEFMOjpHQ3J5cHQ6OkhhbmRsZTxnY3J5X21waV90PiBwYXJhbU1QSShnY3J5X3NleHBf
bnRoX21waShwYXJhbVNleHAsIDEsIEdDUllNUElfRk1UX1VTRykpOworICAgIGlmICghcGFyYW1N
UEkpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICByZXR1cm4gbXBpRGF0YShw
YXJhbU1QSSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
</data>

          </attachment>
      

    </bug>

</bugzilla>