<?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>156009</bug_id>
          
          <creation_ts>2016-03-29 22:08:13 -0700</creation_ts>
          <short_desc>run-webkit-tests must create parent directory of user&apos;s cache directory before running tests</short_desc>
          <delta_ts>2016-03-30 10:23:41 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>WebKit Local Build</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.11</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>155455</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Daniel Bates">dbates</reporter>
          <assigned_to name="Daniel Bates">dbates</assigned_to>
          <cc>ap</cc>
    
    <cc>bfulgham</cc>
    
    <cc>commit-queue</cc>
    
    <cc>glenn</cc>
    
    <cc>lforschler</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1178974</commentid>
    <comment_count>0</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2016-03-29 22:08:13 -0700</bug_when>
    <thetext>The script run-webkit-tests influences the path chosen by a WebKit2 child process for the user&apos;s temporary directory and user&apos;s cache directory via the environment variable DIRHELPER_USER_DIR_SUFFIX. For the user&apos;s temporary directory, run-webkit-tests creates it as part of setting up the test environment. But run-webkit-tests does not create the user&apos;s cache directory. Therefore there is race between the time AppKit creates it and when the launched WebContent and Network processes query for the path to the user&apos;s cache directory such that the OS may return the empty string to the WebContent and Network processes if queried for this directory before AppKit creates it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1178975</commentid>
    <comment_count>1</comment_count>
      <attachid>275182</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2016-03-29 22:11:42 -0700</bug_when>
    <thetext>Created attachment 275182
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1178979</commentid>
    <comment_count>2</comment_count>
      <attachid>275183</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2016-03-29 22:14:26 -0700</bug_when>
    <thetext>Created attachment 275183
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1178993</commentid>
    <comment_count>3</comment_count>
      <attachid>275183</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2016-03-29 23:54:58 -0700</bug_when>
    <thetext>Comment on attachment 275183
Patch

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

&gt; Tools/Scripts/webkitpy/port/driver.py:136
&gt; +        self._driver_user_directory_suffix = None
&gt; +        self._driver_user_cache_directory = None

Maybe we should include the user directory for completeness (&quot;/0/&quot;).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1179071</commentid>
    <comment_count>4</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2016-03-30 09:26:33 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; &gt; Tools/Scripts/webkitpy/port/driver.py:136
&gt; &gt; +        self._driver_user_directory_suffix = None
&gt; &gt; +        self._driver_user_cache_directory = None
&gt; 
&gt; Maybe we should include the user directory for completeness (&quot;/0/&quot;).

