<?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>43510</bug_id>
          
          <creation_ts>2010-08-04 14:19:54 -0700</creation_ts>
          <short_desc>WebKit2 should load plugins from the same directories as old-WebKit</short_desc>
          <delta_ts>2010-08-19 14:27:17 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Windows XP</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar, PlatformOnly</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>43189</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Adam Roben (:aroben)">aroben</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>adachan</cc>
    
    <cc>andersca</cc>
    
    <cc>jhoneycutt</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>260210</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2010-08-04 14:19:54 -0700</bug_when>
    <thetext>Old WebKit (WebCore, really) has logic to load plugins from certain directories. WebKit2 should load plugins from those same directories.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>260231</commentid>
    <comment_count>1</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2010-08-04 15:03:12 -0700</bug_when>
    <thetext>&lt;rdar://problem/8273827&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>266787</commentid>
    <comment_count>2</comment_count>
      <attachid>64863</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2010-08-19 09:27:57 -0700</bug_when>
    <thetext>Created attachment 64863
Implement PluginInfoStore::pluginsDirectories</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>266789</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-08-19 09:31:21 -0700</bug_when>
    <thetext>Attachment 64863 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1
WebKit2/UIProcess/Plugins/win/PluginInfoStoreWin.cpp:66:  An else if statement should be written as an if statement when the prior &quot;if&quot; concludes with a return, break, continue or goto statement.  [readability/control_flow] [4]
WebKit2/UIProcess/Plugins/win/PluginInfoStoreWin.cpp:224:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
Total errors found: 2 in 2 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>266933</commentid>
    <comment_count>4</comment_count>
      <attachid>64863</attachid>
    <who name="Jon Honeycutt">jhoneycutt</who>
    <bug_when>2010-08-19 13:46:44 -0700</bug_when>
    <thetext>Comment on attachment 64863
Implement PluginInfoStore::pluginsDirectories

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>266935</commentid>
    <comment_count>5</comment_count>
    <who name="Ada Chan">adachan</who>
    <bug_when>2010-08-19 13:47:53 -0700</bug_when>
    <thetext>&gt; +static inline void addMozillaPluginDirectories(Vector&lt;String&gt;&amp; directories)
