<?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>81468</bug_id>
          
          <creation_ts>2012-03-17 23:52:44 -0700</creation_ts>
          <short_desc>JSCallbackFunction::toStringCallback/valueOfCallback do not handle 0 return value</short_desc>
          <delta_ts>2012-03-22 12:05:24 -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>JavaScriptCore</component>
          <version>528+ (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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Gavin Barraclough">barraclough</reporter>
          <assigned_to name="Gavin Barraclough">barraclough</assigned_to>
          <cc>ggaren</cc>
    
    <cc>mhahnenberg</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>581425</commentid>
    <comment_count>0</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2012-03-17 23:52:44 -0700</bug_when>
    <thetext>The API specifies that convertToType may opt not to handle a conversion:
    &quot;@result The objects&apos;s converted value, or NULL if the object was not converted.&quot;
In which case, it would propagate first up the JSClass hierarchy, calling its superclass&apos;s conversion functions, and failing that call the 

Unfortunately this behaviour was removed in bug#69677/bug#69858, and instead we now rely on the toStringCallback/valueOfCallback function introduced in bug#69156.  Even after a fix in bug#73368, these will return the result from the first convertToType they find, regardless of whether this result is null, and if no convertToType method is found in the api class hierarchy (possible if toStringCallback/valueOfCallback was accessed off the prototype chain), they will also return a null pointer.  This is unsafe.

It would be easy to make the approach based around toStringCallback/valueOfCallback continue to walk the api class hierarchy, but making the fallback to defaultValue would be problematic (since defaultValue calls toStringCallback/valueOfCallback, this would infinitely recurse).  Making the fallback work with toString/valueOf methods attached to api objects is probably not the right thing to do – instead, we should just implement the defaultValue trap for api objects.

In addition, this bug highlights that fact that JSCallbackFunction::call will allow a hard null to be returned from C to JavaScript - this is not okay.  Handle with an exception.

&lt;rdar://problem/11034745&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>581426</commentid>
    <comment_count>1</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2012-03-17 23:58:51 -0700</bug_when>
    <thetext>oops, &quot;and failing that call the&quot; JSObject::defaultValue function.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>581427</commentid>
    <comment_count>2</comment_count>
      <attachid>132485</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2012-03-18 00:05:16 -0700</bug_when>
    <thetext>Created attachment 132485
Fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>581470</commentid>
    <comment_count>3</comment_count>
      <attachid>132485</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2012-03-18 11:32:42 -0700</bug_when>
    <thetext>Comment on attachment 132485
Fix

Can you add an additional test to testapi to verify that we don&apos;t crash on a convertToType function returning null?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>585568</commentid>
    <comment_count>4</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2012-03-22 12:05:24 -0700</bug_when>
    <thetext>Fixed in r111162</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>132485</attachid>
            <date>2012-03-18 00:05:16 -0700</date>
            <delta_ts>2012-03-18 11:32:42 -0700</delta_ts>
            <desc>Fix</desc>
            <filename>81468.patch</filename>
            <type>text/plain</type>
            <size>10935</size>
            <attacher name="Gavin Barraclough">barraclough</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTExMTMxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUyIEBA
CisyMDEyLTAzLTE4ICBHYXZpbiBCYXJyYWNsb3VnaCAgPGJhcnJhY2xvdWdoQGFwcGxlLmNvbT4K
KworICAgICAgICBKU0NhbGxiYWNrRnVuY3Rpb246OnRvU3RyaW5nQ2FsbGJhY2svdmFsdWVPZkNh
bGxiYWNrIGRvIG5vdCBoYW5kbGUgMCByZXR1cm4gdmFsdWUgZnJvbSBjb252ZXJ0VG9UeXBlCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MTQ2OCA8cmRh
cjovL3Byb2JsZW0vMTEwMzQ3NDU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgVGhlIEFQSSBzcGVjaWZpZXMgdGhhdCBjb252ZXJ0VG9UeXBlIG1heSBv
cHQgbm90IHRvIGhhbmRsZSBhIGNvbnZlcnNpb246CisgICAgICAgICAgICAiQHJlc3VsdCBUaGUg
b2JqZWN0cydzIGNvbnZlcnRlZCB2YWx1ZSwgb3IgTlVMTCBpZiB0aGUgb2JqZWN0IHdhcyBub3Qg
Y29udmVydGVkLiIKKyAgICAgICAgSW4gd2hpY2ggY2FzZSwgaXQgd291bGQgcHJvcGFnYXRlIGZp
cnN0IHVwIHRoZSBKU0NsYXNzIGhpZXJhcmNoeSwgY2FsbGluZyBpdHMgc3VwZXJjbGFzcydzCisg
ICAgICAgIGNvbnZlcnNpb24gZnVuY3Rpb25zLCBhbmQgZmFpbGluZyB0aGF0IGNhbGwgdGhlIEpT
T2JqZWN0OjpkZWZhdWx0VmFsdWUgZnVuY3Rpb24uCisKKyAgICAgICAgVW5mb3J0dW5hdGVseSB0
aGlzIGJlaGF2aW91ciB3YXMgcmVtb3ZlZCBpbiBidWcjNjk2NzcvYnVnIzY5ODU4LCBhbmQgaW5z
dGVhZCB3ZSBub3cgcmVseSBvbgorICAgICAgICB0aGUgdG9TdHJpbmdDYWxsYmFjay92YWx1ZU9m
Q2FsbGJhY2sgZnVuY3Rpb24gaW50cm9kdWNlZCBpbiBidWcjNjkxNTYuIEV2ZW4gYWZ0ZXIgYSBm
aXggaW4KKyAgICAgICAgYnVnIzczMzY4LCB0aGVzZSB3aWxsIHJldHVybiB0aGUgcmVzdWx0IGZy
b20gdGhlIGZpcnN0IGNvbnZlcnRUb1R5cGUgdGhleSBmaW5kLCByZWdhcmRsZXNzCisgICAgICAg
IG9mIHdoZXRoZXIgdGhpcyByZXN1bHQgaXMgbnVsbCwgYW5kIGlmIG5vIGNvbnZlcnRUb1R5cGUg
bWV0aG9kIGlzIGZvdW5kIGluIHRoZSBhcGkgY2xhc3MKKyAgICAgICAgaGllcmFyY2h5IChwb3Nz
aWJsZSBpZiB0b1N0cmluZ0NhbGxiYWNrL3ZhbHVlT2ZDYWxsYmFjayB3YXMgYWNjZXNzZWQgb2Zm
IHRoZSBwcm90b3R5cGUKKyAgICAgICAgY2hhaW4pLCB0aGV5IHdpbGwgYWxzbyByZXR1cm4gYSBu
dWxsIHBvaW50ZXIuIFRoaXMgaXMgdW5zYWZlLgorCisgICAgICAgIEl0IHdvdWxkIGJlIGVhc3kg
dG8gbWFrZSB0aGUgYXBwcm9hY2ggYmFzZWQgYXJvdW5kIHRvU3RyaW5nQ2FsbGJhY2svdmFsdWVP
ZkNhbGxiYWNrIGNvbnRpbnVlCisgICAgICAgIHRvIHdhbGsgdGhlIGFwaSBjbGFzcyBoaWVyYXJj
aHksIGJ1dCBtYWtpbmcgdGhlIGZhbGxiYWNrIHRvIGRlZmF1bHRWYWx1ZSB3b3VsZCBiZSBwcm9i
bGVtYXRpYworICAgICAgICAoc2luY2UgZGVmYXVsdFZhbHVlIGNhbGxzIHRvU3RyaW5nQ2FsbGJh
Y2svdmFsdWVPZkNhbGxiYWNrLCB0aGlzIHdvdWxkIGluZmluaXRlbHkgcmVjdXJzZSkuCisgICAg
ICAgIE1ha2luZyB0aGUgZmFsbGJhY2sgd29yayB3aXRoIHRvU3RyaW5nL3ZhbHVlT2YgbWV0aG9k
cyBhdHRhY2hlZCB0byBhcGkgb2JqZWN0cyBpcyBwcm9iYWJseQorICAgICAgICBub3QgdGhlIHJp
Z2h0IHRoaW5nIHRvIGRvIOKAkyBpbnN0ZWFkLCB3ZSBzaG91bGQganVzdCBpbXBsZW1lbnQgdGhl
IGRlZmF1bHRWYWx1ZSB0cmFwIGZvciBhcGkKKyAgICAgICAgb2JqZWN0cy4KKworICAgICAgICBJ
biBhZGRpdGlvbiwgdGhpcyBidWcgaGlnaGxpZ2h0cyB0aGF0IGZhY3QgdGhhdCBKU0NhbGxiYWNr
RnVuY3Rpb246OmNhbGwgd2lsbCBhbGxvdyBhIGhhcmQKKyAgICAgICAgbnVsbCB0byBiZSByZXR1
cm5lZCBmcm9tIEMgdG8gSmF2YVNjcmlwdCAtIHRoaXMgaXMgbm90IG9rYXkuIEhhbmRsZSB3aXRo
IGFuIGV4Y2VwdGlvbi4KKworICAgICAgICAqIEFQSS9KU0NhbGxiYWNrRnVuY3Rpb24uY3BwOgor
ICAgICAgICAoSlNDOjpKU0NhbGxiYWNrRnVuY3Rpb246OmNhbGwpOgorICAgICAgICAgICAgLSBT
aG91bGQgYmUgbnVsbCBjaGVja2luZyB0aGUgcmV0dXJuIHZhbHVlLgorICAgICAgICAoSlNDKToK
KyAgICAgICAgICAgIC0gUmVtb3ZlIHRvU3RyaW5nQ2FsbGJhY2svdmFsdWVPZkNhbGxiYWNrLgor
ICAgICAgICAqIEFQSS9KU0NhbGxiYWNrRnVuY3Rpb24uaDoKKyAgICAgICAgKEpTQ2FsbGJhY2tG
dW5jdGlvbik6CisgICAgICAgICAgICAtIFJlbW92ZSB0b1N0cmluZ0NhbGxiYWNrL3ZhbHVlT2ZD
YWxsYmFjay4KKyAgICAgICAgKiBBUEkvSlNDYWxsYmFja09iamVjdC5oOgorICAgICAgICAoSlND
YWxsYmFja09iamVjdCk6CisgICAgICAgICAgICAtIEFkZCBkZWZhdWx0VmFsdWUgbXRob2RzIHRv
IEpTQ2FsbGJhY2tPYmplY3QuCisgICAgICAgICogQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlv
bnMuaDoKKyAgICAgICAgKEpTQzo6OjpkZWZhdWx0VmFsdWUpOgorICAgICAgICAgICAgLSBBZGQg
ZGVmYXVsdFZhbHVlIG10aG9kcyB0byBKU0NhbGxiYWNrT2JqZWN0LgorICAgICAgICAqIEFQSS9K
U0NsYXNzUmVmLmNwcDoKKyAgICAgICAgKE9wYXF1ZUpTQ2xhc3M6OnByb3RvdHlwZSk6CisgICAg
ICAgICAgICAtIFJlbW92ZSB0b1N0cmluZ0NhbGxiYWNrL3ZhbHVlT2ZDYWxsYmFjay4KKyAgICAg
ICAgKiBBUEkvdGVzdHMvdGVzdGFwaS5qczoKKyAgICAgICAgICAgIC0gUmV2ZXJ0IHRoaXMgdGVz
dCwgbm93IHdlIG5vIGxvbmdlciBhcnRpZmljaWFsbHkgaW50cm9kdWNlIGEgdG9TdHJpbmcgbWV0
aG9kIG9udG8gdGhlIGFwaSBvYmplY3QuCisKIDIwMTItMDMtMTcgIEdhdmluIEJhcnJhY2xvdWdo
ICA8YmFycmFjbG91Z2hAYXBwbGUuY29tPgogCiAgICAgICAgIFN0cmVuZ3RoIHJlZHVjdGlvbiwg
UmVnRXhwLmV4ZWMgLT4gUmVnRXhwLnRlc3QKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNDYWxsYmFja0Z1bmN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL0pTQ2FsbGJhY2tGdW5jdGlvbi5jcHAJKHJldmlzaW9uIDExMTEzMSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja0Z1bmN0aW9uLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzAsNyArMzAsNiBAQAogI2luY2x1ZGUgIkFQSUNhc3QuaCIKICNpbmNsdWRlICJD
b2RlQmxvY2suaCIKICNpbmNsdWRlICJFeGNlcHRpb25IZWxwZXJzLmgiCi0jaW5jbHVkZSAiSlND
YWxsYmFja09iamVjdC5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJGdW5j
dGlvblByb3RvdHlwZS5oIgogI2luY2x1ZGUgPHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaD4KQEAg
LTc2LDYgKzc1LDEwIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ2FsbGJhY2tGdW5jdGlvbjo6Y2FsbCgK
ICAgICBpZiAoZXhjZXB0aW9uKQogICAgICAgICB0aHJvd0Vycm9yKGV4ZWMsIHRvSlMoZXhlYywg
ZXhjZXB0aW9uKSk7CiAKKyAgICAvLyByZXN1bHQgbXVzdCBiZSBhIHZhbGlkIEpTVmFsdWUuCisg
ICAgaWYgKCFyZXN1bHQpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOwor
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTKGV4ZWMsIHJlc3VsdCkpOwogfQogCkBA
IC04NSwzNSArODgsNCBAQCBDYWxsVHlwZSBKU0NhbGxiYWNrRnVuY3Rpb246OmdldENhbGxEYXRh
CiAgICAgcmV0dXJuIENhbGxUeXBlSG9zdDsKIH0KIAotSlNWYWx1ZVJlZiBKU0NhbGxiYWNrRnVu
Y3Rpb246OnRvU3RyaW5nQ2FsbGJhY2soSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYsIEpT
T2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCwgY29uc3QgSlNWYWx1ZVJlZltdLCBKU1ZhbHVl
UmVmKiBleGNlcHRpb24pCi17Ci0gICAgSlNPYmplY3QqIG9iamVjdCA9IHRvSlModGhpc09iamVj
dCk7Ci0gICAgaWYgKG9iamVjdC0+aW5oZXJpdHMoJkpTQ2FsbGJhY2tPYmplY3Q8SlNOb25GaW5h
bE9iamVjdD46OnNfaW5mbykpIHsKLSAgICAgICAgZm9yIChKU0NsYXNzUmVmIGpzQ2xhc3MgPSBq
c0Nhc3Q8SlNDYWxsYmFja09iamVjdDxKU05vbkZpbmFsT2JqZWN0Pio+KG9iamVjdCktPmNsYXNz
UmVmKCk7IGpzQ2xhc3M7IGpzQ2xhc3MgPSBqc0NsYXNzLT5wYXJlbnRDbGFzcykKLSAgICAgICAg
ICAgIGlmIChqc0NsYXNzLT5jb252ZXJ0VG9UeXBlKQotICAgICAgICAgICAgICAgIHJldHVybiBq
c0NsYXNzLT5jb252ZXJ0VG9UeXBlKGN0eCwgdGhpc09iamVjdCwga0pTVHlwZVN0cmluZywgZXhj
ZXB0aW9uKTsKLSAgICB9IGVsc2UgaWYgKG9iamVjdC0+aW5oZXJpdHMoJkpTQ2FsbGJhY2tPYmpl
Y3Q8SlNHbG9iYWxPYmplY3Q+OjpzX2luZm8pKSB7Ci0gICAgICAgIGZvciAoSlNDbGFzc1JlZiBq
c0NsYXNzID0ganNDYXN0PEpTQ2FsbGJhY2tPYmplY3Q8SlNHbG9iYWxPYmplY3Q+Kj4ob2JqZWN0
KS0+Y2xhc3NSZWYoKTsganNDbGFzczsganNDbGFzcyA9IGpzQ2xhc3MtPnBhcmVudENsYXNzKQot
ICAgICAgICAgICAgaWYgKGpzQ2xhc3MtPmNvbnZlcnRUb1R5cGUpCi0gICAgICAgICAgICAgICAg
cmV0dXJuIGpzQ2xhc3MtPmNvbnZlcnRUb1R5cGUoY3R4LCB0aGlzT2JqZWN0LCBrSlNUeXBlU3Ry
aW5nLCBleGNlcHRpb24pOwotICAgIH0KLSAgICByZXR1cm4gMDsKLX0KLQotSlNWYWx1ZVJlZiBK
U0NhbGxiYWNrRnVuY3Rpb246OnZhbHVlT2ZDYWxsYmFjayhKU0NvbnRleHRSZWYgY3R4LCBKU09i
amVjdFJlZiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90LCBjb25zdCBKU1ZhbHVlUmVm
W10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKLXsKLSAgICBKU09iamVjdCogb2JqZWN0ID0gdG9K
Uyh0aGlzT2JqZWN0KTsKLSAgICBpZiAob2JqZWN0LT5pbmhlcml0cygmSlNDYWxsYmFja09iamVj
dDxKU05vbkZpbmFsT2JqZWN0Pjo6c19pbmZvKSkgewotICAgICAgICBmb3IgKEpTQ2xhc3NSZWYg
anNDbGFzcyA9IGpzQ2FzdDxKU0NhbGxiYWNrT2JqZWN0PEpTTm9uRmluYWxPYmplY3Q+Kj4ob2Jq
ZWN0KS0+Y2xhc3NSZWYoKTsganNDbGFzczsganNDbGFzcyA9IGpzQ2xhc3MtPnBhcmVudENsYXNz
KQotICAgICAgICAgICAgaWYgKGpzQ2xhc3MtPmNvbnZlcnRUb1R5cGUpCi0gICAgICAgICAgICAg
ICAgcmV0dXJuIGpzQ2xhc3MtPmNvbnZlcnRUb1R5cGUoY3R4LCB0aGlzT2JqZWN0LCBrSlNUeXBl
TnVtYmVyLCBleGNlcHRpb24pOwotICAgIH0gZWxzZSBpZiAob2JqZWN0LT5pbmhlcml0cygmSlND
YWxsYmFja09iamVjdDxKU0dsb2JhbE9iamVjdD46OnNfaW5mbykpIHsKLSAgICAgICAgZm9yIChK
U0NsYXNzUmVmIGpzQ2xhc3MgPSBqc0Nhc3Q8SlNDYWxsYmFja09iamVjdDxKU0dsb2JhbE9iamVj
dD4qPihvYmplY3QpLT5jbGFzc1JlZigpOyBqc0NsYXNzOyBqc0NsYXNzID0ganNDbGFzcy0+cGFy
ZW50Q2xhc3MpCi0gICAgICAgICAgICBpZiAoanNDbGFzcy0+Y29udmVydFRvVHlwZSkKLSAgICAg
ICAgICAgICAgICByZXR1cm4ganNDbGFzcy0+Y29udmVydFRvVHlwZShjdHgsIHRoaXNPYmplY3Qs
IGtKU1R5cGVOdW1iZXIsIGV4Y2VwdGlvbik7Ci0gICAgfQotICAgIHJldHVybiAwOwotfQotCi0K
IH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0Nh
bGxiYWNrRnVuY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L0pTQ2FsbGJhY2tGdW5jdGlvbi5oCShyZXZpc2lvbiAxMTExMzEpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tGdW5jdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC01NSw5
ICs1NSw2IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKGdsb2Jh
bERhdGEsIGdsb2JhbE9iamVjdCwgcHJvdG8sIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVy
ZUZsYWdzKSwgJnNfaW5mbyk7IAogICAgIH0KIAotICAgIHN0YXRpYyBKU1ZhbHVlUmVmIHRvU3Ry
aW5nQ2FsbGJhY2soSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpTT2Jq
ZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVm
IGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pOwotICAgIHN0YXRpYyBKU1ZhbHVl
UmVmIHZhbHVlT2ZDYWxsYmFjayhKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiBmdW5jdGlv
biwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpT
VmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbik7Ci0KIHByaXZhdGU6
CiAgICAgc3RhdGljIENhbGxUeXBlIGdldENhbGxEYXRhKEpTQ2VsbCosIENhbGxEYXRhJik7CiAK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdC5oCShy
ZXZpc2lvbiAxMTExMzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tP
YmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMTc1LDYgKzE3NSw4IEBAIHByaXZhdGU6CiAKICAg
ICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOwogCisgICAgc3RhdGljIEpTVmFsdWUgZGVm
YXVsdFZhbHVlKGNvbnN0IEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJlZmVycmVkUHJpbWl0aXZl
VHlwZSk7CisKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiwgRXhl
Y1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyBi
b29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCosIEV4ZWNTdGF0ZSosIGNvbnN0
IElkZW50aWZpZXImLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKICAgICAKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5o
CShyZXZpc2lvbiAxMTExMzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJh
Y2tPYmplY3RGdW5jdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtMTg0LDYgKzE4NCwzMCBAQCBi
b29sIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6Z2V0T3duUHJvCiB9CiAKIHRlbXBsYXRlIDxj
bGFzcyBQYXJlbnQ+CitKU1ZhbHVlIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6ZGVmYXVsdFZh
bHVlKGNvbnN0IEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJlZmVycmVkUHJp
bWl0aXZlVHlwZSBoaW50KQoreworICAgIGNvbnN0IEpTQ2FsbGJhY2tPYmplY3QqIHRoaXNPYmpl
Y3QgPSBqc0Nhc3Q8Y29uc3QgSlNDYWxsYmFja09iamVjdCo+KG9iamVjdCk7CisgICAgSlNDb250
ZXh0UmVmIGN0eCA9IHRvUmVmKGV4ZWMpOworICAgIEpTT2JqZWN0UmVmIHRoaXNSZWYgPSB0b1Jl
Zih0aGlzT2JqZWN0KTsKKyAgICA6OkpTVHlwZSBqc0hpbnQgPSBoaW50ID09IFByZWZlclN0cmlu
ZyA/IGtKU1R5cGVTdHJpbmcgOiBrSlNUeXBlTnVtYmVyOworCisgICAgZm9yIChKU0NsYXNzUmVm
IGpzQ2xhc3MgPSB0aGlzT2JqZWN0LT5jbGFzc1JlZigpOyBqc0NsYXNzOyBqc0NsYXNzID0ganND
bGFzcy0+cGFyZW50Q2xhc3MpIHsKKyAgICAgICAgaWYgKEpTT2JqZWN0Q29udmVydFRvVHlwZUNh
bGxiYWNrIGNvbnZlcnRUb1R5cGUgPSBqc0NsYXNzLT5jb252ZXJ0VG9UeXBlKSB7CisgICAgICAg
ICAgICBKU1ZhbHVlUmVmIGV4Y2VwdGlvbiA9IDA7CisgICAgICAgICAgICBKU1ZhbHVlUmVmIHJl
c3VsdCA9IGNvbnZlcnRUb1R5cGUoY3R4LCB0aGlzUmVmLCBqc0hpbnQsICZleGNlcHRpb24pOwor
ICAgICAgICAgICAgaWYgKGV4Y2VwdGlvbikgeworICAgICAgICAgICAgICAgIHRocm93RXJyb3Io
ZXhlYywgdG9KUyhleGVjLCBleGNlcHRpb24pKTsKKyAgICAgICAgICAgICAgICByZXR1cm4ganNV
bmRlZmluZWQoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChyZXN1bHQpCisgICAg
ICAgICAgICAgICAgcmV0dXJuIHRvSlMoZXhlYywgcmVzdWx0KTsKKyAgICAgICAgfQorICAgIH0K
KyAgICAKKyAgICByZXR1cm4gUGFyZW50OjpkZWZhdWx0VmFsdWUob2JqZWN0LCBleGVjLCBoaW50
KTsKK30KKwordGVtcGxhdGUgPGNsYXNzIFBhcmVudD4KIGJvb2wgSlNDYWxsYmFja09iamVjdDxQ
YXJlbnQ+OjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0
YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3Jp
cHRvciYgZGVzY3JpcHRvcikKIHsKICAgICBKU0NhbGxiYWNrT2JqZWN0KiB0aGlzT2JqZWN0ID0g
anNDYXN0PEpTQ2FsbGJhY2tPYmplY3QqPihvYmplY3QpOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL0FQSS9KU0NsYXNzUmVmLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL0pTQ2xhc3NSZWYuY3BwCShyZXZpc2lvbiAxMTExMzEpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL0pTQ2xhc3NSZWYuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDQsMTcg
KzIwNCw2IEBAIEpTT2JqZWN0KiBPcGFxdWVKU0NsYXNzOjpwcm90b3R5cGUoRXhlY1MKICAgICAg
KiAgRGVyaXZlZENsYXNzICB8ICBEZXJpdmVkQ2xhc3NQcm90b3R5cGUKICAgICAgKi8KIAotICAg
IGlmIChjb252ZXJ0VG9UeXBlKSB7Ci0gICAgICAgIGlmICghcHJvdG90eXBlQ2xhc3MpCi0gICAg
ICAgICAgICBwcm90b3R5cGVDbGFzcyA9IE9wYXF1ZUpTQ2xhc3M6OmNyZWF0ZSgma0pTQ2xhc3NE
ZWZpbml0aW9uRW1wdHkpLmxlYWtSZWYoKTsKLSAgICAgICAgaWYgKCFwcm90b3R5cGVDbGFzcy0+
bV9zdGF0aWNGdW5jdGlvbnMpCi0gICAgICAgICAgICBwcm90b3R5cGVDbGFzcy0+bV9zdGF0aWNG
dW5jdGlvbnMgPSBhZG9wdFB0cihuZXcgT3BhcXVlSlNDbGFzc1N0YXRpY0Z1bmN0aW9uc1RhYmxl
KTsKLSAgICAgICAgY29uc3QgSWRlbnRpZmllciYgdG9TdHJpbmcgPSBleGVjLT5wcm9wZXJ0eU5h
bWVzKCkudG9TdHJpbmc7Ci0gICAgICAgIGNvbnN0IElkZW50aWZpZXImIHZhbHVlT2YgPSBleGVj
LT5wcm9wZXJ0eU5hbWVzKCkudmFsdWVPZjsKLSAgICAgICAgcHJvdG90eXBlQ2xhc3MtPm1fc3Rh
dGljRnVuY3Rpb25zLT5hZGQoU3RyaW5nSW1wbDo6Y3JlYXRlKHRvU3RyaW5nLmNoYXJhY3RlcnMo
KSwgdG9TdHJpbmcubGVuZ3RoKCkpLCBhZG9wdFB0cihuZXcgU3RhdGljRnVuY3Rpb25FbnRyeSgm
SlNDYWxsYmFja0Z1bmN0aW9uOjp0b1N0cmluZ0NhbGxiYWNrLCAwKSkpOwotICAgICAgICBwcm90
b3R5cGVDbGFzcy0+bV9zdGF0aWNGdW5jdGlvbnMtPmFkZChTdHJpbmdJbXBsOjpjcmVhdGUodmFs
dWVPZi5jaGFyYWN0ZXJzKCksIHZhbHVlT2YubGVuZ3RoKCkpLCBhZG9wdFB0cihuZXcgU3RhdGlj
RnVuY3Rpb25FbnRyeSgmSlNDYWxsYmFja0Z1bmN0aW9uOjp2YWx1ZU9mQ2FsbGJhY2ssIDApKSk7
Ci0gICAgfQotCiAgICAgaWYgKCFwcm90b3R5cGVDbGFzcykKICAgICAgICAgcmV0dXJuIDA7CiAK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvdGVzdGFwaS5qcwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL3Rlc3RhcGkuanMJKHJldmlz
aW9uIDExMTEzMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvdGVzdGFwaS5q
cwkod29ya2luZyBjb3B5KQpAQCAtMTU1LDcgKzE1NSw3IEBAIHNob3VsZEJlKCJ0eXBlb2YgbXlP
YmplY3QiLCAib2JqZWN0Iik7CiBzaG91bGRCZSgiTXlPYmplY3QgPyAxIDogMCIsIHRydWUpOyAv
LyB0b0Jvb2xlYW4KIHNob3VsZEJlKCIrTXlPYmplY3QiLCAxKTsgLy8gdG9OdW1iZXIKIHNob3Vs
ZEJlKCIoT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKE15T2JqZWN0KSkiLCAiW29iamVj
dCBNeU9iamVjdF0iKTsgLy8gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZwotc2hvdWxkQmUoIihN
eU9iamVjdC50b1N0cmluZygpKSIsICJNeU9iamVjdEFzU3RyaW5nIik7IC8vIHRvU3RyaW5nCitz
aG91bGRCZSgiKE15T2JqZWN0LnRvU3RyaW5nKCkpIiwgIltvYmplY3QgTXlPYmplY3RdIik7IC8v
IHRvU3RyaW5nCiBzaG91bGRCZSgiU3RyaW5nKE15T2JqZWN0KSIsICJNeU9iamVjdEFzU3RyaW5n
Iik7IC8vIHRvU3RyaW5nCiBzaG91bGRCZSgiTXlPYmplY3QgLSAwIiwgMSk7IC8vIHRvTnVtYmVy
CiBzaG91bGRCZSgiTXlPYmplY3QudmFsdWVPZigpIiwgMSk7IC8vIHZhbHVlT2YK
</data>
<flag name="review"
          id="136143"
          type_id="1"
          status="+"
          setter="oliver"
    />
          </attachment>
      

    </bug>

</bugzilla>