<?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>76935</bug_id>
          
          <creation_ts>2012-01-24 13:00:04 -0800</creation_ts>
          <short_desc>[Windows] NRWT doesn&apos;t save crash logs on Apple&apos;s Windows port</short_desc>
          <delta_ts>2013-05-30 20:31:31 -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>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Windows 7</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar, NRWT, PlatformOnly</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>38756</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Adam Roben (:aroben)">aroben</reporter>
          <assigned_to name="Brent Fulgham">bfulgham</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dpranke</cc>
    
    <cc>eric</cc>
    
    <cc>glenn</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>541585</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2012-01-24 13:00:04 -0800</bug_when>
    <thetext>NRWT doesn&apos;t save crash logs on Windows like ORWT does. This is an important thing to support before we switch our bots over to NRWT.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>541586</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2012-01-24 13:00:20 -0800</bug_when>
    <thetext>&lt;rdar://problem/10747585&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>893516</commentid>
    <comment_count>2</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2013-05-24 17:03:49 -0700</bug_when>
    <thetext>See &apos;setUpWindowsCrashLogSaving&apos; in the ORWT Perl script to see what needs to be done here.

Note: Windows 8 takes long strides to make this even more impossible.  We might need to require that test bots have the registry key permissions changes to permit regular users to change this particular value.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>895616</commentid>
    <comment_count>3</comment_count>
      <attachid>203370</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2013-05-30 12:00:55 -0700</bug_when>
    <thetext>Created attachment 203370
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>895620</commentid>
    <comment_count>4</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2013-05-30 12:09:29 -0700</bug_when>
    <thetext>To encourage Windows 7 and Windows 8 to allow the registry keys to be modified, you need to do the following:

1. Since we are running in 32-bit mode, the actual key to be modified is &quot;HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows NT\CurrentVersion\AeDebug&quot;  This is the location we are touching using the &quot;regtool --wow32&quot; command.

2. Adjust the security settings as follows:
(a) Launch regedit as an Administrator.
(b) Navigate to &quot;HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows NT\CurrentVersion\AeDebug&quot;.
(c) Right-click on this node, and select &apos;Permissions&apos;
(d) Make sure that the &quot;Users&quot; group is given Full Control over this key.

This permission adjustment is needed to make sure that Windows will allow the script to flip the desired debugger from the ntsd.exe program back to whatever the user wanted originally.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>895629</commentid>
    <comment_count>5</comment_count>
      <attachid>203370</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-05-30 12:21:26 -0700</bug_when>
    <thetext>Comment on attachment 203370
Patch

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

Looks okay but needs to use more webkitpy abstractions to be consistent.

&gt; Tools/Scripts/webkitpy/port/win.py:141
&gt; +        possible_paths = [self._filesystem.join(os.environ[&apos;PROGRAMFILES&apos;], &quot;Windows Kits&quot;, &quot;8.0&quot;, &quot;Debuggers&quot;, &quot;x64&quot;, &quot;ntsd.exe&quot;),
&gt; +                          self._filesystem.join(os.environ[&apos;PROGRAMFILES&apos;], &quot;Windows Kits&quot;, &quot;8.0&quot;, &quot;Debuggers&quot;, &quot;x86&quot;, &quot;ntsd.exe&quot;),
&gt; +                          self._filesystem.join(os.environ[&apos;PROGRAMFILES&apos;], &quot;Debugging Tools for Windows (x86)&quot;, &quot;ntsd.exe&quot;),
&gt; +                          self._filesystem.join(os.environ[&apos;ProgramW6432&apos;], &quot;Debugging Tools for Windows (x64)&quot;, &quot;ntsd.exe&quot;),
&gt; +                          self._filesystem.join(os.environ[&apos;SYSTEMROOT&apos;], &quot;system32&quot;, &quot;ntsd.exe&quot;)]

Nit: wrong indentation. self. should appear exactly 4 spaces to the right of possible.

&gt; Tools/Scripts/webkitpy/port/win.py:157
&gt; +        with open(command_file, &quot;w&quot;) as text_file:
&gt; +            text_file.write(&quot;.logopen /t \&quot;%s\\CrashLog%s.txt\&quot;\n&quot; % (cygpath(self.results_directory()), self.CRASH_LOG_PREFIX))
&gt; +            text_file.write(&quot;.srcpath \&quot;%s\&quot;\n&quot; % cygpath(os.environ[&apos;WEBKIT_SOURCE&apos;]))
&gt; +            text_file.write(&quot;!analyze -vv\n&quot;)
&gt; +            text_file.write(&quot;~*kpn\n&quot;)
&gt; +            text_file.write(&quot;q\n&quot;)

Please use self._filesystem.write_text_file. cygpath(os.environ[&apos;WEBKIT_SOURCE&apos;]) should be read off of WebKitFinder.webkit_base.

&gt; Tools/Scripts/webkitpy/port/win.py:162
&gt; +        value = subprocess.Popen([&quot;regtool&quot;, &quot;--wow32&quot;, &quot;get&quot;, registry_key], bufsize=1024, stdout=subprocess.PIPE).communicate()[0]

Use webkitpy.common.system.executive.

&gt; Tools/Scripts/webkitpy/port/win.py:174
&gt; +        rc = subprocess.call([&quot;regtool&quot;, &quot;--wow32&quot;, &quot;set&quot;, &quot;-s&quot;, str(registry_key), str(value)])
&gt; +        if rc == 2:
&gt; +            rc = subprocess.call([&quot;regtool&quot;, &quot;--wow32&quot;, &quot;add&quot;, &quot;-s&quot;, str(registry_key)])
&gt; +            if rc == 0:
&gt; +                rc = subprocess.call([&quot;regtool&quot;, &quot;--wow32&quot;, &quot;set&quot;, &quot;-s&quot;, str(registry_key), str(value)])
&gt; +        if rc:
&gt; +            _log.warn(&quot;Error setting key: %s to value %s.  Error=%ld.&quot; % (key, value, rc))
&gt; +            return False

Ditto.

&gt; Tools/Scripts/webkitpy/port/win.py:190
&gt; +        ntsd_path = self._ntsd_location()
&gt; +        if None == ntsd_path:

Do: not ntsd_path.

&gt; Tools/Scripts/webkitpy/port/win.py:199
&gt; +        command_file = self.create_debugger_command_file()
&gt; +        if None == command_file:

Ditto.

&gt; Tools/Scripts/webkitpy/port/win.py:201
&gt; +        debugger_options = &quot;\&quot;&quot; + cygpath(ntsd_path) + &quot;\&quot; -p %ld -e %ld -g -lines -cf \&quot;&quot; + cygpath(command_file) + &quot;\&quot;&quot;