&gt; +{
&gt; +    // Enumerate all Mozilla plugin directories in the registry
&gt; +    HKEY key;
&gt; +    LONG result = ::RegOpenKeyExW(HKEY_LOCAL_MACHINE, L&quot;Software\\Mozilla&quot;, 0, KEY_READ, &amp;key);
&gt; +    if (result == ERROR_SUCCESS) {

Maybe we can return early if result != ERROR_SUCCESS?

&gt; +        WCHAR name[128];
&gt; +        FILETIME lastModified;
&gt; +
&gt; +        // Enumerate subkeys
&gt; +        for (int i = 0;; i++) {
&gt; +            DWORD nameLen = sizeof(name) / sizeof(WCHAR);

I saw you used _countof in an earlier method.  Can it be used above also?

&gt; +static inline void addAdobeAcrobatPluginDirectory(Vector&lt;String&gt;&amp; directories)
&gt; +{
&gt; +    HKEY key;
&gt; +    HRESULT result = ::RegOpenKeyExW(HKEY_LOCAL_MACHINE, L&quot;Software\\Adobe\\Acrobat Reader&quot;, 0, KEY_READ, &amp;key);
&gt; +    if (result != ERROR_SUCCESS)
&gt; +        return;
&gt; +
&gt; +    WCHAR name[128];
&gt; +    FILETIME lastModified;
&gt; +
&gt; +    Vector&lt;int&gt; latestAcrobatVersion;
&gt; +    String latestAcrobatVersionString;
&gt; +
&gt; +    // Enumerate subkeys
&gt; +    for (int i = 0;; i++) {
&gt; +        DWORD nameLen = sizeof(name) / sizeof(WCHAR);

Ditto

&gt; +static inline void addMacromediaPluginDirectories(Vector&lt;String&gt;&amp; directories)
&gt; +{
&gt; +#if !OS(WINCE)
&gt; +    WCHAR systemDirectoryStr[MAX_PATH];
&gt; +
&gt; +    if (::GetSystemDirectoryW(systemDirectoryStr, _countof(systemDirectoryStr)) == 0)
&gt; +        return;

Should we use ! instead of == 0?

&gt; +
&gt; +    WCHAR macromediaDirectoryStr[MAX_PATH];
&gt; +
&gt; +    ::PathCombineW(macromediaDirectoryStr, systemDirectoryStr, L&quot;macromed\\Flash&quot;);

Should we check the return value of PathCombine?

&gt; +    directories.append(macromediaDirectoryStr);
&gt; +
&gt; +    ::PathCombineW(macromediaDirectoryStr, systemDirectoryStr, L&quot;macromed\\Shockwave 10&quot;);

Ditto.

&gt; +    directories.append(macromediaDirectoryStr);
&gt; +#endif
&gt; +}

r=me too!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>266952</commentid>
    <comment_count>6</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2010-08-19 14:06:51 -0700</bug_when>
    <thetext>(In reply to comment #5)
I implemented all of your suggestions. Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>266961</commentid>
    <comment_count>7</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2010-08-19 14:27:17 -0700</bug_when>
    <thetext>Committed r65704: &lt;http://trac.webkit.org/changeset/65704&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>64863</attachid>
            <date>2010-08-19 09:27:57 -0700</date>
            <delta_ts>2010-08-19 13:46:44 -0700</delta_ts>
            <desc>Implement PluginInfoStore::pluginsDirectories</desc>
            <filename>bug-43510-20100819122804.patch</filename>
            <type>text/plain</type>
            <size>10269</size>
            <attacher name="Adam Roben (:aroben)">aroben</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdDIvQ2hhbmdlTG9nIGIvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXgg
NGYxZTEwZWVmNTE3NjRjYjllMzYxNWM3ODYwNmNlNzc3NmUzNzE2Mi4uMjk2YzVmMmQyMTJjOGY1
OTU5YWJkMTZhY2ZkMTIwYjY0M2Y2OTViMSAxMDA2NDQKLS0tIGEvV2ViS2l0Mi9DaGFuZ2VMb2cK
KysrIGIvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsNSArMSwzMiBAQAogMjAxMC0wOC0xOSAgQWRh
bSBSb2JlbiAgPGFyb2JlbkBhcHBsZS5jb20+CiAKKyAgICAgICAgSW1wbGVtZW50IFBsdWdpbklu
Zm9TdG9yZTo6cGx1Z2luc0RpcmVjdG9yaWVzCisKKyAgICAgICAgVGhpcyBtYWtlcyBXZWJLaXQy
IGFibGUgdG8gZmluZCBhbmQgbG9hZCBGbGFzaCBvbiBXaW5kb3dzLgorCisgICAgICAgIE5vdGUg
dGhhdCB3ZSBhcmVuJ3QgeWV0IHJlc3BlY3RpbmcgdGhlIE1vemlsbGFQbHVnaW5zIHJlZ2lzdHJ5
IGtleS4KKyAgICAgICAgVGhhdCdzIGNvdmVyZWQgYnkgPGh0dHA6Ly93ZWJraXQub3JnL2IvNDQy
NzE+LgorCisgICAgICAgIEZpeGVzIDxodHRwOi8vd2Via2l0Lm9yZy9iLzQzNTEwPiA8cmRhcjov
L3Byb2JsZW0vODI3MzgyNz4gV2ViS2l0MgorICAgICAgICBzaG91bGQgbG9hZCBwbHVnaW5zIGZy
b20gdGhlIHNhbWUgZGlyZWN0b3JpZXMgYXMgb2xkLVdlYktpdAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVUlQcm9jZXNzL1BsdWdpbnMvd2luL1Bs
dWdpbkluZm9TdG9yZVdpbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OnBhcnNlVmVyc2lvblN0cmlu
Zyk6CisgICAgICAgIChXZWJLaXQ6OmNvbXBhcmVWZXJzaW9ucyk6CisgICAgICAgIChXZWJLaXQ6
OnNhZmFyaVBsdWdpbnNEaXJlY3RvcnkpOgorICAgICAgICAoV2ViS2l0OjphZGRNb3ppbGxhUGx1
Z2luRGlyZWN0b3JpZXMpOgorICAgICAgICAoV2ViS2l0OjphZGRXaW5kb3dzTWVkaWFQbGF5ZXJQ
bHVnaW5EaXJlY3RvcnkpOgorICAgICAgICAoV2ViS2l0OjphZGRRdWlja1RpbWVQbHVnaW5EaXJl
Y3RvcnkpOgorICAgICAgICAoV2ViS2l0OjphZGRBZG9iZUFjcm9iYXRQbHVnaW5EaXJlY3Rvcnkp
OgorICAgICAgICAoV2ViS2l0OjphZGRNYWNyb21lZGlhUGx1Z2luRGlyZWN0b3JpZXMpOgorICAg
ICAgICAoV2ViS2l0OjpQbHVnaW5JbmZvU3RvcmU6OnBsdWdpbnNEaXJlY3Rvcmllcyk6CisgICAg
ICAgIFBvcnRlZCAoYW5kIGV2ZXItc28tc2xpZ2h0bHkgY2xlYW5lZCB1cCkgY29kZSBmcm9tIFdl
YkNvcmUncworICAgICAgICBQbHVnaW5EYXRhYmFzZVdpbi5jcHAuCisKKzIwMTAtMDgtMTkgIEFk
YW0gUm9iZW4gIDxhcm9iZW5AYXBwbGUuY29tPgorCiAgICAgICAgIENhbGwgTlBfR2V0RW50cnlQ
b2ludHMgYmVmb3JlIE5QX0luaXRpYWxpemUgb24gV2luZG93cwogCiAgICAgICAgIERvaW5nIG90
aGVyd2lzZSB3aWxsIGNhdXNlIEZsYXNoIGFuZCBRdWlja1RpbWUgdG8gY3Jhc2ggaW5zaWRlCmRp
ZmYgLS1naXQgYS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL3dpbi9QbHVnaW5JbmZvU3RvcmVX
aW4uY3BwIGIvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy93aW4vUGx1Z2luSW5mb1N0b3JlV2lu
LmNwcAppbmRleCA0NzJiYjljZDlkOGYxNGQ2Y2ZmOTQxMzdmOTE4MGRhMmYxYjZkNTViLi5hODFi
YTg1YTE1NWNkYTI5NDkzMDUzMjY2ZmY0MTg2OTAyNmE0NjZmIDEwMDY0NAotLS0gYS9XZWJLaXQy
L1VJUHJvY2Vzcy9QbHVnaW5zL3dpbi9QbHVnaW5JbmZvU3RvcmVXaW4uY3BwCisrKyBiL1dlYktp
dDIvVUlQcm9jZXNzL1BsdWdpbnMvd2luL1BsdWdpbkluZm9TdG9yZVdpbi5jcHAKQEAgLTI4LDE3
ICsyOCwyMjcgQEAKICNkZWZpbmUgRElTQUJMRV9OT1RfSU1QTEVNRU5URURfV0FSTklOR1MgMQog
I2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVt
Lmg+CisjaW5jbHVkZSA8c2hsd2FwaS5oPgogI2luY2x1ZGUgPHd0Zi9Pd25BcnJheVB0ci5oPgog
CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK3N0YXRp
YyBpbmxpbmUgVmVjdG9yPGludD4gcGFyc2VWZXJzaW9uU3RyaW5nKGNvbnN0IFN0cmluZyYgdmVy
c2lvblN0cmluZykKK3sKKyAgICBWZWN0b3I8aW50PiB2ZXJzaW9uOworCisgICAgdW5zaWduZWQg
c3RhcnRQb3MgPSAwOworICAgIHVuc2lnbmVkIGVuZFBvczsKKyAgICAKKyAgICB3aGlsZSAoc3Rh
cnRQb3MgPCB2ZXJzaW9uU3RyaW5nLmxlbmd0aCgpKSB7CisgICAgICAgIGZvciAoZW5kUG9zID0g
c3RhcnRQb3M7IGVuZFBvcyA8IHZlcnNpb25TdHJpbmcubGVuZ3RoKCk7ICsrZW5kUG9zKQorICAg
ICAgICAgICAgaWYgKHZlcnNpb25TdHJpbmdbZW5kUG9zXSA9PSAnLicgfHwgdmVyc2lvblN0cmlu
Z1tlbmRQb3NdID09ICdfJykKKyAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICBpbnQg
dmVyc2lvbkNvbXBvbmVudCA9IHZlcnNpb25TdHJpbmcuc3Vic3RyaW5nKHN0YXJ0UG9zLCBlbmRQ
b3MgLSBzdGFydFBvcykudG9JbnQoKTsKKyAgICAgICAgdmVyc2lvbi5hcHBlbmQodmVyc2lvbkNv
bXBvbmVudCk7CisKKyAgICAgICAgc3RhcnRQb3MgPSBlbmRQb3MgKyAxOworICAgIH0KKworICAg
IHJldHVybiB2ZXJzaW9uOworfQorCisvLyBUaGlzIHJldHVybnMgd2hldGhlciB2ZXJzaW9uQSBp
cyBoaWdoZXIgdGhhbiB2ZXJzaW9uQgorc3RhdGljIGlubGluZSBib29sIGNvbXBhcmVWZXJzaW9u
cyhjb25zdCBWZWN0b3I8aW50PiYgdmVyc2lvbkEsIGNvbnN0IFZlY3RvcjxpbnQ+JiB2ZXJzaW9u
QikKK3sKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdmVyc2lvbkEuc2l6ZSgpOyBpKysp
IHsKKyAgICAgICAgaWYgKGkgPj0gdmVyc2lvbkIuc2l6ZSgpKQorICAgICAgICAgICAgcmV0dXJu
IHRydWU7CisKKyAgICAgICAgaWYgKHZlcnNpb25BW2ldID4gdmVyc2lvbkJbaV0pCisgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgZWxzZSBpZiAodmVyc2lvbkFbaV0gPCB2ZXJzaW9u
QltpXSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICAvLyBJZiB3ZSBj
b21lIGhlcmUsIHRoZSB2ZXJzaW9ucyBhcmUgZWl0aGVyIHRoZSBzYW1lIG9yIHZlcnNpb25CIGhh
cyBhbiBleHRyYSBjb21wb25lbnQsIGp1c3QgcmV0dXJuIGZhbHNlCisgICAgcmV0dXJuIGZhbHNl
OworfQorCitzdGF0aWMgaW5saW5lIFN0cmluZyBzYWZhcmlQbHVnaW5zRGlyZWN0b3J5KCkKK3sK
KyAgICBzdGF0aWMgU3RyaW5nIHBsdWdpbnNEaXJlY3Rvcnk7CisgICAgc3RhdGljIGJvb2wgY2Fj
aGVkUGx1Z2luRGlyZWN0b3J5ID0gZmFsc2U7CisKKyAgICBpZiAoIWNhY2hlZFBsdWdpbkRpcmVj
dG9yeSkgeworICAgICAgICBjYWNoZWRQbHVnaW5EaXJlY3RvcnkgPSB0cnVlOworCisgICAgICAg
IFdDSEFSIG1vZHVsZUZpbGVOYW1lU3RyW01BWF9QQVRIXTsKKyAgICAgICAgaW50IG1vZHVsZUZp
bGVOYW1lTGVuID0gOjpHZXRNb2R1bGVGaWxlTmFtZVcoMCwgbW9kdWxlRmlsZU5hbWVTdHIsIF9j
b3VudG9mKG1vZHVsZUZpbGVOYW1lU3RyKSk7CisKKyAgICAgICAgaWYgKCFtb2R1bGVGaWxlTmFt
ZUxlbiB8fCBtb2R1bGVGaWxlTmFtZUxlbiA9PSBfY291bnRvZihtb2R1bGVGaWxlTmFtZVN0cikp
CisgICAgICAgICAgICByZXR1cm4gcGx1Z2luc0RpcmVjdG9yeTsKKworICAgICAgICBpZiAoITo6
UGF0aFJlbW92ZUZpbGVTcGVjVyhtb2R1bGVGaWxlTmFtZVN0cikpCisgICAgICAgICAgICByZXR1
cm4gcGx1Z2luc0RpcmVjdG9yeTsKKworICAgICAgICBwbHVnaW5zRGlyZWN0b3J5ID0gU3RyaW5n
KG1vZHVsZUZpbGVOYW1lU3RyKSArICJcXFBsdWdpbnMiOworICAgIH0KKworICAgIHJldHVybiBw
bHVnaW5zRGlyZWN0b3J5OworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgYWRkTW96aWxsYVBsdWdp
bkRpcmVjdG9yaWVzKFZlY3RvcjxTdHJpbmc+JiBkaXJlY3RvcmllcykKK3sKKyAgICAvLyBFbnVt
ZXJhdGUgYWxsIE1vemlsbGEgcGx1Z2luIGRpcmVjdG9yaWVzIGluIHRoZSByZWdpc3RyeQorICAg
IEhLRVkga2V5OworICAgIExPTkcgcmVzdWx0ID0gOjpSZWdPcGVuS2V5RXhXKEhLRVlfTE9DQUxf
TUFDSElORSwgTCJTb2Z0d2FyZVxcTW96aWxsYSIsIDAsIEtFWV9SRUFELCAma2V5KTsKKyAgICBp
ZiAocmVzdWx0ID09IEVSUk9SX1NVQ0NFU1MpIHsKKyAgICAgICAgV0NIQVIgbmFtZVsxMjhdOwor
ICAgICAgICBGSUxFVElNRSBsYXN0TW9kaWZpZWQ7CisKKyAgICAgICAgLy8gRW51bWVyYXRlIHN1
YmtleXMKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7OyBpKyspIHsKKyAgICAgICAgICAgIERXT1JE
IG5hbWVMZW4gPSBzaXplb2YobmFtZSkgLyBzaXplb2YoV0NIQVIpOworICAgICAgICAgICAgcmVz
dWx0ID0gOjpSZWdFbnVtS2V5RXhXKGtleSwgaSwgbmFtZSwgJm5hbWVMZW4sIDAsIDAsIDAsICZs
YXN0TW9kaWZpZWQpOworCisgICAgICAgICAgICBpZiAocmVzdWx0ICE9IEVSUk9SX1NVQ0NFU1Mp
CisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIFN0cmluZyBleHRlbnNpb25z
UGF0aCA9IFN0cmluZyhuYW1lLCBuYW1lTGVuKSArICJcXEV4dGVuc2lvbnMiOworICAgICAgICAg
ICAgSEtFWSBleHRlbnNpb25zS2V5OworCisgICAgICAgICAgICAvLyBUcnkgb3BlbmluZyB0aGUg
a2V5CisgICAgICAgICAgICByZXN1bHQgPSA6OlJlZ09wZW5LZXlFeFcoa2V5LCBleHRlbnNpb25z
UGF0aC5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpLCAwLCBLRVlfUkVBRCwgJmV4dGVu
c2lvbnNLZXkpOworCisgICAgICAgICAgICBpZiAocmVzdWx0ID09IEVSUk9SX1NVQ0NFU1MpIHsK
KyAgICAgICAgICAgICAgICAvLyBOb3cgZ2V0IHRoZSBwbHVnaW5zIGRpcmVjdG9yeQorICAgICAg
ICAgICAgICAgIFdDSEFSIHBsdWdpbnNEaXJlY3RvcnlTdHJbTUFYX1BBVEhdOworICAgICAgICAg
ICAgICAgIERXT1JEIHBsdWdpbnNEaXJlY3RvcnlTaXplID0gc2l6ZW9mKHBsdWdpbnNEaXJlY3Rv
cnlTdHIpOworICAgICAgICAgICAgICAgIERXT1JEIHR5cGU7CisKKyAgICAgICAgICAgICAgICBy
ZXN1bHQgPSA6OlJlZ1F1ZXJ5VmFsdWVFeFcoZXh0ZW5zaW9uc0tleSwgTCJQbHVnaW5zIiwgMCwg
JnR5cGUsIHJlaW50ZXJwcmV0X2Nhc3Q8TFBCWVRFPigmcGx1Z2luc0RpcmVjdG9yeVN0ciksICZw
bHVnaW5zRGlyZWN0b3J5U2l6ZSk7CisKKyAgICAgICAgICAgICAgICBpZiAocmVzdWx0ID09IEVS
Uk9SX1NVQ0NFU1MgJiYgdHlwZSA9PSBSRUdfU1opCisgICAgICAgICAgICAgICAgICAgIGRpcmVj
dG9yaWVzLmFwcGVuZChTdHJpbmcocGx1Z2luc0RpcmVjdG9yeVN0ciwgcGx1Z2luc0RpcmVjdG9y
eVNpemUgLyBzaXplb2YoV0NIQVIpIC0gMSkpOworCisgICAgICAgICAgICAgICAgOjpSZWdDbG9z
ZUtleShleHRlbnNpb25zS2V5KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICAK
KyAgICAgICAgOjpSZWdDbG9zZUtleShrZXkpOworICAgIH0KK30KKworc3RhdGljIGlubGluZSB2
b2lkIGFkZFdpbmRvd3NNZWRpYVBsYXllclBsdWdpbkRpcmVjdG9yeShWZWN0b3I8U3RyaW5nPiYg
ZGlyZWN0b3JpZXMpCit7CisgICAgLy8gVGhlIG5ldyBXTVAgRmlyZWZveCBwbHVnaW4gaXMgaW5z
dGFsbGVkIGluIFxQRmlsZXNcUGx1Z2lucyBpZiBpdCBjYW4ndCBmaW5kIGFueSBGaXJlZm94IGlu
c3RhbGxzCisgICAgV0NIQVIgcGx1Z2luRGlyZWN0b3J5U3RyW01BWF9QQVRIICsgMV07CisgICAg
RFdPUkQgcGx1Z2luRGlyZWN0b3J5U2l6ZSA9IDo6RXhwYW5kRW52aXJvbm1lbnRTdHJpbmdzVyhM
IiVTWVNURU1EUklWRSVcXFBGaWxlc1xcUGx1Z2lucyIsIHBsdWdpbkRpcmVjdG9yeVN0ciwgX2Nv
dW50b2YocGx1Z2luRGlyZWN0b3J5U3RyKSk7CisKKyAgICBpZiAocGx1Z2luRGlyZWN0b3J5U2l6
ZSA+IDAgJiYgcGx1Z2luRGlyZWN0b3J5U2l6ZSA8PSBfY291bnRvZihwbHVnaW5EaXJlY3RvcnlT
dHIpKQorICAgICAgICBkaXJlY3Rvcmllcy5hcHBlbmQoU3RyaW5nKHBsdWdpbkRpcmVjdG9yeVN0
ciwgcGx1Z2luRGlyZWN0b3J5U2l6ZSAtIDEpKTsKKworICAgIERXT1JEIHR5cGU7CisgICAgV0NI
QVIgaW5zdGFsbGF0aW9uRGlyZWN0b3J5U3RyW01BWF9QQVRIXTsKKyAgICBEV09SRCBpbnN0YWxs
YXRpb25EaXJlY3RvcnlTaXplID0gc2l6ZW9mKGluc3RhbGxhdGlvbkRpcmVjdG9yeVN0cik7CisK
KyAgICBIUkVTVUxUIHJlc3VsdCA9IDo6U0hHZXRWYWx1ZVcoSEtFWV9MT0NBTF9NQUNISU5FLCBM
IlNvZnR3YXJlXFxNaWNyb3NvZnRcXE1lZGlhUGxheWVyIiwgTCJJbnN0YWxsYXRpb24gRGlyZWN0
b3J5IiwgJnR5cGUsIHJlaW50ZXJwcmV0X2Nhc3Q8TFBCWVRFPigmaW5zdGFsbGF0aW9uRGlyZWN0
b3J5U3RyKSwgJmluc3RhbGxhdGlvbkRpcmVjdG9yeVNpemUpOworCisgICAgaWYgKHJlc3VsdCA9
PSBFUlJPUl9TVUNDRVNTICYmIHR5cGUgPT0gUkVHX1NaKQorICAgICAgICBkaXJlY3Rvcmllcy5h
cHBlbmQoU3RyaW5nKGluc3RhbGxhdGlvbkRpcmVjdG9yeVN0ciwgaW5zdGFsbGF0aW9uRGlyZWN0
b3J5U2l6ZSAvIHNpemVvZihXQ0hBUikgLSAxKSk7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBh
ZGRRdWlja1RpbWVQbHVnaW5EaXJlY3RvcnkoVmVjdG9yPFN0cmluZz4mIGRpcmVjdG9yaWVzKQor
eworICAgIERXT1JEIHR5cGU7CisgICAgV0NIQVIgaW5zdGFsbGF0aW9uRGlyZWN0b3J5U3RyW01B
WF9QQVRIXTsKKyAgICBEV09SRCBpbnN0YWxsYXRpb25EaXJlY3RvcnlTaXplID0gc2l6ZW9mKGlu
c3RhbGxhdGlvbkRpcmVjdG9yeVN0cik7CisKKyAgICBIUkVTVUxUIHJlc3VsdCA9IDo6U0hHZXRW
YWx1ZVcoSEtFWV9MT0NBTF9NQUNISU5FLCBMIlNvZnR3YXJlXFxBcHBsZSBDb21wdXRlciwgSW5j
LlxcUXVpY2tUaW1lIiwgTCJJbnN0YWxsRGlyIiwgJnR5cGUsIHJlaW50ZXJwcmV0X2Nhc3Q8TFBC
WVRFPigmaW5zdGFsbGF0aW9uRGlyZWN0b3J5U3RyKSwgJmluc3RhbGxhdGlvbkRpcmVjdG9yeVNp
emUpOworCisgICAgaWYgKHJlc3VsdCA9PSBFUlJPUl9TVUNDRVNTICYmIHR5cGUgPT0gUkVHX1Na
KSB7CisgICAgICAgIFN0cmluZyBwbHVnaW5EaXIgPSBTdHJpbmcoaW5zdGFsbGF0aW9uRGlyZWN0
b3J5U3RyLCBpbnN0YWxsYXRpb25EaXJlY3RvcnlTaXplIC8gc2l6ZW9mKFdDSEFSKSAtIDEpICsg
IlxccGx1Z2lucyI7CisgICAgICAgIGRpcmVjdG9yaWVzLmFwcGVuZChwbHVnaW5EaXIpOworICAg
IH0KK30KKworc3RhdGljIGlubGluZSB2b2lkIGFkZEFkb2JlQWNyb2JhdFBsdWdpbkRpcmVjdG9y
eShWZWN0b3I8U3RyaW5nPiYgZGlyZWN0b3JpZXMpCit7CisgICAgSEtFWSBrZXk7CisgICAgSFJF
U1VMVCByZXN1bHQgPSA6OlJlZ09wZW5LZXlFeFcoSEtFWV9MT0NBTF9NQUNISU5FLCBMIlNvZnR3
YXJlXFxBZG9iZVxcQWNyb2JhdCBSZWFkZXIiLCAwLCBLRVlfUkVBRCwgJmtleSk7CisgICAgaWYg
KHJlc3VsdCAhPSBFUlJPUl9TVUNDRVNTKQorICAgICAgICByZXR1cm47CisKKyAgICBXQ0hBUiBu
YW1lWzEyOF07CisgICAgRklMRVRJTUUgbGFzdE1vZGlmaWVkOworCisgICAgVmVjdG9yPGludD4g
bGF0ZXN0QWNyb2JhdFZlcnNpb247CisgICAgU3RyaW5nIGxhdGVzdEFjcm9iYXRWZXJzaW9uU3Ry
aW5nOworCisgICAgLy8gRW51bWVyYXRlIHN1YmtleXMKKyAgICBmb3IgKGludCBpID0gMDs7IGkr
KykgeworICAgICAgICBEV09SRCBuYW1lTGVuID0gc2l6ZW9mKG5hbWUpIC8gc2l6ZW9mKFdDSEFS
KTsKKyAgICAgICAgcmVzdWx0ID0gOjpSZWdFbnVtS2V5RXhXKGtleSwgaSwgbmFtZSwgJm5hbWVM
ZW4sIDAsIDAsIDAsICZsYXN0TW9kaWZpZWQpOworCisgICAgICAgIGlmIChyZXN1bHQgIT0gRVJS
T1JfU1VDQ0VTUykKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIFZlY3RvcjxpbnQ+IGFj
cm9iYXRWZXJzaW9uID0gcGFyc2VWZXJzaW9uU3RyaW5nKFN0cmluZyhuYW1lLCBuYW1lTGVuKSk7
CisgICAgICAgIGlmIChjb21wYXJlVmVyc2lvbnMoYWNyb2JhdFZlcnNpb24sIGxhdGVzdEFjcm9i
YXRWZXJzaW9uKSkgeworICAgICAgICAgICAgbGF0ZXN0QWNyb2JhdFZlcnNpb24gPSBhY3JvYmF0
VmVyc2lvbjsKKyAgICAgICAgICAgIGxhdGVzdEFjcm9iYXRWZXJzaW9uU3RyaW5nID0gU3RyaW5n
KG5hbWUsIG5hbWVMZW4pOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKCFsYXRlc3RBY3Jv
YmF0VmVyc2lvblN0cmluZy5pc051bGwoKSkgeworICAgICAgICBEV09SRCB0eXBlOworICAgICAg
ICBXQ0hBUiBhY3JvYmF0SW5zdGFsbFBhdGhTdHJbTUFYX1BBVEhdOworICAgICAgICBEV09SRCBh
Y3JvYmF0SW5zdGFsbFBhdGhTaXplID0gc2l6ZW9mKGFjcm9iYXRJbnN0YWxsUGF0aFN0cik7CisK
KyAgICAgICAgU3RyaW5nIGFjcm9iYXRQbHVnaW5LZXlQYXRoID0gIlNvZnR3YXJlXFxBZG9iZVxc
QWNyb2JhdCBSZWFkZXJcXCIgKyBsYXRlc3RBY3JvYmF0VmVyc2lvblN0cmluZyArICJcXEluc3Rh
bGxQYXRoIjsKKyAgICAgICAgcmVzdWx0ID0gOjpTSEdldFZhbHVlVyhIS0VZX0xPQ0FMX01BQ0hJ
TkUsIGFjcm9iYXRQbHVnaW5LZXlQYXRoLmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCks
IDAsICZ0eXBlLCByZWludGVycHJldF9jYXN0PExQQllURT4oYWNyb2JhdEluc3RhbGxQYXRoU3Ry
KSwgJmFjcm9iYXRJbnN0YWxsUGF0aFNpemUpOworCisgICAgICAgIGlmIChyZXN1bHQgPT0gRVJS
T1JfU1VDQ0VTUykgeworICAgICAgICAgICAgU3RyaW5nIGFjcm9iYXRQbHVnaW5EaXJlY3Rvcnkg
PSBTdHJpbmcoYWNyb2JhdEluc3RhbGxQYXRoU3RyLCBhY3JvYmF0SW5zdGFsbFBhdGhTaXplIC8g
c2l6ZW9mKFdDSEFSKSAtIDEpICsgIlxcYnJvd3NlciI7CisgICAgICAgICAgICBkaXJlY3Rvcmll
cy5hcHBlbmQoYWNyb2JhdFBsdWdpbkRpcmVjdG9yeSk7CisgICAgICAgIH0KKyAgICB9CisKKyAg
ICA6OlJlZ0Nsb3NlS2V5KGtleSk7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBhZGRNYWNyb21l
ZGlhUGx1Z2luRGlyZWN0b3JpZXMoVmVjdG9yPFN0cmluZz4mIGRpcmVjdG9yaWVzKQoreworI2lm
ICFPUyhXSU5DRSkKKyAgICBXQ0hBUiBzeXN0ZW1EaXJlY3RvcnlTdHJbTUFYX1BBVEhdOworCisg
ICAgaWYgKDo6R2V0U3lzdGVtRGlyZWN0b3J5VyhzeXN0ZW1EaXJlY3RvcnlTdHIsIF9jb3VudG9m
KHN5c3RlbURpcmVjdG9yeVN0cikpID09IDApCisgICAgICAgIHJldHVybjsKKworICAgIFdDSEFS
IG1hY3JvbWVkaWFEaXJlY3RvcnlTdHJbTUFYX1BBVEhdOworCisgICAgOjpQYXRoQ29tYmluZVco
bWFjcm9tZWRpYURpcmVjdG9yeVN0ciwgc3lzdGVtRGlyZWN0b3J5U3RyLCBMIm1hY3JvbWVkXFxG
bGFzaCIpOworICAgIGRpcmVjdG9yaWVzLmFwcGVuZChtYWNyb21lZGlhRGlyZWN0b3J5U3RyKTsK
KworICAgIDo6UGF0aENvbWJpbmVXKG1hY3JvbWVkaWFEaXJlY3RvcnlTdHIsIHN5c3RlbURpcmVj
dG9yeVN0ciwgTCJtYWNyb21lZFxcU2hvY2t3YXZlIDEwIik7CisgICAgZGlyZWN0b3JpZXMuYXBw
ZW5kKG1hY3JvbWVkaWFEaXJlY3RvcnlTdHIpOworI2VuZGlmCit9CisKIFZlY3RvcjxTdHJpbmc+
IFBsdWdpbkluZm9TdG9yZTo6cGx1Z2luc0RpcmVjdG9yaWVzKCkKIHsKLSAgICAvLyBGSVhNRTog
PGh0dHA6Ly93ZWJraXQub3JnL2IvNDM1MTA+IE1pZ3JhdGUgbG9naWMgaGVyZSBmcm9tIFBsdWdp
bkRhdGFiYXNlOjpkZWZhdWx0UGx1Z2luRGlyZWN0b3JpZXMuCi0gICAgbm90SW1wbGVtZW50ZWQo
KTsKLSAgICByZXR1cm4gVmVjdG9yPFN0cmluZz4oKTsKKyAgICBWZWN0b3I8U3RyaW5nPiBkaXJl
Y3RvcmllczsKKworICAgIFN0cmluZyBvdXJEaXJlY3RvcnkgPSBzYWZhcmlQbHVnaW5zRGlyZWN0
b3J5KCk7CisgICAgaWYgKCFvdXJEaXJlY3RvcnkuaXNOdWxsKCkpCisgICAgICAgIGRpcmVjdG9y
aWVzLmFwcGVuZChvdXJEaXJlY3RvcnkpOworCisgICAgYWRkUXVpY2tUaW1lUGx1Z2luRGlyZWN0
b3J5KGRpcmVjdG9yaWVzKTsKKyAgICBhZGRBZG9iZUFjcm9iYXRQbHVnaW5EaXJlY3RvcnkoZGly
ZWN0b3JpZXMpOworICAgIGFkZE1vemlsbGFQbHVnaW5EaXJlY3RvcmllcyhkaXJlY3Rvcmllcyk7
CisgICAgYWRkV2luZG93c01lZGlhUGxheWVyUGx1Z2luRGlyZWN0b3J5KGRpcmVjdG9yaWVzKTsK
KyAgICBhZGRNYWNyb21lZGlhUGx1Z2luRGlyZWN0b3JpZXMoZGlyZWN0b3JpZXMpOworCisgICAg
cmV0dXJuIGRpcmVjdG9yaWVzOwogfQogCiBjbGFzcyBQYXRoV2Fsa2VyIDogcHVibGljIE5vbmNv
cHlhYmxlIHsK
</data>
<flag name="review"
          id="53506"
          type_id="1"
          status="+"
          setter="jhoneycutt"
    />
          </attachment>
      

    </bug>

</bugzilla>