Filed bug #156025 to teach run-webkit-test to create and delete the directory _CS_DARWIN_USER_DIR.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1179082</commentid>
    <comment_count>5</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2016-03-30 10:01:07 -0700</bug_when>
    <thetext>(In reply to comment #0)
&gt; [...] the OS may return the empty string to the WebContent and Network processes if queried for [the user&apos;s cache] directory before AppKit creates it.

Further elaborating on this, the WebContent (Network) process query the OS for the path to the user&apos;s cache directory with DIRHELPER_USER_DIR_SUFFIX of the form WebKitTestRunner-X/com.apple.WebKit.WebContent.Development (WebKitTestRunner-X/com.apple.WebKit.Networking.Development) by [1]. The processes query the OS via confstr(_CS_DARWIN_USER_CACHE_DIR, ..., ...). And confstr(_CS_DARWIN_USER_CACHE_DIR, ..., ...) will create the directory if it does not exist. At the time of writing, confstr(_CS_DARWIN_USER_CACHE_DIR, ..., ...) returns a path of the form $TMPDIR/C/$DIRHELPER_USER_DIR_SUFFIX where $TMPDIR and $DIRHELPER_USER_DIR_SUFFIX are the values of the environment variables of the same name. When DIRHELPER_USER_DIR_SUFFIX := WebKitTestRunner-X/com.apple.WebKit.WebContent.Development, confstr(_CS_DARWIN_USER_CACHE_DIR, ..., ...) will compute the path $TMPDIR/C/WebKitTestRunner-X/com.apple.WebKit.WebContent.Development and call mkdir() on it. Notice that mkdir() does not recursively create directory hierarchies. If $TMPDIR/C/WebKitTestRunner-X does not exist (because AppKit did not create it, yet) then mkdir($TMPDIR/C/WebKitTestRunner-X/com.apple.WebKit.WebContent.Development) will fail with errno ENOENT - &quot;A component of the path prefix does not exist or path is an empty string.&quot; (MKDIR(2)) This failure causes a sandbox initialization error in the NetworkProcess by &lt;http://trac.webkit.org/browser/trunk/Source/WebKit2/NetworkProcess/mac/com.apple.WebKit.NetworkProcess.sb.in?rev=197808#L77&gt; because the empty string will be passed for parameter DARWIN_USER_CACHE_DIR.

[1] Disregarding the fact that the code has a correctness issue that prevents it from ever making use of such a suffix (we will fix this in bug #155455), the code that builds this DIRHELPER_USER_DIR_SUFFIX is at &lt;http://trac.webkit.org/browser/trunk/Source/WebKit2/Shared/mac/ChildProcessMac.mm?rev=198237#L131&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1179084</commentid>
    <comment_count>6</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2016-03-30 10:18:47 -0700</bug_when>
    <thetext>For completeness, Alexey Proskuryakov and I decided to fix this issue by teaching run-webkit-tests to create the user&apos;s cache directory instead of teaching the WebKit2 child process to create it to avoid adding filesystem code to WebKit2 with respect to the use of the value of the environment variable DIRHELPER_USER_DIR_SUFFIX. The value of this variable should never be used outside of WebKit&apos;s test infrastructure as it has security implications. We only make use of DIRHELPER_USER_DIR_SUFFIX when the UI process (client app) is not sandboxed as is the case for DumpRenderTree/WebKitTestRunner by &lt;http://trac.webkit.org/browser/trunk/Source/WebKit2/Shared/EntryPointUtilities/mac/XPCService/XPCServiceEntryPoint.mm?rev=190257#L100&gt;. We felt that adding code to WebKit2 to create the user&apos;s cache directory based on DIRHELPER_USER_DIR_SUFFIX could increase the attack surface should the WebKit2 be refactored without consideration of the security implications of DIRHELPER_USER_DIR_SUFFIX.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1179086</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2016-03-30 10:21:29 -0700</bug_when>
    <thetext>&lt;rdar://problem/25442682&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1179089</commentid>
    <comment_count>8</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2016-03-30 10:23:41 -0700</bug_when>
    <thetext>Committed r198842: &lt;http://trac.webkit.org/changeset/198842&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>275182</attachid>
            <date>2016-03-29 22:11:42 -0700</date>
            <delta_ts>2016-03-29 22:14:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-156009-20160329221146.patch</filename>
            <type>text/plain</type>
            <size>7414</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk4MjMwCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZjA1YjVhMzgyMWM3OGNkMWQyMzhmN2Y0MmQ2ZDJkYjgy
Y2U0YTIzYi4uMzhlODdjZWQ4NmNjMTkyMzVlZTgxOGZkYTcyYmVhNTUyOGEzNjc5NiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQx
IEBACisyMDE2LTAzLTI5ICBEYW5pZWwgQmF0ZXMgIDxkYmF0ZXNAd2Via2l0Lm9yZz4KKworICAg
ICAgICBydW4td2Via2l0LXRlc3RzIG11c3QgY3JlYXRlIHBhcmVudCBkaXJlY3Rvcnkgb2YgdXNl
cidzIGNhY2hlIGRpcmVjdG9yeSBiZWZvcmUgcnVubmluZyB0ZXN0cworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU2MDA5CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIHNjcmlwdCBydW4td2Via2l0LXRl
c3RzIG11c3QgY3JlYXRlIHRoZSBwYXJlbnQgZGlyZWN0b3J5IG9mIHRoZSB1c2VyJ3MgY2FjaGUg
ZGlyZWN0b3J5CisgICAgICAgIGJlZm9yZSBydW5uaW5nIHRlc3RzIGJlY2F1c2UgYSBXZWJLaXQy
IGNoaWxkIHByb2Nlc3MgZXhwZWN0cyB0aGF0IHRoaXMgZGlyZWN0b3J5IGV4aXN0cworICAgICAg
ICB3aGVuIGl0IHN0YXJ0cy4KKworICAgICAgICBUaGUgc2NyaXB0IHJ1bi13ZWJraXQtdGVzdHMg
aW5mbHVlbmNlcyB0aGUgcGF0aCBjaG9zZW4gYnkgYSBXZWJLaXQyIGNoaWxkIHByb2Nlc3MgZm9y
IHRoZQorICAgICAgICB1c2VyJ3MgdGVtcG9yYXJ5IGRpcmVjdG9yeSBhbmQgdXNlcidzIGNhY2hl
IGRpcmVjdG9yeSB2aWEgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlCisgICAgICAgIERJUkhFTFBF
Ul9VU0VSX0RJUl9TVUZGSVguIEZvciB0aGUgdXNlcidzIHRlbXBvcmFyeSBkaXJlY3RvcnksIHJ1
bi13ZWJraXQtdGVzdHMgY3JlYXRlcyBpdAorICAgICAgICBhcyBwYXJ0IG9mIHNldHRpbmcgdXAg
dGhlIHRlc3QgZW52aXJvbm1lbnQuIEJ1dCBydW4td2Via2l0LXRlc3RzIGRvZXMgbm90IGNyZWF0
ZSB0aGUgdXNlcidzCisgICAgICAgIGNhY2hlIGRpcmVjdG9yeS4gVGhlcmVmb3JlIHRoZXJlIGlz
IHJhY2UgYmV0d2VlbiB0aGUgdGltZSBBcHBLaXQgY3JlYXRlcyBpdCBhbmQgd2hlbiB0aGUKKyAg
ICAgICAgbGF1bmNoZWQgV2ViQ29udGVudCBhbmQgTmV0d29yayBwcm9jZXNzZXMgcXVlcnkgZm9y
IHRoZSBwYXRoIHRvIHRoZSB1c2VyJ3MgY2FjaGUgZGlyZWN0b3J5CisgICAgICAgIHN1Y2ggdGhh
dCB0aGUgT1MgbWF5IHJldHVybiB0aGUgZW1wdHkgc3RyaW5nIHRvIHRoZSBXZWJDb250ZW50IGFu
ZCBOZXR3b3JrIHByb2Nlc3NlcyBpZgorICAgICAgICBxdWVyaWVkIGZvciB0aGlzIGRpcmVjdG9y
eSBiZWZvcmUgQXBwS2l0IGNyZWF0ZXMgaXQuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5
L3BvcnQvYmFzZS5weToKKyAgICAgICAgKFBvcnQuX3BhdGhfdG9fdXNlcl9jYWNoZV9kaXJlY3Rv
cnkpOiBBZGRlZC4gQmFzZSBjbGFzcyBpbXBsZW1lbnRhdGlvbiB0aGF0IHJldHVybnMgdGhlCisg
ICAgICAgIGVtcHR5IHN0cmluZy4gV2Ugd2lsbCBvdmVycmlkZSB0aGlzIG1ldGhvZCBmb3IgdGhl
IE9TIFggcG9ydCB0byByZXR1cm4gdGhlIHBhdGggdG8gdGhlCisgICAgICAgIHVzZXIncyBjYWNo
ZSBkaXJlY3Rvcnkgd2l0aCB0aGUgc3BlY2lmaWVkIHN1ZmZpeC4KKyAgICAgICAgKFBvcnQucmVt
b3ZlX2NhY2hlX2RpcmVjdG9yeSk6IERlbGV0ZWQuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRw
eS9wb3J0L2RyaXZlci5weToKKyAgICAgICAgKERyaXZlci5fX2luaXRfXyk6IEluaXRpYWxpemUg
c2VsZi5fZHJpdmVyX3VzZXJfZGlyZWN0b3J5X3N1ZmZpeCBhbmQgc2VsZi5fZHJpdmVyX3VzZXJf
Y2FjaGVfZGlyZWN0b3J5CisgICAgICAgIHRvIHRoZSBzdWZmaXggdG8gdXNlIGZvciB0aGUgdXNl
cidzIHRlbXBvcmFyeSBhbmQgY2FjaGUgZGlyZWN0b3JpZXMgYW5kIHRoZSBwYXRoIHRvIHRoZQor
ICAgICAgICB1c2VyJ3MgY2FjaGUgZGlyZWN0b3J5LCByZXNwZWN0aXZlbHkuCisgICAgICAgIChE
cml2ZXIuX3NldHVwX2Vudmlyb25fZm9yX2RyaXZlcik6IE1vZGlmaWVkIHRvIHNldCB0aGUgZW52
aXJvbm1lbnQgdmFyaWFibGUgRElSSEVMUEVSX1VTRVJfRElSX1NVRkZJWAorICAgICAgICB0byBz
ZWxmLl9kcml2ZXJfdXNlcl9kaXJlY3Rvcnlfc3VmZml4LgorICAgICAgICAoRHJpdmVyLl9zdGFy
dCk6IENvbXB1dGUgdGhlIHVzZXIgZGlyZWN0b3J5IHN1ZmZpeCBhbmQgdGhlIHBhdGggdG8gdGhl
IHVzZXIncyBjYWNoZQorICAgICAgICBkaXJlY3RvcnkuIENyZWF0ZSB0aGUgdXNlcidzIGNhY2hl
IGRpcmVjdG9yeSAoaWYgYXBwbGljYWJsZSkuCisgICAgICAgIChEcml2ZXIuc3RvcCk6IE1vZGlm
aWVkIHRvIHJlbW92ZSBkaXJlY3Rvcnkgc2VsZi5fZHJpdmVyX3VzZXJfY2FjaGVfZGlyZWN0b3J5
IChpZiBhcHBsaWNhYmxlKS4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3BvcnQvbWFjLnB5
OgorICAgICAgICAoTWFjUG9ydC51c2VyX2NhY2hlX2RpcmVjdG9yeSk6IEFkZGVkLiBPdmVycmlk
ZXMgUG9ydC5fcGF0aF90b191c2VyX2NhY2hlX2RpcmVjdG9yeSgpLgorICAgICAgICAoTWFjUG9y
dC5yZW1vdmVfY2FjaGVfZGlyZWN0b3J5KTogRGVsZXRlZC4KKwogMjAxNi0wMy0yOCAgSm9hbm1h
cmllIERpZ2dzICA8amRpZ2dzQGlnYWxpYS5jb20+CiAKICAgICAgICAgQWRkaW5nIG15c2VsZiBh
cyBhIHJldmlld2VyLgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2Jh
c2UucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvYmFzZS5weQppbmRleCAyOTI4NDNm
ODAyMDdmMTg5MTEyYTA4Y2FlM2YyZWMwZjMzMDY0YTIxLi45MThmNjI2ZTJlZmM5OTExODdjNjc1
NjdkNmNhZDZkNDUwNDFiNTliIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Bv
cnQvYmFzZS5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvYmFzZS5weQpAQCAt
MTE4NSw4ICsxMTg1LDggQEAgY2xhc3MgUG9ydChvYmplY3QpOgogICAgIGRlZiBfZHJpdmVyX3Rl
bXBkaXIoc2VsZik6CiAgICAgICAgIHJldHVybiBzZWxmLl9maWxlc3lzdGVtLm1rZHRlbXAocHJl
Zml4PSclcy0nICUgc2VsZi5kcml2ZXJfbmFtZSgpKQogCi0gICAgZGVmIHJlbW92ZV9jYWNoZV9k
aXJlY3Rvcnkoc2VsZiwgbmFtZSk6Ci0gICAgICAgIHBhc3MKKyAgICBkZWYgX3BhdGhfdG9fdXNl
cl9jYWNoZV9kaXJlY3Rvcnkoc2VsZiwgc3VmZml4PU5vbmUpOgorICAgICAgICByZXR1cm4gTm9u
ZQogCiAgICAgZGVmIF9wYXRoX3RvX3dlYmNvcmVfbGlicmFyeShzZWxmKToKICAgICAgICAgIiIi
UmV0dXJucyB0aGUgZnVsbCBwYXRoIHRvIGEgYnVpbHQgY29weSBvZiBXZWJDb3JlLiIiIgpkaWZm
IC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2RyaXZlci5weSBiL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvcG9ydC9kcml2ZXIucHkKaW5kZXggOGZhOGQ5ZjgzZjZiMTBiNWU5ODIz
MmQ1YjIzMDIwNTEyMTRiNWNiNC4uMmFmMzJjZWY4OTI3NTZhNGMzNTdmNjgzYmUzOTYyOGNmMTQw
YjliYSAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2RyaXZlci5weQor
KysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvZHJpdmVyLnB5CkBAIC0xMzIsNiArMTMy
LDkgQEAgY2xhc3MgRHJpdmVyKG9iamVjdCk6CiAgICAgICAgIHNlbGYuX25vX3RpbWVvdXQgPSBu
b190aW1lb3V0CiAKICAgICAgICAgc2VsZi5fZHJpdmVyX3RlbXBkaXIgPSBOb25lCisgICAgICAg
IHNlbGYuX2RyaXZlcl91c2VyX2RpcmVjdG9yeV9zdWZmaXggPSBOb25lCisgICAgICAgIHNlbGYu
X2RyaXZlcl91c2VyX2NhY2hlX2RpcmVjdG9yeSA9IE5vbmUKKwogICAgICAgICAjIFdlYktpdFRl
c3RSdW5uZXIvTGF5b3V0VGVzdFJlbGF5IGNhbiByZXBvcnQgYmFjayBzdWJwcm9jZXNzIGNyYXNo
ZXMgYnkgcHJpbnRpbmcKICAgICAgICAgIyAiI0NSQVNIRUQgLSBQUk9DRVNTTkFNRSIuICBTaW5j
ZSB0aG9zZSBjYW4gaGFwcGVuIGF0IGFueSB0aW1lIGFuZCBTZXJ2ZXJQcm9jZXNzCiAgICAgICAg
ICMgd29uJ3QgYmUgYXdhcmUgb2YgdGhlbSAoc2luY2UgdGhlIGFjdHVhbCB0b29sIGRpZG4ndCBj
cmFzaCwganVzdCBhIHN1YnByb2Nlc3MpCkBAIC0zMjYsNyArMzI5LDcgQEAgY2xhc3MgRHJpdmVy
KG9iamVjdCk6CiAgICAgICAgICMgVXNlIGFuIGlzb2xhdGVkIHRlbXAgZGlyZWN0b3J5IHRoYXQg
Y2FuIGJlIGRlbGV0ZWQgYWZ0ZXIgdGVzdGluZyAoZXNwZWNpYWxseSBpbXBvcnRhbnQgb24gTWFj
LCBhcwogICAgICAgICAjIENvcmVNZWRpYSBkaXNrIGNhY2hlIGlzIGluIHRoZSB0ZW1wIGRpcmVj
dG9yeSkuCiAgICAgICAgIGVudmlyb25tZW50WydUTVBESVInXSA9IHN0cihzZWxmLl9kcml2ZXJf
dGVtcGRpcikKLSAgICAgICAgZW52aXJvbm1lbnRbJ0RJUkhFTFBFUl9VU0VSX0RJUl9TVUZGSVgn
XSA9IHN0cihvcy5wYXRoLmJhc2VuYW1lKHN0cihzZWxmLl9kcml2ZXJfdGVtcGRpcikpKQorICAg
ICAgICBlbnZpcm9ubWVudFsnRElSSEVMUEVSX1VTRVJfRElSX1NVRkZJWCddID0gc2VsZi5fZHJp
dmVyX3VzZXJfZGlyZWN0b3J5X3N1ZmZpeAogICAgICAgICAjIFB1dCBjZXJ0YWluIG5vcm1hbGx5
IHBlcnNpc3RlbnQgZmlsZXMgaW50byB0aGUgdGVtcCBkaXJlY3RvcnkgKGUuZy4gSW5kZXhlZERC
IHN0b3JhZ2UpLgogICAgICAgICBlbnZpcm9ubWVudFsnRFVNUFJFTkRFUlRSRUVfVEVNUCddID0g
c3RyKHNlbGYuX2RyaXZlcl90ZW1wZGlyKQogICAgICAgICBlbnZpcm9ubWVudFsnTE9DQUxfUkVT
T1VSQ0VfUk9PVCddID0gc3RyKHNlbGYuX3BvcnQubGF5b3V0X3Rlc3RzX2RpcigpKQpAQCAtMzQ0
LDYgKzM0NywxMCBAQCBjbGFzcyBEcml2ZXIob2JqZWN0KToKICAgICAgICAgIyBob3dldmVyIHNv
bWUgc3Vic3lzdGVtcyBvbiBzb21lIHBsYXRmb3JtcyBjb3VsZCBlbmQgdXAgdXNpbmcgcHJvY2Vz
cyBkZWZhdWx0IG9uZXMuCiAgICAgICAgIHNlbGYuX3BvcnQuX2NsZWFyX2dsb2JhbF9jYWNoZXNf
YW5kX3RlbXBvcmFyeV9maWxlcygpCiAgICAgICAgIHNlbGYuX2RyaXZlcl90ZW1wZGlyID0gc2Vs
Zi5fcG9ydC5fZHJpdmVyX3RlbXBkaXIoKQorICAgICAgICBzZWxmLl9kcml2ZXJfdXNlcl9kaXJl
Y3Rvcnlfc3VmZml4ID0gb3MucGF0aC5iYXNlbmFtZShzdHIoc2VsZi5fZHJpdmVyX3RlbXBkaXIp
KQorICAgICAgICB1c2VyX2NhY2hlX2RpcmVjdG9yeSA9IHNlbGYuX3BvcnQuX3BhdGhfdG9fdXNl
cl9jYWNoZV9kaXJlY3Rvcnkoc2VsZi5fZHJpdmVyX3VzZXJfZGlyZWN0b3J5X3N1ZmZpeCkKKyAg
ICAgICAgaWYgdXNlcl9jYWNoZV9kaXJlY3Rvcnk6CisgICAgICAgICAgICBzZWxmLl9kcml2ZXJf
dXNlcl9jYWNoZV9kaXJlY3RvcnkgPSBzZWxmLl9wb3J0Ll9maWxlc3lzdGVtLm1heWJlX21ha2Vf
ZGlyZWN0b3J5KHVzZXJfY2FjaGVfZGlyZWN0b3J5KQogICAgICAgICBzZXJ2ZXJfbmFtZSA9IHNl
bGYuX3BvcnQuZHJpdmVyX25hbWUoKQogICAgICAgICBlbnZpcm9ubWVudCA9IHNlbGYuX3BvcnQu
c2V0dXBfZW52aXJvbl9mb3Jfc2VydmVyKHNlcnZlcl9uYW1lKQogICAgICAgICBlbnZpcm9ubWVu
dCA9IHNlbGYuX3NldHVwX2Vudmlyb25fZm9yX2RyaXZlcihlbnZpcm9ubWVudCkKQEAgLTM3MCw4
ICszNzcsMTAgQEAgY2xhc3MgRHJpdmVyKG9iamVjdCk6CiAKICAgICAgICAgaWYgc2VsZi5fZHJp
dmVyX3RlbXBkaXI6CiAgICAgICAgICAgICBzZWxmLl9wb3J0Ll9maWxlc3lzdGVtLnJtdHJlZShz
dHIoc2VsZi5fZHJpdmVyX3RlbXBkaXIpKQotICAgICAgICAgICAgc2VsZi5fcG9ydC5yZW1vdmVf
Y2FjaGVfZGlyZWN0b3J5KG9zLnBhdGguYmFzZW5hbWUoc3RyKHNlbGYuX2RyaXZlcl90ZW1wZGly
KSkpCiAgICAgICAgICAgICBzZWxmLl9kcml2ZXJfdGVtcGRpciA9IE5vbmUKKyAgICAgICAgaWYg
c2VsZi5fZHJpdmVyX3VzZXJfY2FjaGVfZGlyZWN0b3J5OgorICAgICAgICAgICAgc2VsZi5fcG9y
dC5fZmlsZXN5c3RlbS5ybXRyZWUoc2VsZi5fZHJpdmVyX3VzZXJfY2FjaGVfZGlyZWN0b3J5KQor
ICAgICAgICAgICAgc2VsZi5fZHJpdmVyX3VzZXJfY2FjaGVfZGlyZWN0b3J5ID0gTm9uZQogCiAg
ICAgZGVmIGNtZF9saW5lKHNlbGYsIHBpeGVsX3Rlc3RzLCBwZXJfdGVzdF9hcmdzKToKICAgICAg
ICAgY21kID0gc2VsZi5fY29tbWFuZF93cmFwcGVyKCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvcG9ydC9tYWMucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvbWFj
LnB5CmluZGV4IGM5NTEzYzdlNzQ2YmU0ZjQ0OWRiODgyZGJjZWI4ZWI2ODg3MGY5NjYuLjVjZDc5
OWM2ZjY1OWQ1NjcyMjNjODQ3YjlkNDYyZTNkYjNkNDhiOWEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvcG9ydC9tYWMucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9w
b3J0L21hYy5weQpAQCAtMTE3LDggKzExNywxNSBAQCBjbGFzcyBNYWNQb3J0KEFwcGxlUG9ydCk6
CiAgICAgICAgIHNlbGYuX2ZpbGVzeXN0ZW0ucm10cmVlKG9zLnBhdGguZXhwYW5kdXNlcignfi9M
aWJyYXJ5L0NhY2hlcy8nICsgc2VsZi5kcml2ZXJfbmFtZSgpKSkKICAgICAgICAgc2VsZi5fZmls
ZXN5c3RlbS5ybXRyZWUob3MucGF0aC5leHBhbmR1c2VyKCd+L0xpYnJhcnkvV2ViS2l0LycgKyBz
ZWxmLmRyaXZlcl9uYW1lKCkpKQogCi0gICAgZGVmIHJlbW92ZV9jYWNoZV9kaXJlY3Rvcnkoc2Vs
ZiwgbmFtZSk6Ci0gICAgICAgIHNlbGYuX2ZpbGVzeXN0ZW0ucm10cmVlKG9zLmNvbmZzdHIoNjU1
MzgpICsgbmFtZSkKKyAgICBkZWYgX3BhdGhfdG9fdXNlcl9jYWNoZV9kaXJlY3Rvcnkoc2VsZiwg
c3VmZml4PU5vbmUpOgorICAgICAgICBzYXZlZF9zdWZmaXggPSBOb25lCisgICAgICAgIGlmIHN1
ZmZpeCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHNhdmVkX3N1ZmZpeCA9IG9zLmVudmlyb24u
Z2V0KCJESVJIRUxQRVJfVVNFUl9ESVJfU1VGRklYIikKKyAgICAgICAgICAgIG9zLmVudmlyb25b
IkRJUkhFTFBFUl9VU0VSX0RJUl9TVUZGSVgiXSA9IHN1ZmZpeAorICAgICAgICByZXN1bHQgPSBv
cy5jb25mc3RyKDY1NTM4KSAgIyBfQ1NfREFSV0lOX1VTRVJfQ0FDSEVfRElSCisgICAgICAgIGlm
IHNhdmVkX3N1ZmZpeCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIG9zLmVudmlyb25bIkRJUkhF
TFBFUl9VU0VSX0RJUl9TVUZGSVgiXSA9IHNhdmVkX3N1ZmZpeAorICAgICAgICByZXR1cm4gcmVz
dWx0CiAKICAgICBkZWYgb3BlcmF0aW5nX3N5c3RlbShzZWxmKToKICAgICAgICAgcmV0dXJuICdt
YWMnCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>275183</attachid>
            <date>2016-03-29 22:14:26 -0700</date>
            <delta_ts>2016-03-29 23:54:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-156009-20160329221430.patch</filename>
            <type>text/plain</type>
            <size>7531</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk4MjMwCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNmNmZGFhZTU0OTQ2NTVkNGMzMjhlYzIzZGI3Yjc2MDgy
MTA3ZTFjMy4uZDFhNGQ1YjhlOWRkZTgxOTFmOTA2NDZlNjY4NzVlNmJmYWQzYTJmYSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQx
IEBACisyMDE2LTAzLTI5ICBEYW5pZWwgQmF0ZXMgIDxkYmF0ZXNAd2Via2l0Lm9yZz4KKworICAg
ICAgICBydW4td2Via2l0LXRlc3RzIG11c3QgY3JlYXRlIHBhcmVudCBkaXJlY3Rvcnkgb2YgdXNl
cidzIGNhY2hlIGRpcmVjdG9yeSBiZWZvcmUgcnVubmluZyB0ZXN0cworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU2MDA5CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIHNjcmlwdCBydW4td2Via2l0LXRl
c3RzIG11c3QgY3JlYXRlIHRoZSBwYXJlbnQgZGlyZWN0b3J5IG9mIHRoZSB1c2VyJ3MgY2FjaGUg
ZGlyZWN0b3J5CisgICAgICAgIGJlZm9yZSBydW5uaW5nIHRlc3RzIGJlY2F1c2UgYSBXZWJLaXQy
IGNoaWxkIHByb2Nlc3MgZXhwZWN0cyB0aGF0IHRoaXMgZGlyZWN0b3J5IGV4aXN0cworICAgICAg
ICB3aGVuIGl0IHN0YXJ0cy4KKworICAgICAgICBUaGUgc2NyaXB0IHJ1bi13ZWJraXQtdGVzdHMg
aW5mbHVlbmNlcyB0aGUgcGF0aCBjaG9zZW4gYnkgYSBXZWJLaXQyIGNoaWxkIHByb2Nlc3MgZm9y
IHRoZQorICAgICAgICB1c2VyJ3MgdGVtcG9yYXJ5IGRpcmVjdG9yeSBhbmQgdXNlcidzIGNhY2hl
IGRpcmVjdG9yeSB2aWEgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlCisgICAgICAgIERJUkhFTFBF
Ul9VU0VSX0RJUl9TVUZGSVguIEZvciB0aGUgdXNlcidzIHRlbXBvcmFyeSBkaXJlY3RvcnksIHJ1
bi13ZWJraXQtdGVzdHMgY3JlYXRlcyBpdAorICAgICAgICBhcyBwYXJ0IG9mIHNldHRpbmcgdXAg
dGhlIHRlc3QgZW52aXJvbm1lbnQuIEJ1dCBydW4td2Via2l0LXRlc3RzIGRvZXMgbm90IGNyZWF0
ZSB0aGUgdXNlcidzCisgICAgICAgIGNhY2hlIGRpcmVjdG9yeS4gVGhlcmVmb3JlIHRoZXJlIGlz
IHJhY2UgYmV0d2VlbiB0aGUgdGltZSBBcHBLaXQgY3JlYXRlcyBpdCBhbmQgd2hlbiB0aGUKKyAg
ICAgICAgbGF1bmNoZWQgV2ViQ29udGVudCBhbmQgTmV0d29yayBwcm9jZXNzZXMgcXVlcnkgZm9y
IHRoZSBwYXRoIHRvIHRoZSB1c2VyJ3MgY2FjaGUgZGlyZWN0b3J5CisgICAgICAgIHN1Y2ggdGhh
dCB0aGUgT1MgbWF5IHJldHVybiB0aGUgZW1wdHkgc3RyaW5nIHRvIHRoZSBXZWJDb250ZW50IGFu
ZCBOZXR3b3JrIHByb2Nlc3NlcyBpZgorICAgICAgICBxdWVyaWVkIGZvciB0aGlzIGRpcmVjdG9y
eSBiZWZvcmUgQXBwS2l0IGNyZWF0ZXMgaXQuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5
L3BvcnQvYmFzZS5weToKKyAgICAgICAgKFBvcnQuX3BhdGhfdG9fdXNlcl9jYWNoZV9kaXJlY3Rv
cnkpOiBBZGRlZC4gQmFzZSBjbGFzcyBpbXBsZW1lbnRhdGlvbiB0aGF0IHJldHVybnMgdGhlCisg
ICAgICAgIGVtcHR5IHN0cmluZy4gV2Ugd2lsbCBvdmVycmlkZSB0aGlzIG1ldGhvZCBmb3IgdGhl
IE9TIFggcG9ydCB0byByZXR1cm4gdGhlIHBhdGggdG8gdGhlCisgICAgICAgIHVzZXIncyBjYWNo
ZSBkaXJlY3Rvcnkgd2l0aCB0aGUgc3BlY2lmaWVkIHN1ZmZpeC4KKyAgICAgICAgKFBvcnQucmVt
b3ZlX2NhY2hlX2RpcmVjdG9yeSk6IERlbGV0ZWQuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRw
eS9wb3J0L2RyaXZlci5weToKKyAgICAgICAgKERyaXZlci5fX2luaXRfXyk6IEluaXRpYWxpemUg
c2VsZi5fZHJpdmVyX3VzZXJfZGlyZWN0b3J5X3N1ZmZpeCBhbmQgc2VsZi5fZHJpdmVyX3VzZXJf
Y2FjaGVfZGlyZWN0b3J5CisgICAgICAgIHRvIHRoZSBzdWZmaXggdG8gdXNlIGZvciB0aGUgdXNl
cidzIHRlbXBvcmFyeSBhbmQgY2FjaGUgZGlyZWN0b3JpZXMgYW5kIHRoZSBwYXRoIHRvIHRoZQor
ICAgICAgICB1c2VyJ3MgY2FjaGUgZGlyZWN0b3J5LCByZXNwZWN0aXZlbHkuCisgICAgICAgIChE
cml2ZXIuX3NldHVwX2Vudmlyb25fZm9yX2RyaXZlcik6IE1vZGlmaWVkIHRvIHNldCB0aGUgZW52
aXJvbm1lbnQgdmFyaWFibGUgRElSSEVMUEVSX1VTRVJfRElSX1NVRkZJWAorICAgICAgICB0byBz
ZWxmLl9kcml2ZXJfdXNlcl9kaXJlY3Rvcnlfc3VmZml4LgorICAgICAgICAoRHJpdmVyLl9zdGFy
dCk6IENvbXB1dGUgdGhlIHVzZXIgZGlyZWN0b3J5IHN1ZmZpeCBhbmQgdGhlIHBhdGggdG8gdGhl
IHVzZXIncyBjYWNoZQorICAgICAgICBkaXJlY3RvcnkuIENyZWF0ZSB0aGUgdXNlcidzIGNhY2hl
IGRpcmVjdG9yeSAoaWYgYXBwbGljYWJsZSkuCisgICAgICAgIChEcml2ZXIuc3RvcCk6IE1vZGlm
aWVkIHRvIHJlbW92ZSBkaXJlY3Rvcnkgc2VsZi5fZHJpdmVyX3VzZXJfY2FjaGVfZGlyZWN0b3J5
IChpZiBhcHBsaWNhYmxlKS4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3BvcnQvbWFjLnB5
OgorICAgICAgICAoTWFjUG9ydC51c2VyX2NhY2hlX2RpcmVjdG9yeSk6IEFkZGVkLiBPdmVycmlk
ZXMgUG9ydC5fcGF0aF90b191c2VyX2NhY2hlX2RpcmVjdG9yeSgpLgorICAgICAgICAoTWFjUG9y
dC5yZW1vdmVfY2FjaGVfZGlyZWN0b3J5KTogRGVsZXRlZC4KKwogMjAxNi0wMy0yOSAgQmVuamFt
aW4gUG91bGFpbiAgPGJwb3VsYWluQGFwcGxlLmNvbT4KIAogICAgICAgICBbV1RGXSBSZW1vdmlu
ZyBhIHNtYXJ0IHBvaW50ZXIgZnJvbSBIYXNoVGFibGUgaXNzdWVzIHR3byBzdG9yZXMgdG8gdGhl
IHNhbWUgbG9jYXRpb24KZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9i
YXNlLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2Jhc2UucHkKaW5kZXggMjkyODQz
ZjgwMjA3ZjE4OTExMmEwOGNhZTNmMmVjMGYzMzA2NGEyMS4uOTE4ZjYyNmUyZWZjOTkxMTg3YzY3
NTY3ZDZjYWQ2ZDQ1MDQxYjU5YiAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9w
b3J0L2Jhc2UucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2Jhc2UucHkKQEAg
LTExODUsOCArMTE4NSw4IEBAIGNsYXNzIFBvcnQob2JqZWN0KToKICAgICBkZWYgX2RyaXZlcl90
ZW1wZGlyKHNlbGYpOgogICAgICAgICByZXR1cm4gc2VsZi5fZmlsZXN5c3RlbS5ta2R0ZW1wKHBy
ZWZpeD0nJXMtJyAlIHNlbGYuZHJpdmVyX25hbWUoKSkKIAotICAgIGRlZiByZW1vdmVfY2FjaGVf
ZGlyZWN0b3J5KHNlbGYsIG5hbWUpOgotICAgICAgICBwYXNzCisgICAgZGVmIF9wYXRoX3RvX3Vz
ZXJfY2FjaGVfZGlyZWN0b3J5KHNlbGYsIHN1ZmZpeD1Ob25lKToKKyAgICAgICAgcmV0dXJuIE5v
bmUKIAogICAgIGRlZiBfcGF0aF90b193ZWJjb3JlX2xpYnJhcnkoc2VsZik6CiAgICAgICAgICIi
IlJldHVybnMgdGhlIGZ1bGwgcGF0aCB0byBhIGJ1aWx0IGNvcHkgb2YgV2ViQ29yZS4iIiIKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9kcml2ZXIucHkgYi9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L3BvcnQvZHJpdmVyLnB5CmluZGV4IDhmYThkOWY4M2Y2YjEwYjVlOTgy
MzJkNWIyMzAyMDUxMjE0YjVjYjQuLjJhZjMyY2VmODkyNzU2YTRjMzU3ZjY4M2JlMzk2MjhjZjE0
MGI5YmEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9kcml2ZXIucHkK
KysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2RyaXZlci5weQpAQCAtMTMyLDYgKzEz
Miw5IEBAIGNsYXNzIERyaXZlcihvYmplY3QpOgogICAgICAgICBzZWxmLl9ub190aW1lb3V0ID0g
bm9fdGltZW91dAogCiAgICAgICAgIHNlbGYuX2RyaXZlcl90ZW1wZGlyID0gTm9uZQorICAgICAg
ICBzZWxmLl9kcml2ZXJfdXNlcl9kaXJlY3Rvcnlfc3VmZml4ID0gTm9uZQorICAgICAgICBzZWxm
Ll9kcml2ZXJfdXNlcl9jYWNoZV9kaXJlY3RvcnkgPSBOb25lCisKICAgICAgICAgIyBXZWJLaXRU
ZXN0UnVubmVyL0xheW91dFRlc3RSZWxheSBjYW4gcmVwb3J0IGJhY2sgc3VicHJvY2VzcyBjcmFz
aGVzIGJ5IHByaW50aW5nCiAgICAgICAgICMgIiNDUkFTSEVEIC0gUFJPQ0VTU05BTUUiLiAgU2lu
Y2UgdGhvc2UgY2FuIGhhcHBlbiBhdCBhbnkgdGltZSBhbmQgU2VydmVyUHJvY2VzcwogICAgICAg
ICAjIHdvbid0IGJlIGF3YXJlIG9mIHRoZW0gKHNpbmNlIHRoZSBhY3R1YWwgdG9vbCBkaWRuJ3Qg
Y3Jhc2gsIGp1c3QgYSBzdWJwcm9jZXNzKQpAQCAtMzI2LDcgKzMyOSw3IEBAIGNsYXNzIERyaXZl
cihvYmplY3QpOgogICAgICAgICAjIFVzZSBhbiBpc29sYXRlZCB0ZW1wIGRpcmVjdG9yeSB0aGF0
IGNhbiBiZSBkZWxldGVkIGFmdGVyIHRlc3RpbmcgKGVzcGVjaWFsbHkgaW1wb3J0YW50IG9uIE1h
YywgYXMKICAgICAgICAgIyBDb3JlTWVkaWEgZGlzayBjYWNoZSBpcyBpbiB0aGUgdGVtcCBkaXJl
Y3RvcnkpLgogICAgICAgICBlbnZpcm9ubWVudFsnVE1QRElSJ10gPSBzdHIoc2VsZi5fZHJpdmVy
X3RlbXBkaXIpCi0gICAgICAgIGVudmlyb25tZW50WydESVJIRUxQRVJfVVNFUl9ESVJfU1VGRklY
J10gPSBzdHIob3MucGF0aC5iYXNlbmFtZShzdHIoc2VsZi5fZHJpdmVyX3RlbXBkaXIpKSkKKyAg
ICAgICAgZW52aXJvbm1lbnRbJ0RJUkhFTFBFUl9VU0VSX0RJUl9TVUZGSVgnXSA9IHNlbGYuX2Ry
aXZlcl91c2VyX2RpcmVjdG9yeV9zdWZmaXgKICAgICAgICAgIyBQdXQgY2VydGFpbiBub3JtYWxs
eSBwZXJzaXN0ZW50IGZpbGVzIGludG8gdGhlIHRlbXAgZGlyZWN0b3J5IChlLmcuIEluZGV4ZWRE
QiBzdG9yYWdlKS4KICAgICAgICAgZW52aXJvbm1lbnRbJ0RVTVBSRU5ERVJUUkVFX1RFTVAnXSA9
IHN0cihzZWxmLl9kcml2ZXJfdGVtcGRpcikKICAgICAgICAgZW52aXJvbm1lbnRbJ0xPQ0FMX1JF
U09VUkNFX1JPT1QnXSA9IHN0cihzZWxmLl9wb3J0LmxheW91dF90ZXN0c19kaXIoKSkKQEAgLTM0
NCw2ICszNDcsMTAgQEAgY2xhc3MgRHJpdmVyKG9iamVjdCk6CiAgICAgICAgICMgaG93ZXZlciBz
b21lIHN1YnN5c3RlbXMgb24gc29tZSBwbGF0Zm9ybXMgY291bGQgZW5kIHVwIHVzaW5nIHByb2Nl
c3MgZGVmYXVsdCBvbmVzLgogICAgICAgICBzZWxmLl9wb3J0Ll9jbGVhcl9nbG9iYWxfY2FjaGVz
X2FuZF90ZW1wb3JhcnlfZmlsZXMoKQogICAgICAgICBzZWxmLl9kcml2ZXJfdGVtcGRpciA9IHNl
bGYuX3BvcnQuX2RyaXZlcl90ZW1wZGlyKCkKKyAgICAgICAgc2VsZi5fZHJpdmVyX3VzZXJfZGly
ZWN0b3J5X3N1ZmZpeCA9IG9zLnBhdGguYmFzZW5hbWUoc3RyKHNlbGYuX2RyaXZlcl90ZW1wZGly
KSkKKyAgICAgICAgdXNlcl9jYWNoZV9kaXJlY3RvcnkgPSBzZWxmLl9wb3J0Ll9wYXRoX3RvX3Vz
ZXJfY2FjaGVfZGlyZWN0b3J5KHNlbGYuX2RyaXZlcl91c2VyX2RpcmVjdG9yeV9zdWZmaXgpCisg
ICAgICAgIGlmIHVzZXJfY2FjaGVfZGlyZWN0b3J5OgorICAgICAgICAgICAgc2VsZi5fZHJpdmVy
X3VzZXJfY2FjaGVfZGlyZWN0b3J5ID0gc2VsZi5fcG9ydC5fZmlsZXN5c3RlbS5tYXliZV9tYWtl
X2RpcmVjdG9yeSh1c2VyX2NhY2hlX2RpcmVjdG9yeSkKICAgICAgICAgc2VydmVyX25hbWUgPSBz
ZWxmLl9wb3J0LmRyaXZlcl9uYW1lKCkKICAgICAgICAgZW52aXJvbm1lbnQgPSBzZWxmLl9wb3J0
LnNldHVwX2Vudmlyb25fZm9yX3NlcnZlcihzZXJ2ZXJfbmFtZSkKICAgICAgICAgZW52aXJvbm1l
bnQgPSBzZWxmLl9zZXR1cF9lbnZpcm9uX2Zvcl9kcml2ZXIoZW52aXJvbm1lbnQpCkBAIC0zNzAs
OCArMzc3LDEwIEBAIGNsYXNzIERyaXZlcihvYmplY3QpOgogCiAgICAgICAgIGlmIHNlbGYuX2Ry
aXZlcl90ZW1wZGlyOgogICAgICAgICAgICAgc2VsZi5fcG9ydC5fZmlsZXN5c3RlbS5ybXRyZWUo
c3RyKHNlbGYuX2RyaXZlcl90ZW1wZGlyKSkKLSAgICAgICAgICAgIHNlbGYuX3BvcnQucmVtb3Zl
X2NhY2hlX2RpcmVjdG9yeShvcy5wYXRoLmJhc2VuYW1lKHN0cihzZWxmLl9kcml2ZXJfdGVtcGRp
cikpKQogICAgICAgICAgICAgc2VsZi5fZHJpdmVyX3RlbXBkaXIgPSBOb25lCisgICAgICAgIGlm
IHNlbGYuX2RyaXZlcl91c2VyX2NhY2hlX2RpcmVjdG9yeToKKyAgICAgICAgICAgIHNlbGYuX3Bv
cnQuX2ZpbGVzeXN0ZW0ucm10cmVlKHNlbGYuX2RyaXZlcl91c2VyX2NhY2hlX2RpcmVjdG9yeSkK
KyAgICAgICAgICAgIHNlbGYuX2RyaXZlcl91c2VyX2NhY2hlX2RpcmVjdG9yeSA9IE5vbmUKIAog
ICAgIGRlZiBjbWRfbGluZShzZWxmLCBwaXhlbF90ZXN0cywgcGVyX3Rlc3RfYXJncyk6CiAgICAg
ICAgIGNtZCA9IHNlbGYuX2NvbW1hbmRfd3JhcHBlcigpCmRpZmYgLS1naXQgYS9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L3BvcnQvbWFjLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L21h
Yy5weQppbmRleCBjOTUxM2M3ZTc0NmJlNGY0NDlkYjg4MmRiY2ViOGViNjg4NzBmOTY2Li45YmZi
ODIyYTg0Njc5ZGFhMzNlYmEyN2QzMWRiODY1Mjk1MzRmOTRjIDEwMDY0NAotLS0gYS9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L3BvcnQvbWFjLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
cG9ydC9tYWMucHkKQEAgLTExNyw4ICsxMTcsMTYgQEAgY2xhc3MgTWFjUG9ydChBcHBsZVBvcnQp
OgogICAgICAgICBzZWxmLl9maWxlc3lzdGVtLnJtdHJlZShvcy5wYXRoLmV4cGFuZHVzZXIoJ34v
TGlicmFyeS9DYWNoZXMvJyArIHNlbGYuZHJpdmVyX25hbWUoKSkpCiAgICAgICAgIHNlbGYuX2Zp
bGVzeXN0ZW0ucm10cmVlKG9zLnBhdGguZXhwYW5kdXNlcignfi9MaWJyYXJ5L1dlYktpdC8nICsg
c2VsZi5kcml2ZXJfbmFtZSgpKSkKIAotICAgIGRlZiByZW1vdmVfY2FjaGVfZGlyZWN0b3J5KHNl
bGYsIG5hbWUpOgotICAgICAgICBzZWxmLl9maWxlc3lzdGVtLnJtdHJlZShvcy5jb25mc3RyKDY1
NTM4KSArIG5hbWUpCisgICAgZGVmIF9wYXRoX3RvX3VzZXJfY2FjaGVfZGlyZWN0b3J5KHNlbGYs
IHN1ZmZpeD1Ob25lKToKKyAgICAgICAgRElSSEVMUEVSX1VTRVJfRElSX1NVRkZJWCA9ICJESVJI
RUxQRVJfVVNFUl9ESVJfU1VGRklYIgorICAgICAgICBzYXZlZF9zdWZmaXggPSBOb25lCisgICAg
ICAgIGlmIHN1ZmZpeCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHNhdmVkX3N1ZmZpeCA9IG9z
LmVudmlyb24uZ2V0KERJUkhFTFBFUl9VU0VSX0RJUl9TVUZGSVgpCisgICAgICAgICAgICBvcy5l
bnZpcm9uW0RJUkhFTFBFUl9VU0VSX0RJUl9TVUZGSVhdID0gc3VmZml4CisgICAgICAgIHJlc3Vs
dCA9IG9zLmNvbmZzdHIoNjU1MzgpICAjIF9DU19EQVJXSU5fVVNFUl9DQUNIRV9ESVIKKyAgICAg
ICAgaWYgc2F2ZWRfc3VmZml4IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgb3MuZW52aXJvbltE
SVJIRUxQRVJfVVNFUl9ESVJfU1VGRklYXSA9IHNhdmVkX3N1ZmZpeAorICAgICAgICByZXR1cm4g
cmVzdWx0CiAKICAgICBkZWYgb3BlcmF0aW5nX3N5c3RlbShzZWxmKToKICAgICAgICAgcmV0dXJu
ICdtYWMnCg==
</data>
<flag name="review"
          id="299552"
          type_id="1"
          status="+"
          setter="ap"
    />
          </attachment>
      

    </bug>

</bugzilla>