Why not &apos;&quot;%s&quot; -p %ld -e %ld -g -lines -cf &quot;%s&quot;&apos; % (cygpath(ntsd_path), cygpath(command_file))?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>895751</commentid>
    <comment_count>6</comment_count>
      <attachid>203370</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2013-05-30 17:47:43 -0700</bug_when>
    <thetext>Comment on attachment 203370
Patch

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

&gt;&gt; Tools/Scripts/webkitpy/port/win.py:141
&gt;&gt; +                          self._filesystem.join(os.environ[&apos;SYSTEMROOT&apos;], &quot;system32&quot;, &quot;ntsd.exe&quot;)]
&gt; 
&gt; Nit: wrong indentation. self. should appear exactly 4 spaces to the right of possible.

Done.

&gt;&gt; Tools/Scripts/webkitpy/port/win.py:157
&gt;&gt; +            text_file.write(&quot;q\n&quot;)
&gt; 
&gt; Please use self._filesystem.write_text_file. cygpath(os.environ[&apos;WEBKIT_SOURCE&apos;]) should be read off of WebKitFinder.webkit_base.

Great!  I didn&apos;t know about WebKitFinder.  That&apos;s very useful.

&gt;&gt; Tools/Scripts/webkitpy/port/win.py:162
&gt;&gt; +        value = subprocess.Popen([&quot;regtool&quot;, &quot;--wow32&quot;, &quot;get&quot;, registry_key], bufsize=1024, stdout=subprocess.PIPE).communicate()[0]
&gt; 
&gt; Use webkitpy.common.system.executive.

Done

&gt;&gt; Tools/Scripts/webkitpy/port/win.py:174
&gt;&gt; +            return False
&gt; 
&gt; Ditto.

Done

&gt;&gt; Tools/Scripts/webkitpy/port/win.py:190
&gt;&gt; +        if None == ntsd_path:
&gt; 
&gt; Do: not ntsd_path.

Done

&gt;&gt; Tools/Scripts/webkitpy/port/win.py:199
&gt;&gt; +        if None == command_file:
&gt; 
&gt; Ditto.

Done

&gt;&gt; Tools/Scripts/webkitpy/port/win.py:201
&gt;&gt; +        debugger_options = &quot;\&quot;&quot; + cygpath(ntsd_path) + &quot;\&quot; -p %ld -e %ld -g -lines -cf \&quot;&quot; + cygpath(command_file) + &quot;\&quot;&quot;
&gt; 
&gt; Why not &apos;&quot;%s&quot; -p %ld -e %ld -g -lines -cf &quot;%s&quot;&apos; % (cygpath(ntsd_path), cygpath(command_file))?

Yes, that&apos;s much cleaner. I had to use the new string format syntax to avoid having to escape all of the other format specifiers (e.g., the &apos;%ld&apos; tokens) that are meant to be passed to the external utility.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>895753</commentid>
    <comment_count>7</comment_count>
      <attachid>203403</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2013-05-30 17:49:13 -0700</bug_when>
    <thetext>Created attachment 203403
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>895758</commentid>
    <comment_count>8</comment_count>
      <attachid>203403</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-05-30 18:45:15 -0700</bug_when>
    <thetext>Comment on attachment 203403
Patch

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

&gt; Tools/Scripts/webkitpy/port/win.py:33
&gt; +import subprocess

We shouldn&apos;t be importing this.

&gt; Tools/Scripts/webkitpy/port/win.py:35
&gt; +import tempfile

We shouldn&apos;t include this.

&gt; Tools/Scripts/webkitpy/port/win.py:150
&gt; +        debugger_temp_directory = tempfile.mkdtemp()

Use filesystem.mkdtemp</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>895771</commentid>
    <comment_count>9</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2013-05-30 20:31:31 -0700</bug_when>
    <thetext>Committed r151004: &lt;http://trac.webkit.org/changeset/151004&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>203370</attachid>
            <date>2013-05-30 12:00:55 -0700</date>
            <delta_ts>2013-05-30 17:49:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-76935-20130530115944.patch</filename>
            <type>text/plain</type>
            <size>7264</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDE1MDk3MykKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDI0IEBACisyMDEzLTA1LTMwICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29t
PgorCisgICAgICAgIFtXaW5kb3dzXSBOUldUIGRvZXNuJ3Qgc2F2ZSBjcmFzaCBsb2dzIG9uIEFw
cGxlJ3MgV2luZG93cyBwb3J0LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NzY5MzUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBFeHRlbmQgdGhlIFdpblBvcnQgY2xhc3Mgd2l0aCBjb21tYW5kcyB0byBzZXQg
YW5kIGNsZWFuIHVwIHZhcmlvdXMgcmVnaXN0cnkKKyAgICAgICAgdmFsdWVzIG5lZWRlZCB0byBp
bnZva2UgdGhlIGNvcnJlY3QgZGVidWdnZXIgdG8gZ2V0IGNyYXNoIGZpbGVzLgorCisgICAgICAg
ICogU2NyaXB0cy93ZWJraXRweS9wb3J0L3dpbi5weToKKyAgICAgICAgKFdpblBvcnQpOiBBZGRl
ZCBnbG9iYWwgY2FjaGVzIGZvciByZWdpc3RyeSBrZXlzIGFuZCBzZXR0aW5ncworICAgICAgICAo
V2luUG9ydC5fbnRzZF9sb2NhdGlvbik6IEFkZGVkCisgICAgICAgIChXaW5Qb3J0LmNyZWF0ZV9k
ZWJ1Z2dlcl9jb21tYW5kX2ZpbGUpOiBBZGRlZAorICAgICAgICAoV2luUG9ydC5yZWFkX3JlZ2lz
dHJ5X3N0cmluZyk6IEFkZGVkCisgICAgICAgIChXaW5Qb3J0LndyaXRlX3JlZ2lzdHJ5X3N0cmlu
Zyk6IEFkZGVkCisgICAgICAgIChXaW5Qb3J0LnNldHVwX2NyYXNoX2xvZ19zYXZpbmcpOiBBZGRl
ZAorICAgICAgICAoV2luUG9ydC5yZXN0b3JlX2NyYXNoX2xvZ19zYXZpbmcpOiBBZGRlZAorICAg
ICAgICAoV2luUG9ydC5zZXR1cF90ZXN0X3J1bik6IEFkZGVkIG92ZXJsb2FkIHRvIGFkZCByZWdp
c3RyeSBzZXR0aW5ncy4KKyAgICAgICAgKFdpblBvcnQuY2xlYW5fdXBfdGVzdF9ydW4pOiBBZGRl
ZCBvdmVybG9hZCB0byBjbGVhbiB1cCByZWdpc3RyeSBzZXR0aW5ncy4KKwogMjAxMy0wNS0zMCAg
Unlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBXZWIgSW5zcGVjdG9y
OiB0ZXN0cyBpbiBQZXJmb3JtYW5jZVRlc3RzL2luc3BlY3Rvci8gYXJlIHRpbWluZyBvdXQKSW5k
ZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC93aW4ucHkKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L3dpbi5weQkocmV2aXNpb24gMTUwOTE5KQorKysgVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L3dpbi5weQkod29ya2luZyBjb3B5KQpAQCAtMjYsOSAr
MjYsMTMgQEAKICMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKK2ltcG9ydCBhdGV4aXQK
K2ltcG9ydCBvcwogaW1wb3J0IGxvZ2dpbmcKIGltcG9ydCByZQoraW1wb3J0IHN1YnByb2Nlc3MK
IGltcG9ydCBzeXMKK2ltcG9ydCB0ZW1wZmlsZQogCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0
ZW0uc3lzdGVtaG9zdCBpbXBvcnQgU3lzdGVtSG9zdAogZnJvbSB3ZWJraXRweS5jb21tb24uc3lz
dGVtLmV4ZWN1dGl2ZSBpbXBvcnQgU2NyaXB0RXJyb3IsIEV4ZWN1dGl2ZQpAQCAtNDYsNiArNTAs
MTIgQEAgY2xhc3MgV2luUG9ydChBcHBsZVBvcnQpOgogCiAgICAgQVJDSElURUNUVVJFUyA9IFsn
eDg2J10KIAorICAgIENSQVNIX0xPR19QUkVGSVggPSAiQ3Jhc2hMb2ciCisKKyAgICBQT1NUX01P
UlRFTV9ERUJVR0dFUl9LRVkgPSAiL0hLTE0vU09GVFdBUkUvTWljcm9zb2Z0L1dpbmRvd3MgTlQv
Q3VycmVudFZlcnNpb24vQWVEZWJ1Zy8lcyIKKworICAgIHByZXZpb3VzX2RlYnVnZ2VyX3ZhbHVl
cyA9IHt9CisKICAgICBkZWYgZG9fdGV4dF9yZXN1bHRzX2RpZmZlcihzZWxmLCBleHBlY3RlZF90
ZXh0LCBhY3R1YWxfdGV4dCk6CiAgICAgICAgICMgU2FuaXR5IHdhcyByZXN0b3JlZCBpbiBXSzIs
IHNvIHdlIGRvbid0IG5lZWQgdGhpcyBoYWNrIHRoZXJlLgogICAgICAgICBpZiBzZWxmLmdldF9v
cHRpb24oJ3dlYmtpdF90ZXN0X3J1bm5lcicpOgpAQCAtMTIyLDMgKzEzMiw4NyBAQCBjbGFzcyBX
aW5Qb3J0KEFwcGxlUG9ydCk6CiAgICAgZGVmIHRlc3Rfc2VhcmNoX3BhdGgoc2VsZik6CiAgICAg
ICAgIHRlc3RfZmFsbGJhY2tfbmFtZXMgPSBbcGF0aCBmb3IgcGF0aCBpbiBzZWxmLmJhc2VsaW5l
X3NlYXJjaF9wYXRoKCkgaWYgbm90IHBhdGguc3RhcnRzd2l0aChzZWxmLl93ZWJraXRfYmFzZWxp
bmVfcGF0aCgnbWFjJykpXQogICAgICAgICByZXR1cm4gbWFwKHNlbGYuX3dlYmtpdF9iYXNlbGlu
ZV9wYXRoLCB0ZXN0X2ZhbGxiYWNrX25hbWVzKQorCisgICAgZGVmIF9udHNkX2xvY2F0aW9uKHNl
bGYpOgorICAgICAgICBwb3NzaWJsZV9wYXRocyA9IFtzZWxmLl9maWxlc3lzdGVtLmpvaW4ob3Mu
ZW52aXJvblsnUFJPR1JBTUZJTEVTJ10sICJXaW5kb3dzIEtpdHMiLCAiOC4wIiwgIkRlYnVnZ2Vy
cyIsICJ4NjQiLCAibnRzZC5leGUiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5f
ZmlsZXN5c3RlbS5qb2luKG9zLmVudmlyb25bJ1BST0dSQU1GSUxFUyddLCAiV2luZG93cyBLaXRz
IiwgIjguMCIsICJEZWJ1Z2dlcnMiLCAieDg2IiwgIm50c2QuZXhlIiksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNlbGYuX2ZpbGVzeXN0ZW0uam9pbihvcy5lbnZpcm9uWydQUk9HUkFNRklM
RVMnXSwgIkRlYnVnZ2luZyBUb29scyBmb3IgV2luZG93cyAoeDg2KSIsICJudHNkLmV4ZSIpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9maWxlc3lzdGVtLmpvaW4ob3MuZW52aXJv
blsnUHJvZ3JhbVc2NDMyJ10sICJEZWJ1Z2dpbmcgVG9vbHMgZm9yIFdpbmRvd3MgKHg2NCkiLCAi
bnRzZC5leGUiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fZmlsZXN5c3RlbS5q
b2luKG9zLmVudmlyb25bJ1NZU1RFTVJPT1QnXSwgInN5c3RlbTMyIiwgIm50c2QuZXhlIildCisg
ICAgICAgIGZvciBwYXRoIGluIHBvc3NpYmxlX3BhdGhzOgorICAgICAgICAgICAgZXhwYW5kZWRf
cGF0aCA9IHNlbGYuX2ZpbGVzeXN0ZW0uZXhwYW5kdXNlcihwYXRoKQorICAgICAgICAgICAgaWYg
c2VsZi5fZmlsZXN5c3RlbS5leGlzdHMoZXhwYW5kZWRfcGF0aCk6CisgICAgICAgICAgICAgICAg
X2xvZy5kZWJ1ZygiVXNpbmcgbnRzZCBsb2NhdGVkIGluICclcyciICUgcGF0aCkKKyAgICAgICAg
ICAgICAgICByZXR1cm4gZXhwYW5kZWRfcGF0aAorICAgICAgICByZXR1cm4gTm9uZQorCisgICAg
ZGVmIGNyZWF0ZV9kZWJ1Z2dlcl9jb21tYW5kX2ZpbGUoc2VsZik6CisgICAgICAgIGRlYnVnZ2Vy
X3RlbXBfZGlyZWN0b3J5ID0gdGVtcGZpbGUubWtkdGVtcCgpCisgICAgICAgIGNvbW1hbmRfZmls
ZSA9IHNlbGYuX2ZpbGVzeXN0ZW0uam9pbihkZWJ1Z2dlcl90ZW1wX2RpcmVjdG9yeSwgImRlYnVn
Z2VyLWNvbW1hbmRzLnR4dCIpCisgICAgICAgIHdpdGggb3Blbihjb21tYW5kX2ZpbGUsICJ3Iikg
YXMgdGV4dF9maWxlOgorICAgICAgICAgICAgdGV4dF9maWxlLndyaXRlKCIubG9nb3BlbiAvdCBc
IiVzXFxDcmFzaExvZyVzLnR4dFwiXG4iICUgKGN5Z3BhdGgoc2VsZi5yZXN1bHRzX2RpcmVjdG9y
eSgpKSwgc2VsZi5DUkFTSF9MT0dfUFJFRklYKSkKKyAgICAgICAgICAgIHRleHRfZmlsZS53cml0
ZSgiLnNyY3BhdGggXCIlc1wiXG4iICUgY3lncGF0aChvcy5lbnZpcm9uWydXRUJLSVRfU09VUkNF
J10pKQorICAgICAgICAgICAgdGV4dF9maWxlLndyaXRlKCIhYW5hbHl6ZSAtdnZcbiIpCisgICAg
ICAgICAgICB0ZXh0X2ZpbGUud3JpdGUoIn4qa3BuXG4iKQorICAgICAgICAgICAgdGV4dF9maWxl
LndyaXRlKCJxXG4iKQorICAgICAgICByZXR1cm4gY29tbWFuZF9maWxlCisKKyAgICBkZWYgcmVh
ZF9yZWdpc3RyeV9zdHJpbmcoc2VsZiwga2V5KToKKyAgICAgICAgcmVnaXN0cnlfa2V5ID0gc2Vs
Zi5QT1NUX01PUlRFTV9ERUJVR0dFUl9LRVkgJSBrZXkKKyAgICAgICAgdmFsdWUgPSBzdWJwcm9j
ZXNzLlBvcGVuKFsicmVndG9vbCIsICItLXdvdzMyIiwgImdldCIsIHJlZ2lzdHJ5X2tleV0sIGJ1
ZnNpemU9MTAyNCwgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSkuY29tbXVuaWNhdGUoKVswXQorICAg
ICAgICByZXR1cm4gdmFsdWUKKworICAgIGRlZiB3cml0ZV9yZWdpc3RyeV9zdHJpbmcoc2VsZiwg
a2V5LCB2YWx1ZSk6CisgICAgICAgIHJlZ2lzdHJ5X2tleSA9IHNlbGYuUE9TVF9NT1JURU1fREVC
VUdHRVJfS0VZICUga2V5CisgICAgICAgIHJjID0gc3VicHJvY2Vzcy5jYWxsKFsicmVndG9vbCIs
ICItLXdvdzMyIiwgInNldCIsICItcyIsIHN0cihyZWdpc3RyeV9rZXkpLCBzdHIodmFsdWUpXSkK
KyAgICAgICAgaWYgcmMgPT0gMjoKKyAgICAgICAgICAgIHJjID0gc3VicHJvY2Vzcy5jYWxsKFsi
cmVndG9vbCIsICItLXdvdzMyIiwgImFkZCIsICItcyIsIHN0cihyZWdpc3RyeV9rZXkpXSkKKyAg
ICAgICAgICAgIGlmIHJjID09IDA6CisgICAgICAgICAgICAgICAgcmMgPSBzdWJwcm9jZXNzLmNh
bGwoWyJyZWd0b29sIiwgIi0td293MzIiLCAic2V0IiwgIi1zIiwgc3RyKHJlZ2lzdHJ5X2tleSks
IHN0cih2YWx1ZSldKQorICAgICAgICBpZiByYzoKKyAgICAgICAgICAgIF9sb2cud2FybigiRXJy
b3Igc2V0dGluZyBrZXk6ICVzIHRvIHZhbHVlICVzLiAgRXJyb3I9JWxkLiIgJSAoa2V5LCB2YWx1
ZSwgcmMpKQorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICAgICAgIyBPbiBXaW5kb3dz
IFZpc3RhLzcgd2l0aCBVQUMgZW5hYmxlZCwgcmVndG9vbCB3aWxsIGZhaWwgdG8gbW9kaWZ5IHRo
ZSByZWdpc3RyeSwgYnV0IHdpbGwgc3RpbGwKKyAgICAgICAgIyByZXR1cm4gYSBzdWNjZXNzZnVs
IGV4aXQgY29kZS4gU28gd2UgZG91YmxlLWNoZWNrIGhlcmUgdGhhdCB0aGUgdmFsdWUgd2UgdHJp
ZWQgdG8gd3JpdGUgdG8gdGhlCisgICAgICAgICMgcmVnaXN0cnkgd2FzIHJlYWxseSB3cml0dGVu
LgorICAgICAgICBpZiBzZWxmLnJlYWRfcmVnaXN0cnlfc3RyaW5nKGtleSkgIT0gdmFsdWU6Cisg
ICAgICAgICAgICBfbG9nLndhcm4oIlJlZ3Rvb2wgcmVwb3J0ZWQgc3VjY2VzcywgYnV0IHZhbHVl
IG9mIGtleSAlcyBkaWQgbm90IGNoYW5nZS4iICUga2V5KQorICAgICAgICAgICAgcmV0dXJuIEZh
bHNlCisKKyAgICAgICAgcmV0dXJuIFRydWUKKworICAgIGRlZiBzZXR1cF9jcmFzaF9sb2dfc2F2
aW5nKHNlbGYpOgorICAgICAgICBpZiAnX05UX1NZTUJPTF9QQVRIJyBub3QgaW4gb3MuZW52aXJv
bjoKKyAgICAgICAgICAgIF9sb2cud2FybmluZygiVGhlIF9OVF9TWU1CT0xfUEFUSCBlbnZpcm9u
bWVudCB2YXJpYWJsZSBpcyBub3Qgc2V0LiBDcmFzaCBsb2dzIHdpbGwgbm90IGJlIHNhdmVkLiIp
CisgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICBudHNkX3BhdGggPSBzZWxmLl9udHNk
X2xvY2F0aW9uKCkKKyAgICAgICAgaWYgTm9uZSA9PSBudHNkX3BhdGg6CisgICAgICAgICAgICBf
bG9nLndhcm5pbmcoIkNhbid0IGZpbmQgbnRzZC5leGUuIENyYXNoIGxvZ3Mgd2lsbCBub3QgYmUg
c2F2ZWQuIikKKyAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgICAgICMgSWYgd2UgdXNlZCAt
YyAoaW5zdGVhZCBvZiAtY2YpIHdlIGNvdWxkIHBhc3MgdGhlIGNvbW1hbmRzIGRpcmVjdGx5IG9u
IHRoZSBjb21tYW5kIGxpbmUuIEJ1dAorICAgICAgICAjIHdoZW4gdGhlIGNvbW1hbmRzIGluY2x1
ZGUgbXVsdGlwbGUgcXVvdGVkIHBhdGhzIChlLmcuLCBmb3IgLmxvZ29wZW4gYW5kIC5zcmNwYXRo
KSwgV2luZG93cworICAgICAgICAjIGZhaWxzIHRvIGludm9rZSB0aGUgcG9zdC1tb3J0ZW0gZGVi
dWdnZXIgYXQgYWxsIChwZXJoYXBzIGR1ZSB0byBhIGJ1ZyBpbiBXaW5kb3dzJ3MgY29tbWFuZAor
ICAgICAgICAjIGxpbmUgcGFyc2luZykuIFNvIHdlIHNhdmUgdGhlIGNvbW1hbmRzIHRvIGEgZmls
ZSBpbnN0ZWFkIGFuZCB0ZWxsIHRoZSBkZWJ1Z2dlciB0byBleGVjdXRlIHRoZW0KKyAgICAgICAg
IyB1c2luZyAtY2YuCisgICAgICAgIGNvbW1hbmRfZmlsZSA9IHNlbGYuY3JlYXRlX2RlYnVnZ2Vy
X2NvbW1hbmRfZmlsZSgpCisgICAgICAgIGlmIE5vbmUgPT0gY29tbWFuZF9maWxlOgorICAgICAg
ICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgZGVidWdnZXJfb3B0aW9ucyA9ICJcIiIgKyBjeWdw
YXRoKG50c2RfcGF0aCkgKyAiXCIgLXAgJWxkIC1lICVsZCAtZyAtbGluZXMgLWNmIFwiIiArIGN5
Z3BhdGgoY29tbWFuZF9maWxlKSArICJcIiIKKyAgICAgICAgcmVnaXN0cnlfc2V0dGluZ3MgPSB7
J0RlYnVnZ2VyJzogZGVidWdnZXJfb3B0aW9ucywgJ0F1dG8nOiAiMSJ9CisgICAgICAgIGZvciBr
ZXkgaW4gcmVnaXN0cnlfc2V0dGluZ3M6CisgICAgICAgICAgICBzZWxmLnByZXZpb3VzX2RlYnVn
Z2VyX3ZhbHVlc1trZXldID0gc2VsZi5yZWFkX3JlZ2lzdHJ5X3N0cmluZyhrZXkpCisgICAgICAg
ICAgICBzZWxmLndyaXRlX3JlZ2lzdHJ5X3N0cmluZyhrZXksIHJlZ2lzdHJ5X3NldHRpbmdzW2tl
eV0pCisKKyAgICBkZWYgcmVzdG9yZV9jcmFzaF9sb2dfc2F2aW5nKHNlbGYpOgorICAgICAgICBm
b3Iga2V5IGluIHNlbGYucHJldmlvdXNfZGVidWdnZXJfdmFsdWVzOgorICAgICAgICAgICAgc2Vs
Zi53cml0ZV9yZWdpc3RyeV9zdHJpbmcoa2V5LCBzZWxmLnByZXZpb3VzX2RlYnVnZ2VyX3ZhbHVl
c1trZXldKQorCisgICAgZGVmIHNldHVwX3Rlc3RfcnVuKHNlbGYpOgorICAgICAgICBhdGV4aXQu
cmVnaXN0ZXIoc2VsZi5yZXN0b3JlX2NyYXNoX2xvZ19zYXZpbmcpCisgICAgICAgIHNlbGYuc2V0
dXBfY3Jhc2hfbG9nX3NhdmluZygpCisgICAgICAgIHN1cGVyKFdpblBvcnQsIHNlbGYpLnNldHVw
X3Rlc3RfcnVuKCkKKworICAgIGRlZiBjbGVhbl91cF90ZXN0X3J1bihzZWxmKToKKyAgICAgICAg
c2VsZi5yZXN0b3JlX2NyYXNoX2xvZ19zYXZpbmcoKQorICAgICAgICBzdXBlcihXaW5Qb3J0LCBz
ZWxmKS5jbGVhbl91cF90ZXN0X3J1bigpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>203403</attachid>
            <date>2013-05-30 17:49:13 -0700</date>
            <delta_ts>2013-05-30 18:45:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-76935-20130530174814.patch</filename>
            <type>text/plain</type>
            <size>7506</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDE1MDk3MykKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDI0IEBACisyMDEzLTA1LTMwICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29t
PgorCisgICAgICAgIFtXaW5kb3dzXSBOUldUIGRvZXNuJ3Qgc2F2ZSBjcmFzaCBsb2dzIG9uIEFw
cGxlJ3MgV2luZG93cyBwb3J0LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NzY5MzUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBFeHRlbmQgdGhlIFdpblBvcnQgY2xhc3Mgd2l0aCBjb21tYW5kcyB0byBzZXQg
YW5kIGNsZWFuIHVwIHZhcmlvdXMgcmVnaXN0cnkKKyAgICAgICAgdmFsdWVzIG5lZWRlZCB0byBp
bnZva2UgdGhlIGNvcnJlY3QgZGVidWdnZXIgdG8gZ2V0IGNyYXNoIGZpbGVzLgorCisgICAgICAg
ICogU2NyaXB0cy93ZWJraXRweS9wb3J0L3dpbi5weToKKyAgICAgICAgKFdpblBvcnQpOiBBZGRl
ZCBnbG9iYWwgY2FjaGVzIGZvciByZWdpc3RyeSBrZXlzIGFuZCBzZXR0aW5ncworICAgICAgICAo
V2luUG9ydC5fbnRzZF9sb2NhdGlvbik6IEFkZGVkCisgICAgICAgIChXaW5Qb3J0LmNyZWF0ZV9k
ZWJ1Z2dlcl9jb21tYW5kX2ZpbGUpOiBBZGRlZAorICAgICAgICAoV2luUG9ydC5yZWFkX3JlZ2lz
dHJ5X3N0cmluZyk6IEFkZGVkCisgICAgICAgIChXaW5Qb3J0LndyaXRlX3JlZ2lzdHJ5X3N0cmlu
Zyk6IEFkZGVkCisgICAgICAgIChXaW5Qb3J0LnNldHVwX2NyYXNoX2xvZ19zYXZpbmcpOiBBZGRl
ZAorICAgICAgICAoV2luUG9ydC5yZXN0b3JlX2NyYXNoX2xvZ19zYXZpbmcpOiBBZGRlZAorICAg
ICAgICAoV2luUG9ydC5zZXR1cF90ZXN0X3J1bik6IEFkZGVkIG92ZXJsb2FkIHRvIGFkZCByZWdp
c3RyeSBzZXR0aW5ncy4KKyAgICAgICAgKFdpblBvcnQuY2xlYW5fdXBfdGVzdF9ydW4pOiBBZGRl
ZCBvdmVybG9hZCB0byBjbGVhbiB1cCByZWdpc3RyeSBzZXR0aW5ncy4KKwogMjAxMy0wNS0zMCAg
Unlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBXZWIgSW5zcGVjdG9y
OiB0ZXN0cyBpbiBQZXJmb3JtYW5jZVRlc3RzL2luc3BlY3Rvci8gYXJlIHRpbWluZyBvdXQKSW5k
ZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC93aW4ucHkKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L3dpbi5weQkocmV2aXNpb24gMTUwOTE5KQorKysgVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L3dpbi5weQkod29ya2luZyBjb3B5KQpAQCAtMjYsOSAr
MjYsMTMgQEAKICMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKK2ltcG9ydCBhdGV4aXQK
K2ltcG9ydCBvcwogaW1wb3J0IGxvZ2dpbmcKIGltcG9ydCByZQoraW1wb3J0IHN1YnByb2Nlc3MK
IGltcG9ydCBzeXMKK2ltcG9ydCB0ZW1wZmlsZQogCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0
ZW0uc3lzdGVtaG9zdCBpbXBvcnQgU3lzdGVtSG9zdAogZnJvbSB3ZWJraXRweS5jb21tb24uc3lz
dGVtLmV4ZWN1dGl2ZSBpbXBvcnQgU2NyaXB0RXJyb3IsIEV4ZWN1dGl2ZQpAQCAtNDYsNiArNTAs
MTIgQEAgY2xhc3MgV2luUG9ydChBcHBsZVBvcnQpOgogCiAgICAgQVJDSElURUNUVVJFUyA9IFsn
eDg2J10KIAorICAgIENSQVNIX0xPR19QUkVGSVggPSAiQ3Jhc2hMb2ciCisKKyAgICBQT1NUX01P
UlRFTV9ERUJVR0dFUl9LRVkgPSAiL0hLTE0vU09GVFdBUkUvTWljcm9zb2Z0L1dpbmRvd3MgTlQv
Q3VycmVudFZlcnNpb24vQWVEZWJ1Zy8lcyIKKworICAgIHByZXZpb3VzX2RlYnVnZ2VyX3ZhbHVl
cyA9IHt9CisKICAgICBkZWYgZG9fdGV4dF9yZXN1bHRzX2RpZmZlcihzZWxmLCBleHBlY3RlZF90
ZXh0LCBhY3R1YWxfdGV4dCk6CiAgICAgICAgICMgU2FuaXR5IHdhcyByZXN0b3JlZCBpbiBXSzIs
IHNvIHdlIGRvbid0IG5lZWQgdGhpcyBoYWNrIHRoZXJlLgogICAgICAgICBpZiBzZWxmLmdldF9v
cHRpb24oJ3dlYmtpdF90ZXN0X3J1bm5lcicpOgpAQCAtMTIyLDMgKzEzMiw4OSBAQCBjbGFzcyBX
aW5Qb3J0KEFwcGxlUG9ydCk6CiAgICAgZGVmIHRlc3Rfc2VhcmNoX3BhdGgoc2VsZik6CiAgICAg
ICAgIHRlc3RfZmFsbGJhY2tfbmFtZXMgPSBbcGF0aCBmb3IgcGF0aCBpbiBzZWxmLmJhc2VsaW5l
X3NlYXJjaF9wYXRoKCkgaWYgbm90IHBhdGguc3RhcnRzd2l0aChzZWxmLl93ZWJraXRfYmFzZWxp
bmVfcGF0aCgnbWFjJykpXQogICAgICAgICByZXR1cm4gbWFwKHNlbGYuX3dlYmtpdF9iYXNlbGlu
ZV9wYXRoLCB0ZXN0X2ZhbGxiYWNrX25hbWVzKQorCisgICAgZGVmIF9udHNkX2xvY2F0aW9uKHNl
bGYpOgorICAgICAgICBwb3NzaWJsZV9wYXRocyA9IFtzZWxmLl9maWxlc3lzdGVtLmpvaW4ob3Mu
ZW52aXJvblsnUFJPR1JBTUZJTEVTJ10sICJXaW5kb3dzIEtpdHMiLCAiOC4wIiwgIkRlYnVnZ2Vy
cyIsICJ4ODYiLCAibnRzZC5leGUiKSwKKyAgICAgICAgICAgIHNlbGYuX2ZpbGVzeXN0ZW0uam9p
bihvcy5lbnZpcm9uWydQUk9HUkFNRklMRVMnXSwgIldpbmRvd3MgS2l0cyIsICI4LjAiLCAiRGVi
dWdnZXJzIiwgIng2NCIsICJudHNkLmV4ZSIpLAorICAgICAgICAgICAgc2VsZi5fZmlsZXN5c3Rl
bS5qb2luKG9zLmVudmlyb25bJ1BST0dSQU1GSUxFUyddLCAiRGVidWdnaW5nIFRvb2xzIGZvciBX
aW5kb3dzICh4ODYpIiwgIm50c2QuZXhlIiksCisgICAgICAgICAgICBzZWxmLl9maWxlc3lzdGVt
LmpvaW4ob3MuZW52aXJvblsnUHJvZ3JhbVc2NDMyJ10sICJEZWJ1Z2dpbmcgVG9vbHMgZm9yIFdp
bmRvd3MgKHg2NCkiLCAibnRzZC5leGUiKSwKKyAgICAgICAgICAgIHNlbGYuX2ZpbGVzeXN0ZW0u
am9pbihvcy5lbnZpcm9uWydTWVNURU1ST09UJ10sICJzeXN0ZW0zMiIsICJudHNkLmV4ZSIpXQor
ICAgICAgICBmb3IgcGF0aCBpbiBwb3NzaWJsZV9wYXRoczoKKyAgICAgICAgICAgIGV4cGFuZGVk
X3BhdGggPSBzZWxmLl9maWxlc3lzdGVtLmV4cGFuZHVzZXIocGF0aCkKKyAgICAgICAgICAgIGlm
IHNlbGYuX2ZpbGVzeXN0ZW0uZXhpc3RzKGV4cGFuZGVkX3BhdGgpOgorICAgICAgICAgICAgICAg
IF9sb2cuZGVidWcoIlVzaW5nIG50c2QgbG9jYXRlZCBpbiAnJXMnIiAlIHBhdGgpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIGV4cGFuZGVkX3BhdGgKKyAgICAgICAgcmV0dXJuIE5vbmUKKworICAg
IGRlZiBjcmVhdGVfZGVidWdnZXJfY29tbWFuZF9maWxlKHNlbGYpOgorICAgICAgICBkZWJ1Z2dl
cl90ZW1wX2RpcmVjdG9yeSA9IHRlbXBmaWxlLm1rZHRlbXAoKQorICAgICAgICBjb21tYW5kX2Zp
bGUgPSBzZWxmLl9maWxlc3lzdGVtLmpvaW4oZGVidWdnZXJfdGVtcF9kaXJlY3RvcnksICJkZWJ1
Z2dlci1jb21tYW5kcy50eHQiKQorICAgICAgICBzZWxmLl9maWxlc3lzdGVtLndyaXRlX3RleHRf
ZmlsZShjb21tYW5kX2ZpbGUsICcubG9nb3BlbiAvdCAiJXNcXCVzLnR4dCJcbicgJSAoY3lncGF0
aChzZWxmLnJlc3VsdHNfZGlyZWN0b3J5KCkpLCBzZWxmLkNSQVNIX0xPR19QUkVGSVgpKQorICAg
ICAgICBzZWxmLl9maWxlc3lzdGVtLndyaXRlX3RleHRfZmlsZShjb21tYW5kX2ZpbGUsICcuc3Jj
cGF0aCAiJXMiXG4nICUgY3lncGF0aChzZWxmLl93ZWJraXRfZmluZGVyLndlYmtpdF9iYXNlKCkp
KQorICAgICAgICBzZWxmLl9maWxlc3lzdGVtLndyaXRlX3RleHRfZmlsZShjb21tYW5kX2ZpbGUs
ICchYW5hbHl6ZSAtdnZcbicpCisgICAgICAgIHNlbGYuX2ZpbGVzeXN0ZW0ud3JpdGVfdGV4dF9m
aWxlKGNvbW1hbmRfZmlsZSwgJ34qa3BuXG4nKQorICAgICAgICBzZWxmLl9maWxlc3lzdGVtLndy
aXRlX3RleHRfZmlsZShjb21tYW5kX2ZpbGUsICdxXG4nKQorICAgICAgICByZXR1cm4gY29tbWFu
ZF9maWxlCisKKyAgICBkZWYgcmVhZF9yZWdpc3RyeV9zdHJpbmcoc2VsZiwga2V5KToKKyAgICAg
ICAgcmVnaXN0cnlfa2V5ID0gc2VsZi5QT1NUX01PUlRFTV9ERUJVR0dFUl9LRVkgJSBrZXkKKyAg
ICAgICAgcmVhZF9yZWdpc3RyeV9jb21tYW5kID0gWyJyZWd0b29sIiwgIi0td293MzIiLCAiZ2V0
IiwgcmVnaXN0cnlfa2V5XQorICAgICAgICB2YWx1ZSA9IHNlbGYuX2V4ZWN1dGl2ZS5ydW5fY29t
bWFuZChyZWFkX3JlZ2lzdHJ5X2NvbW1hbmQsIGVycm9yX2hhbmRsZXI9RXhlY3V0aXZlLmlnbm9y
ZV9lcnJvcikKKyAgICAgICAgcmV0dXJuIHZhbHVlLnJzdHJpcCgpCisKKyAgICBkZWYgd3JpdGVf
cmVnaXN0cnlfc3RyaW5nKHNlbGYsIGtleSwgdmFsdWUpOgorICAgICAgICByZWdpc3RyeV9rZXkg
PSBzZWxmLlBPU1RfTU9SVEVNX0RFQlVHR0VSX0tFWSAlIGtleQorICAgICAgICBzZXRfcmVnX3Zh
bHVlX2NvbW1hbmQgPSBbInJlZ3Rvb2wiLCAiLS13b3czMiIsICJzZXQiLCAiLXMiLCBzdHIocmVn
aXN0cnlfa2V5KSwgc3RyKHZhbHVlKV0KKyAgICAgICAgcmMgPSBzZWxmLl9leGVjdXRpdmUucnVu
X2NvbW1hbmQoc2V0X3JlZ192YWx1ZV9jb21tYW5kLCByZXR1cm5fZXhpdF9jb2RlPVRydWUpCisg
ICAgICAgIGlmIHJjID09IDI6CisgICAgICAgICAgICBhZGRfcmVnX3ZhbHVlX2NvbW1hbmQgPSBb
InJlZ3Rvb2wiLCAiLS13b3czMiIsICJhZGQiLCAiLXMiLCBzdHIocmVnaXN0cnlfa2V5KV0KKyAg
ICAgICAgICAgIHJjID0gc2VsZi5fZXhlY3V0aXZlLnJ1bl9jb21tYW5kKGFkZF9yZWdfdmFsdWVf
Y29tbWFuZCwgcmV0dXJuX2V4aXRfY29kZT1UcnVlKQorICAgICAgICAgICAgaWYgcmMgPT0gMDoK
KyAgICAgICAgICAgICAgICByYyA9IHNlbGYuX2V4ZWN1dGl2ZS5ydW5fY29tbWFuZChzZXRfcmVn
X3ZhbHVlX2NvbW1hbmQsIHJldHVybl9leGl0X2NvZGU9VHJ1ZSkKKyAgICAgICAgaWYgcmM6Cisg
ICAgICAgICAgICBfbG9nLndhcm4oIkVycm9yIHNldHRpbmcga2V5OiAlcyB0byB2YWx1ZSAlcy4g
IEVycm9yPSVsZC4iICUgKGtleSwgdmFsdWUsIHJjKSkKKyAgICAgICAgICAgIHJldHVybiBGYWxz
ZQorCisgICAgICAgICMgT24gV2luZG93cyBWaXN0YS83IHdpdGggVUFDIGVuYWJsZWQsIHJlZ3Rv
b2wgd2lsbCBmYWlsIHRvIG1vZGlmeSB0aGUgcmVnaXN0cnksIGJ1dCB3aWxsIHN0aWxsCisgICAg
ICAgICMgcmV0dXJuIGEgc3VjY2Vzc2Z1bCBleGl0IGNvZGUuIFNvIHdlIGRvdWJsZS1jaGVjayBo
ZXJlIHRoYXQgdGhlIHZhbHVlIHdlIHRyaWVkIHRvIHdyaXRlIHRvIHRoZQorICAgICAgICAjIHJl
Z2lzdHJ5IHdhcyByZWFsbHkgd3JpdHRlbi4KKyAgICAgICAgaWYgc2VsZi5yZWFkX3JlZ2lzdHJ5
X3N0cmluZyhrZXkpICE9IHZhbHVlOgorICAgICAgICAgICAgX2xvZy53YXJuKCJSZWd0b29sIHJl
cG9ydGVkIHN1Y2Nlc3MsIGJ1dCB2YWx1ZSBvZiBrZXkgJXMgZGlkIG5vdCBjaGFuZ2UuIiAlIGtl
eSkKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgICAgIHJldHVybiBUcnVlCisKKyAg
ICBkZWYgc2V0dXBfY3Jhc2hfbG9nX3NhdmluZyhzZWxmKToKKyAgICAgICAgaWYgJ19OVF9TWU1C
T0xfUEFUSCcgbm90IGluIG9zLmVudmlyb246CisgICAgICAgICAgICBfbG9nLndhcm5pbmcoIlRo
ZSBfTlRfU1lNQk9MX1BBVEggZW52aXJvbm1lbnQgdmFyaWFibGUgaXMgbm90IHNldC4gQ3Jhc2gg
bG9ncyB3aWxsIG5vdCBiZSBzYXZlZC4iKQorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAg
ICAgbnRzZF9wYXRoID0gc2VsZi5fbnRzZF9sb2NhdGlvbigpCisgICAgICAgIGlmIG5vdCBudHNk
X3BhdGg6CisgICAgICAgICAgICBfbG9nLndhcm5pbmcoIkNhbid0IGZpbmQgbnRzZC5leGUuIENy
YXNoIGxvZ3Mgd2lsbCBub3QgYmUgc2F2ZWQuIikKKyAgICAgICAgICAgIHJldHVybiBOb25lCisg
ICAgICAgICMgSWYgd2UgdXNlZCAtYyAoaW5zdGVhZCBvZiAtY2YpIHdlIGNvdWxkIHBhc3MgdGhl
IGNvbW1hbmRzIGRpcmVjdGx5IG9uIHRoZSBjb21tYW5kIGxpbmUuIEJ1dAorICAgICAgICAjIHdo
ZW4gdGhlIGNvbW1hbmRzIGluY2x1ZGUgbXVsdGlwbGUgcXVvdGVkIHBhdGhzIChlLmcuLCBmb3Ig
LmxvZ29wZW4gYW5kIC5zcmNwYXRoKSwgV2luZG93cworICAgICAgICAjIGZhaWxzIHRvIGludm9r
ZSB0aGUgcG9zdC1tb3J0ZW0gZGVidWdnZXIgYXQgYWxsIChwZXJoYXBzIGR1ZSB0byBhIGJ1ZyBp
biBXaW5kb3dzJ3MgY29tbWFuZAorICAgICAgICAjIGxpbmUgcGFyc2luZykuIFNvIHdlIHNhdmUg
dGhlIGNvbW1hbmRzIHRvIGEgZmlsZSBpbnN0ZWFkIGFuZCB0ZWxsIHRoZSBkZWJ1Z2dlciB0byBl
eGVjdXRlIHRoZW0KKyAgICAgICAgIyB1c2luZyAtY2YuCisgICAgICAgIGNvbW1hbmRfZmlsZSA9
IHNlbGYuY3JlYXRlX2RlYnVnZ2VyX2NvbW1hbmRfZmlsZSgpCisgICAgICAgIGlmIG5vdCBjb21t
YW5kX2ZpbGU6CisgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICBkZWJ1Z2dlcl9vcHRp
b25zID0gJyJ7MH0iIC1wICVsZCAtZSAlbGQgLWcgLWxpbmVzIC1jZiAiezF9IicuZm9ybWF0KGN5
Z3BhdGgobnRzZF9wYXRoKSwgY3lncGF0aChjb21tYW5kX2ZpbGUpKQorICAgICAgICByZWdpc3Ry
eV9zZXR0aW5ncyA9IHsnRGVidWdnZXInOiBkZWJ1Z2dlcl9vcHRpb25zLCAnQXV0byc6ICIxIn0K
KyAgICAgICAgZm9yIGtleSBpbiByZWdpc3RyeV9zZXR0aW5nczoKKyAgICAgICAgICAgIHNlbGYu
cHJldmlvdXNfZGVidWdnZXJfdmFsdWVzW2tleV0gPSBzZWxmLnJlYWRfcmVnaXN0cnlfc3RyaW5n
KGtleSkKKyAgICAgICAgICAgIHNlbGYud3JpdGVfcmVnaXN0cnlfc3RyaW5nKGtleSwgcmVnaXN0
cnlfc2V0dGluZ3Nba2V5XSkKKworICAgIGRlZiByZXN0b3JlX2NyYXNoX2xvZ19zYXZpbmcoc2Vs
Zik6CisgICAgICAgIGZvciBrZXkgaW4gc2VsZi5wcmV2aW91c19kZWJ1Z2dlcl92YWx1ZXM6Cisg
ICAgICAgICAgICBzZWxmLndyaXRlX3JlZ2lzdHJ5X3N0cmluZyhrZXksIHNlbGYucHJldmlvdXNf
ZGVidWdnZXJfdmFsdWVzW2tleV0pCisKKyAgICBkZWYgc2V0dXBfdGVzdF9ydW4oc2VsZik6Cisg
ICAgICAgIGF0ZXhpdC5yZWdpc3RlcihzZWxmLnJlc3RvcmVfY3Jhc2hfbG9nX3NhdmluZykKKyAg
ICAgICAgc2VsZi5zZXR1cF9jcmFzaF9sb2dfc2F2aW5nKCkKKyAgICAgICAgc3VwZXIoV2luUG9y
dCwgc2VsZikuc2V0dXBfdGVzdF9ydW4oKQorCisgICAgZGVmIGNsZWFuX3VwX3Rlc3RfcnVuKHNl
bGYpOgorICAgICAgICBzZWxmLnJlc3RvcmVfY3Jhc2hfbG9nX3NhdmluZygpCisgICAgICAgIHN1
cGVyKFdpblBvcnQsIHNlbGYpLmNsZWFuX3VwX3Rlc3RfcnVuKCkK
</data>
<flag name="review"
          id="224849"
          type_id="1"
          status="+"
          setter="rniwa"
    />
          </attachment>
      

    </bug>

</bugzilla>