<?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>217647</bug_id>
          
          <creation_ts>2020-10-12 20:24:21 -0700</creation_ts>
          <short_desc>[GStreamer] Crash in WebCore::GStreamerRegistryScanner::isAVC1CodecSupported</short_desc>
          <delta_ts>2020-10-13 05:09:19 -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>Media</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Linux</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="Michael Catanzaro">mcatanzaro</reporter>
          <assigned_to name="Philippe Normand">pnormand</assigned_to>
          <cc>bugs-noreply</cc>
    
    <cc>calvaris</cc>
    
    <cc>cgarcia</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>gustavo</cc>
    
    <cc>jer.noble</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>menard</cc>
    
    <cc>philipj</cc>
    
    <cc>pnormand</cc>
    
    <cc>sergio</cc>
    
    <cc>vjaquez</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1697157</commentid>
    <comment_count>0</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2020-10-12 20:24:21 -0700</bug_when>
    <thetext>Load https://proofing.statefarm.com/login-interceptor/login in Tech Preview, or build WebKit trunk with jhbuild, either way it will crash immediately:

#0  __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50
        set = 
            {__val = {0, 140628309954960, 93936283386752, 140620386244921, 140735321198224, 140735321198216, 140620386244912, 140628310519853, 0, 1, 140735321198272, 140735321198240, 140735321198624, 140735321198776, 0, 1}}
        pid = &lt;optimized out&gt;
        tid = &lt;optimized out&gt;
#1  0x00007fe694755855 in __GI_abort () at abort.c:79
        save_stage = 1
        act = 
          {__sigaction_handler = {sa_handler = 0x7fff7ed3d030, sa_sigaction = 0x7fff7ed3d030}, sa_mask = {__val = {140628298606868, 140626159797808, 1, 140620386245076, 139642271694853, 140735321198848, 15911148392968547328, 140626161041408, 46, 140735321199120, 140735321198736, 140628368873568, 140628298249298, 140735321199120, 140628298605424, 140620203346288}}, sa_flags = -1687491584, sa_restorer = 0x7fe697f8d860 &lt;WebCore::GStreamerRegistryScanner::singleton()::sharedInstance&gt;}
        sigs = {__val = {32, 0 &lt;repeats 15 times&gt;}}
#2  0x00007fe6971e1724 in WTF::CrashOnOverflow::crash() ()
    at DerivedSources/ForwardingHeaders/wtf/CheckedArithmetic.h:127
        components = 
              {&lt;WTF::VectorBuffer&lt;WTF::String, 0, WTF::FastMalloc&gt;&gt; = {&lt;WTF::VectorBufferBase&lt;WTF::String, WTF::FastMalloc&gt;&gt; = {m_buffer = 0x7fe4b35a3780, m_capacity = 16, m_size = 1}, &lt;No data fields&gt;}, &lt;No data fields&gt;}
        spsAsInteger = &lt;optimized out&gt;
        sps = &quot;\177\000&quot;
        profile = &lt;optimized out&gt;
        level = &lt;optimized out&gt;
        levelAsStringFallback = &quot;~\377&quot;
        __FUNCTION__ = &quot;isAVC1CodecSupported&quot;
        checkH264Caps = {__this = 0x0, __shouldCheckForHardwareUse = @0x100003600, __codec = @0x5}
#3  WTF::CrashOnOverflow::overflowed() () at DerivedSources/ForwardingHeaders/wtf/CheckedArithmetic.h:120
        components = 
              {&lt;WTF::VectorBuffer&lt;WTF::String, 0, WTF::FastMalloc&gt;&gt; = {&lt;WTF::VectorBufferBase&lt;WTF::String, WTF::FastMalloc&gt;&gt; = {m_buffer = 0x7fe4b35a3780, m_capacity = 16, m_size = 1}, &lt;No data fields&gt;}, &lt;No data fields&gt;}
        spsAsInteger = &lt;optimized out&gt;
        sps = &quot;\177\000&quot;
        profile = &lt;optimized out&gt;
        level = &lt;optimized out&gt;
        levelAsStringFallback = &quot;~\377&quot;
        __FUNCTION__ = &quot;isAVC1CodecSupported&quot;
        checkH264Caps = {__this = 0x0, __shouldCheckForHardwareUse = @0x100003600, __codec = @0x5}
#4  WTF::Vector&lt;WTF::String, 0ul, WTF::CrashOnOverflow, 16ul, WTF::FastMalloc&gt;::at(unsigned long)
    (i=&lt;optimized out&gt;, this=&lt;optimized out&gt;) at DerivedSources/ForwardingHeaders/wtf/Vector.h:701
        components = 
              {&lt;WTF::VectorBuffer&lt;WTF::String, 0, WTF::FastMalloc&gt;&gt; = {&lt;WTF::VectorBufferBase&lt;WTF::String, WTF::FastMalloc&gt;&gt; = {m_buffer = 0x7fe4b35a3780, m_capacity = 16, m_size = 1}, &lt;No data fields&gt;}, &lt;No data fields&gt;}
        spsAsInteger = &lt;optimized out&gt;
        sps = &quot;\177\000&quot;
        profile = &lt;optimized out&gt;
        level = &lt;optimized out&gt;
        levelAsStringFallback = &quot;~\377&quot;
        __FUNCTION__ = &quot;isAVC1CodecSupported&quot;
        checkH264Caps = {__this = 0x0, __shouldCheckForHardwareUse = @0x100003600, __codec = @0x5}
#5  WTF::Vector&lt;WTF::String, 0ul, WTF::CrashOnOverflow, 16ul, WTF::FastMalloc&gt;::operator[](unsigned long)
    (i=&lt;optimized out&gt;, this=&lt;optimized out&gt;) at DerivedSources/ForwardingHeaders/wtf/Vector.h:721
        components = 
              {&lt;WTF::VectorBuffer&lt;WTF::String, 0, WTF::FastMalloc&gt;&gt; = {&lt;WTF::VectorBufferBase&lt;WTF::String, WTF::FastMa--Type &lt;RET&gt; for more, q to quit, c to continue without paging--c
lloc&gt;&gt; = {m_buffer = 0x7fe4b35a3780, m_capacity = 16, m_size = 1}, &lt;No data fields&gt;}, &lt;No data fields&gt;}
        spsAsInteger = &lt;optimized out&gt;
        sps = &quot;\177\000&quot;
        profile = &lt;optimized out&gt;
        level = &lt;optimized out&gt;
        levelAsStringFallback = &quot;~\377&quot;
        __FUNCTION__ = &quot;isAVC1CodecSupported&quot;
        checkH264Caps = {__this = 0x0, __shouldCheckForHardwareUse = @0x100003600, __codec = @0x5}
#6  WebCore::GStreamerRegistryScanner::isAVC1CodecSupported(WTF::String const&amp;, bool) const (this=this@entry=0x7fe697f8d860 &lt;WebCore::GStreamerRegistryScanner::singleton()::sharedInstance&gt;, codec=..., shouldCheckForHardwareUse=&lt;optimized out&gt;, shouldCheckForHardwareUse@entry=false) at ../Source/WebCore/platform/graphics/gstreamer/GStreamerRegistryScanner.cpp:366
        components = {&lt;WTF::VectorBuffer&lt;WTF::String, 0, WTF::FastMalloc&gt;&gt; = {&lt;WTF::VectorBufferBase&lt;WTF::String, WTF::FastMalloc&gt;&gt; = {m_buffer = 0x7fe4b35a3780, m_capacity = 16, m_size = 1}, &lt;No data fields&gt;}, &lt;No data fields&gt;}
        spsAsInteger = &lt;optimized out&gt;
        sps = &quot;\177\000&quot;
        profile = &lt;optimized out&gt;
        level = &lt;optimized out&gt;
        levelAsStringFallback = &quot;~\377&quot;
        __FUNCTION__ = &quot;isAVC1CodecSupported&quot;
        checkH264Caps = {__this = 0x0, __shouldCheckForHardwareUse = @0x100003600, __codec = @0x5}
#7  0x00007fe6971e1a29 in WebCore::GStreamerRegistryScanner::isCodecSupported(WTF::String, bool) const (this=this@entry=0x7fe697f8d860 &lt;WebCore::GStreamerRegistryScanner::singleton()::sharedInstance&gt;, codec=..., shouldCheckForHardwareUse=shouldCheckForHardwareUse@entry=false) at ../Source/WebCore/platform/graphics/gstreamer/GStreamerRegistryScanner.cpp:305
        supported = false
        __FUNCTION__ = &quot;isCodecSupported&quot;
#8  0x00007fe6971e2049 in WebCore::GStreamerRegistryScanner::isContentTypeSupported(WebCore::ContentType const&amp;, WTF::Vector&lt;WebCore::ContentType, 0ul, WTF::CrashOnOverflow, 16ul, WTF::FastMalloc&gt; const&amp;) const (this=0x7fe697f8d860 &lt;WebCore::GStreamerRegistryScanner::singleton()::sharedInstance&gt;, contentType=..., contentTypesRequiringHardwareSupport=...) at DerivedSources/ForwardingHeaders/wtf/text/StringImpl.h:1107
        codec = @0x7fe4b35a3700: {static MaxLength = 2147483647, m_impl = {static isRefPtr = &lt;optimized out&gt;, m_ptr = 0x7fe4bc2b99c0}}
        __for_range = @0x7fff7ed3d1f0: {&lt;WTF::VectorBuffer&lt;WTF::String, 0, WTF::FastMalloc&gt;&gt; = {&lt;WTF::VectorBufferBase&lt;WTF::String, WTF::FastMalloc&gt;&gt; = {m_buffer = 0x7fe4b35a3700, m_capacity = 16, m_size = 1}, &lt;No data fields&gt;}, &lt;No data fields&gt;}
        __for_begin = 0x7fe4b35a3700
        __for_end = 0x7fe4b35a3708
        containerType = @0x7fff7ed3d1c8: {static MaxLength = 2147483647, m_impl = {static isRefPtr = &lt;optimized out&gt;, m_ptr = 0x7fe4bc2b9980}}
        codecs = @0x7fff7ed3d1f0: {&lt;WTF::VectorBuffer&lt;WTF::String, 0, WTF::FastMalloc&gt;&gt; = {&lt;WTF::VectorBufferBase&lt;WTF::String, WTF::FastMalloc&gt;&gt; = {m_buffer = 0x7fe4b35a3700, m_capacity = 16, m_size = 1}, &lt;No data fields&gt;}, &lt;No data fields&gt;}
#9  0x00007fe696ffc91c in WebCore::MediaPlayerPrivateGStreamer::supportsType(WebCore::MediaEngineSupportParameters const&amp;) (parameters=...) at ../Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:2693
        result = &lt;optimized out&gt;
        gstRegistryScanner = &lt;optimized out&gt;
        finalResult = &lt;optimized out&gt;
#10 WebCore::MediaPlayerPrivateGStreamer::supportsType(WebCore::MediaEngineSupportParameters const&amp;) (parameters=...) at ../Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:2674
#11 0x00007fe6969a241b in WebCore::bestMediaEngineForSupportParameters(WebCore::MediaEngineSupportParameters const&amp;, WebCore::MediaPlayerFactory const*) (parameters=..., current=&lt;optimized out&gt;, current@entry=0x0) at /usr/include/c++/10.2.0/bits/unique_ptr.h:421
        engineSupport = &lt;optimized out&gt;
        engine = &lt;optimized out&gt;
        __for_range = &lt;optimized out&gt;
        __for_begin = &lt;optimized out&gt;
        __for_end = 0x7fe5e44fda90
        foundEngine = &lt;optimized out&gt;
        supported = &lt;optimized out&gt;
#12 0x00007fe6969a5d01 in WebCore::MediaPlayer::supportsType(WebCore::MediaEngineSupportParameters const&amp;) (parameters=...) at ../Source/WebCore/platform/graphics/MediaPlayer.cpp:993
        engine = &lt;optimized out&gt;
#13 0x00007fe6964b51c6 in WebCore::HTMLMediaElement::canPlayType(WTF::String const&amp;) const (this=this@entry=0x7fe5d470d830, mimeType=...) at ../Source/WebCore/html/HTMLMediaElement.cpp:1064
        parameters = {type = {m_type = {static MaxLength = 2147483647, m_impl = {static isRefPtr = &lt;optimized out&gt;, m_ptr = 0x7fe5d44ed7b0}}}, url = {m_string = {static MaxLength = 2147483647, m_impl = {static isRefPtr = &lt;optimized out&gt;, m_ptr = 0x0}}, m_isValid = 0, m_protocolIsInHTTPFamily = 0, m_cannotBeABaseURL = 0, m_portLength = 0, static maxPortLength = 7, static maxSchemeLength = 67108863, m_schemeEnd = 0, m_userStart = 0, m_userEnd = 0, m_passwordEnd = 0, m_hostEnd = 0, m_pathAfterLastSlash = 0, m_pathEnd = 0, m_queryEnd = 0}, isMediaSource = false, isMediaStream = false, contentTypesRequiringHardwareSupport = {&lt;WTF::VectorBuffer&lt;WebCore::ContentType, 0, WTF::FastMalloc&gt;&gt; = {&lt;WTF::VectorBufferBase&lt;WebCore::ContentType, WTF::FastMalloc&gt;&gt; = {m_buffer = 0x0, m_capacity = 0, m_size = 0}, &lt;No data fields&gt;}, &lt;No data fields&gt;}}
        contentType = {m_type = {static MaxLength = 2147483647, m_impl = {static isRefPtr = &lt;optimized out&gt;, m_ptr = 0x7fe5d44ed7b0}}}
        support = &lt;optimized out&gt;
        canPlay = {static MaxLength = 2147483647, m_impl = {static isRefPtr = &lt;optimized out&gt;, m_ptr = 0x7fe5240d4520}}
        __func__ = &quot;canPlayType&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1697163</commentid>
    <comment_count>1</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2020-10-12 20:43:41 -0700</bug_when>
    <thetext>Added some debug:

isAVC1CodecSupported: this=0x7f7e822eee00 1: codec=avc1.42AC23 hardware=0
isAVC1CodecSupported: sps[0]=66 sps[1]=172 sps[2]=35
isAVC1CodecSupported: profile=baseline level=(null)
isAVC1CodecSupported: 2
isAVC1CodecSupported: this=0x7f7e822eee00 1: codec=avc1.42E034 hardware=0
isAVC1CodecSupported: sps[0]=66 sps[1]=224 sps[2]=52
isAVC1CodecSupported: profile=constrained-baseline level=5.2
isAVC1CodecSupported: 2
isAVC1CodecSupported: 3
isAVC1CodecSupported: 4
isAVC1CodecSupported: this=0x7f7e822eee00 1: codec=avc1.42E034 hardware=0
isAVC1CodecSupported: sps[0]=66 sps[1]=224 sps[2]=52
isAVC1CodecSupported: profile=constrained-baseline level=5.2
isAVC1CodecSupported: 2
isAVC1CodecSupported: 3
isAVC1CodecSupported: 4
isAVC1CodecSupported: this=0x7f7e822eee00 1: codec=avc1.42E01E hardware=0
isAVC1CodecSupported: sps[0]=66 sps[1]=224 sps[2]=30
isAVC1CodecSupported: profile=constrained-baseline level=3
isAVC1CodecSupported: 2
isAVC1CodecSupported: 3
isAVC1CodecSupported: 4
isAVC1CodecSupported: this=0x7f7e822eee00 1: codec=avc1.42E01E hardware=0
isAVC1CodecSupported: sps[0]=66 sps[1]=224 sps[2]=30
isAVC1CodecSupported: profile=constrained-baseline level=3
isAVC1CodecSupported: 2
isAVC1CodecSupported: 3
isAVC1CodecSupported: 4
isAVC1CodecSupported: this=0x7f7e822eee00 1: codec=avc1.42E009 hardware=0
isAVC1CodecSupported: sps[0]=66 sps[1]=224 sps[2]=9
isAVC1CodecSupported: profile=constrained-baseline level=1b
isAVC1CodecSupported: 2
isAVC1CodecSupported: 3
isAVC1CodecSupported: 4
isAVC1CodecSupported: this=0x7f7e822eee00 1: codec=avc1.42E009 hardware=0
isAVC1CodecSupported: sps[0]=66 sps[1]=224 sps[2]=9
isAVC1CodecSupported: profile=constrained-baseline level=1b
isAVC1CodecSupported: 2
isAVC1CodecSupported: 3
isAVC1CodecSupported: 4
isAVC1CodecSupported: this=0x7f7e822eee00 1: codec=avc1.123456 hardware=0
isAVC1CodecSupported: sps[0]=18 sps[1]=52 sps[2]=86
isAVC1CodecSupported: profile=(null) level=(null)
isAVC1CodecSupported: 2
isAVC1CodecSupported: this=0x7f7e822eee00 1: codec=avc1.42F01E hardware=0
isAVC1CodecSupported: sps[0]=66 sps[1]=240 sps[2]=30
isAVC1CodecSupported: profile=constrained-baseline level=3
isAVC1CodecSupported: 2
isAVC1CodecSupported: 3
isAVC1CodecSupported: 4
isAVC1CodecSupported: this=0x7f7e822eee00 1: codec=avc1.42F01E hardware=0
isAVC1CodecSupported: sps[0]=66 sps[1]=240 sps[2]=30
isAVC1CodecSupported: profile=constrained-baseline level=3
isAVC1CodecSupported: 2
isAVC1CodecSupported: 3
isAVC1CodecSupported: 4
isAVC1CodecSupported: this=0x7f7e822eee00 1: codec=avc1.4D001E hardware=0
isAVC1CodecSupported: sps[0]=77 sps[1]=0 sps[2]=30
isAVC1CodecSupported: profile=main level=3
isAVC1CodecSupported: 2
isAVC1CodecSupported: 3
isAVC1CodecSupported: 4
isAVC1CodecSupported: this=0x7f7e822eee00 1: codec=avc1.4D001E hardware=0
isAVC1CodecSupported: sps[0]=77 sps[1]=0 sps[2]=30
isAVC1CodecSupported: profile=main level=3
isAVC1CodecSupported: 2
isAVC1CodecSupported: 3
isAVC1CodecSupported: 4
isAVC1CodecSupported: this=0x7f7e822eee00 1: codec=avc1x hardware=0
1   0x7f7e7d7afbd9 WTFCrash
2   0x7f7e814b2255 WebCore::GStreamerRegistryScanner::isAVC1CodecSupported(WTF::String const&amp;, bool) const
3   0x7f7e814b24b9 WebCore::GStreamerRegistryScanner::isCodecSupported(WTF::String, bool) const
4   0x7f7e814b2ab9 WebCore::GStreamerRegistryScanner::isContentTypeSupported(WebCore::ContentType const&amp;, WTF::Vector&lt;WebCore::ContentType, 0ul, WTF::CrashOnOverflow, 16ul, WTF::FastMalloc&gt; const&amp;) const
5   0x7f7e812df7d4 WebCore::MediaPlayerPrivateGStreamer::supportsType(WebCore::MediaEngineSupportParameters const&amp;)
6   0x7f7e80cf510b /home/mcatanzaro/Projects/GNOME/install/lib/libwebkit2gtk-4.0.so.37(+0x2eb010b) [0x7f7e80cf510b]
7   0x7f7e80cf6fc4 WebCore::MediaPlayer::supportsType(WebCore::MediaEngineSupportParameters const&amp;)
8   0x7f7e808637f2 WebCore::HTMLMediaElement::canPlayType(WTF::String const&amp;) const
9   0x7f7e7fd8aeee WebCore::jsHTMLMediaElementPrototypeFunctionCanPlayType(JSC::JSGlobalObject*, JSC::CallFrame*)
10  0x7f7e280ff178 [0x7f7e280ff178]

So it crashes when there is no period in the codec string (accessing components[1] off the end of the array).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1697207</commentid>
    <comment_count>2</comment_count>
      <attachid>411204</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2020-10-13 02:23:39 -0700</bug_when>
    <thetext>Created attachment 411204
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1697217</commentid>
    <comment_count>3</comment_count>
      <attachid>411204</attachid>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2020-10-13 03:43:30 -0700</bug_when>
    <thetext>Comment on attachment 411204
Patch

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

&gt; Source/WebCore/platform/graphics/gstreamer/GStreamerRegistryScanner.cpp:367
&gt; +    auto checkH264Caps = [&amp;](const char* capsString) {

Nit: I would do this a private method instead of a lambda, even if this was already like this before.

&gt; Source/WebCore/platform/graphics/gstreamer/GStreamerRegistryScanner.cpp:370
&gt; +        bool supported = false;
&gt; +        auto lookupResult = hasElementForMediaType(m_videoDecoderFactories, capsString, true);
&gt; +        supported = lookupResult;

Nit: I think one line would be enough, wouldn&apos;t it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1697227</commentid>
    <comment_count>4</comment_count>
      <attachid>411204</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2020-10-13 04:53:21 -0700</bug_when>
    <thetext>Comment on attachment 411204
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/gstreamer/GStreamerRegistryScanner.cpp:370
&gt;&gt; +        supported = lookupResult;
&gt; 
&gt; Nit: I think one line would be enough, wouldn&apos;t it?

No because lookupResult is used below.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1697228</commentid>
    <comment_count>5</comment_count>
      <attachid>411204</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2020-10-13 05:03:57 -0700</bug_when>
    <thetext>Comment on attachment 411204
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/gstreamer/GStreamerRegistryScanner.cpp:367
&gt;&gt; +    auto checkH264Caps = [&amp;](const char* capsString) {
&gt; 
&gt; Nit: I would do this a private method instead of a lambda, even if this was already like this before.

I find more convenient to use a lambda here, instead of adding a new method which would need 3 arguments :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1697229</commentid>
    <comment_count>6</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2020-10-13 05:08:51 -0700</bug_when>
    <thetext>Committed r268392: &lt;https://trac.webkit.org/changeset/268392&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1697230</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-10-13 05:09:19 -0700</bug_when>
    <thetext>&lt;rdar://problem/70248585&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>411204</attachid>
            <date>2020-10-13 02:23:39 -0700</date>
            <delta_ts>2020-10-13 03:43:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217647-20201013022338.patch</filename>
            <type>text/plain</type>
            <size>6000</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY4Mzg4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWI2ZGMyNTExMWFmYjdh
ZTlhNDI0MDFmYTU4MTg1NjFkYzMyOTI1MS4uMWU2YjE4YjkwZjRlNGZjNDEzNzNmYmI0ZTFjMWQ5
ZTdiYmU5MWVkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDIwLTEwLTEzICBQaGls
aXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1N0cmVhbWVy
XSBDcmFzaCBpbiBXZWJDb3JlOjpHU3RyZWFtZXJSZWdpc3RyeVNjYW5uZXI6OmlzQVZDMUNvZGVj
U3VwcG9ydGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMTc2NDcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBUaGUgcmVnaXN0cnkgc2Nhbm5lciB3YXMgYXNzdW1pbmcgdGhlIGF2YzEgY29kZWMgZmllbGQg
aXMgYWx3YXlzIG9mIHRoZSBmb3JtCisgICAgICAgIGF2YzEuY29kZWNwcm9maWxlLCB3aGljaCBp
cyB3cm9uZy4KKworICAgICAgICBDb3ZlcmVkIGJ5IHRlc3Q6IG1lZGlhL21lZGlhLWNhbi1wbGF5
LW1wZWc0LXZpZGVvLmh0bWwKKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9HU3RyZWFtZXJSZWdpc3RyeVNjYW5uZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R1N0cmVh
bWVyUmVnaXN0cnlTY2FubmVyOjppc0FWQzFDb2RlY1N1cHBvcnRlZCBjb25zdCk6IENoZWNrIGZv
ciAnLicgcHJlc2VuY2UgYW5kCisgICAgICAgIGZhbGxiYWNrIHRvIHVuY29uc3RyYWluZWQgY2hl
Y2sgaWYgbm8gcHJvZmlsZSBvciBsZXZlbCBpbmZvcm1hdGlvbiB3YXMgZXh0cmFjdGVkLgorCiAy
MDIwLTEwLTEzICBLaW1tbyBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CiAKICAgICAg
ICAgQ29jb2E6IE1ha2UgV2ViR0xMYXllciBub3QgZGVwZW5kZW50IG9uICBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL0dTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyLmNwcApp
bmRleCA1N2NjMTQ3Y2RmZmJkZjlhZjQ1NGRlZmZmY2VhZDRmOTFmNWE5YTA1Li5kM2QxZTFmMWY3
NmY3YWZkN2JkYzhiYzIzYTA5ZTZkODE5ZmNkZjhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVh
bWVyUmVnaXN0cnlTY2FubmVyLmNwcApAQCAtMzY0LDYgKzM2NCwyMSBAQCBib29sIEdTdHJlYW1l
clJlZ2lzdHJ5U2Nhbm5lcjo6YXJlQWxsQ29kZWNzU3VwcG9ydGVkKGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiBjb2RlYwogCiBib29sIEdTdHJlYW1lclJlZ2lzdHJ5U2Nhbm5lcjo6aXNBVkMxQ29kZWNT
dXBwb3J0ZWQoY29uc3QgU3RyaW5nJiBjb2RlYywgYm9vbCBzaG91bGRDaGVja0ZvckhhcmR3YXJl
VXNlKSBjb25zdAogeworICAgIGF1dG8gY2hlY2tIMjY0Q2FwcyA9IFsmXShjb25zdCBjaGFyKiBj
YXBzU3RyaW5nKSB7CisgICAgICAgIGJvb2wgc3VwcG9ydGVkID0gZmFsc2U7CisgICAgICAgIGF1
dG8gbG9va3VwUmVzdWx0ID0gaGFzRWxlbWVudEZvck1lZGlhVHlwZShtX3ZpZGVvRGVjb2RlckZh
Y3RvcmllcywgY2Fwc1N0cmluZywgdHJ1ZSk7CisgICAgICAgIHN1cHBvcnRlZCA9IGxvb2t1cFJl
c3VsdDsKKyAgICAgICAgaWYgKHNob3VsZENoZWNrRm9ySGFyZHdhcmVVc2UpCisgICAgICAgICAg
ICBzdXBwb3J0ZWQgPSBsb29rdXBSZXN1bHQuaXNVc2luZ0hhcmR3YXJlOworICAgICAgICBHU1Rf
REVCVUcoIiVzIGRlY29kaW5nIHN1cHBvcnRlZCBmb3IgY29kZWMgJXM6ICVzIiwgc2hvdWxkQ2hl
Y2tGb3JIYXJkd2FyZVVzZSA/ICJIYXJkd2FyZSIgOiAiU29mdHdhcmUiLCBjb2RlYy51dGY4KCku
ZGF0YSgpLCBib29sRm9yUHJpbnRpbmcoc3VwcG9ydGVkKSk7CisgICAgICAgIHJldHVybiBzdXBw
b3J0ZWQ7CisgICAgfTsKKworICAgIGlmIChjb2RlYy5maW5kKCcuJykgPT0gbm90Rm91bmQpIHsK
KyAgICAgICAgR1NUX0RFQlVHKCJDb2RlYyBoYXMgbm8gcHJvZmlsZS9sZXZlbCwgZmFsbGluZyBi
YWNrIHRvIHVuY29uc3RyYWluZWQgY2FwcyIpOworICAgICAgICByZXR1cm4gY2hlY2tIMjY0Q2Fw
cygidmlkZW8veC1oMjY0Iik7CisgICAgfQorCiAgICAgYXV0byBjb21wb25lbnRzID0gY29kZWMu
c3BsaXQoJy4nKTsKICAgICBsb25nIGludCBzcHNBc0ludGVnZXIgPSBzdHJ0b2woY29tcG9uZW50
c1sxXS51dGY4KCkuZGF0YSgpLCBudWxscHRyLCAxNik7CiAgICAgdWludDhfdCBzcHNbM107CkBA
IC0zOTAsMTYgKzQwNSw2IEBAIGJvb2wgR1N0cmVhbWVyUmVnaXN0cnlTY2FubmVyOjppc0FWQzFD
b2RlY1N1cHBvcnRlZChjb25zdCBTdHJpbmcmIGNvZGVjLCBib29sIHNoCiAKICAgICBHU1RfREVC
VUcoIkNvZGVjICVzIHRyYW5zbGF0ZXMgdG8gSC4yNjQgcHJvZmlsZSAlcyBhbmQgbGV2ZWwgJXMi
LCBjb2RlYy51dGY4KCkuZGF0YSgpLCBwcm9maWxlLCBsZXZlbCk7CiAKLSAgICBhdXRvIGNoZWNr
SDI2NENhcHMgPSBbJl0oY29uc3QgY2hhciogY2Fwc1N0cmluZykgewotICAgICAgICBib29sIHN1
cHBvcnRlZCA9IGZhbHNlOwotICAgICAgICBhdXRvIGxvb2t1cFJlc3VsdCA9IGhhc0VsZW1lbnRG
b3JNZWRpYVR5cGUobV92aWRlb0RlY29kZXJGYWN0b3JpZXMsIGNhcHNTdHJpbmcsIHRydWUpOwot
ICAgICAgICBzdXBwb3J0ZWQgPSBsb29rdXBSZXN1bHQ7Ci0gICAgICAgIGlmIChzaG91bGRDaGVj
a0ZvckhhcmR3YXJlVXNlKQotICAgICAgICAgICAgc3VwcG9ydGVkID0gbG9va3VwUmVzdWx0Lmlz
VXNpbmdIYXJkd2FyZTsKLSAgICAgICAgR1NUX0RFQlVHKCIlcyBkZWNvZGluZyBzdXBwb3J0ZWQg
Zm9yIGNvZGVjICVzOiAlcyIsIHNob3VsZENoZWNrRm9ySGFyZHdhcmVVc2UgPyAiSGFyZHdhcmUi
IDogIlNvZnR3YXJlIiwgY29kZWMudXRmOCgpLmRhdGEoKSwgYm9vbEZvclByaW50aW5nKHN1cHBv
cnRlZCkpOwotICAgICAgICByZXR1cm4gc3VwcG9ydGVkOwotICAgIH07Ci0KICAgICBpZiAoY29u
c3QgY2hhciogbWF4VmlkZW9SZXNvbHV0aW9uID0gZ19nZXRlbnYoIldFQktJVF9HU1RfTUFYX0FW
QzFfUkVTT0xVVElPTiIpKSB7CiAgICAgICAgIHVpbnQ4X3QgbGV2ZWxBc0ludGVnZXIgPSBnc3Rf
Y29kZWNfdXRpbHNfaDI2NF9nZXRfbGV2ZWxfaWRjKGxldmVsKTsKICAgICAgICAgR1NUX0RFQlVH
KCJNYXhpbXVtIHZpZGVvIHJlc29sdXRpb24gcmVxdWVzdGVkOiAlcywgc3VwcGxpZWQgY29kZWMg
bGV2ZWwgSURDOiAldSIsIG1heFZpZGVvUmVzb2x1dGlvbiwgbGV2ZWxBc0ludGVnZXIpOwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmlu
ZGV4IDliMTBmNDgxN2RhOWMzYWY3YjFkOGRjOWJhMGNiNmM4OTIwMjU2ZDkuLjYzNmJkNTE5ZGEy
NjQxNzQ1NzUyZmQ5ZWM3ODViYzIyODg2ZDJiMzkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0No
YW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAy
MC0xMC0xMyAgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+CisKKyAgICAg
ICAgW0dTdHJlYW1lcl0gQ3Jhc2ggaW4gV2ViQ29yZTo6R1N0cmVhbWVyUmVnaXN0cnlTY2FubmVy
Ojppc0FWQzFDb2RlY1N1cHBvcnRlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjE3NjQ3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBtZWRpYS9tZWRpYS1jYW4tcGxheS1tcGVnNC12aWRlby1leHBlY3Rl
ZC50eHQ6CisgICAgICAgICogbWVkaWEvbWVkaWEtY2FuLXBsYXktbXBlZzQtdmlkZW8uaHRtbDog
QWRkIHRlc3QgZm9yICJhdmMxIiBjb2RlYy4KKwogMjAyMC0xMC0xMiAgWmFsYW4gQnVqdGFzICA8
emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04gKHIyNjgyOTQpOiBbIGlPUyB3
azIgXSBpbXBvcnRlZC9ibGluay9mYXN0L2Nzcy96b29tZWQtaW50cmluc2ljLXdpZHRoLmh0bWwg
aXMgYSBjb25zdGFudCBpbWFnZSBmYWlsdXJlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9tZWRp
YS9tZWRpYS1jYW4tcGxheS1tcGVnNC12aWRlby1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9t
ZWRpYS9tZWRpYS1jYW4tcGxheS1tcGVnNC12aWRlby1leHBlY3RlZC50eHQKaW5kZXggZjRmZTJj
NjIxYzE1ZWU0YmQ4MWZmOTUxZTZlYmE3YTNmNGM3ZjMwYS4uNWU2MjQ3NDU3ZjZjZGExOWFkZWUz
NjZhMmRmNzZhZDZjZWE2ZTBiYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvbWVkaWEvbWVkaWEt
Y2FuLXBsYXktbXBlZzQtdmlkZW8tZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL21lZGlh
L21lZGlhLWNhbi1wbGF5LW1wZWc0LXZpZGVvLWV4cGVjdGVkLnR4dApAQCAtNSw2ICs1LDcgQEAg
VGhlc2UgdGVzdHMgbWF5IGJlIGV4cGVjdGVkIHRvIGZhaWwgaWYgdGhlIFdlYktpdCBwb3J0IGRv
ZXMgbm90IHN1cHBvcnQgdGhlIGZvcm0KIAogRVhQRUNURUQgKHZpZGVvLmNhblBsYXlUeXBlKCd2
aWRlby94LW00dicpID09ICdtYXliZScpIE9LCiBFWFBFQ1RFRCAodmlkZW8uY2FuUGxheVR5cGUo
J3ZpZGVvL21wNCcpID09ICdtYXliZScpIE9LCitFWFBFQ1RFRCAodmlkZW8uY2FuUGxheVR5cGUo
J3ZpZGVvL21wNDsgQ29kZWNzPSJhdmMxIicpID09ICdwcm9iYWJseScpIE9LCiBFWFBFQ1RFRCAo
dmlkZW8uY2FuUGxheVR5cGUoJ3ZpZGVvL21wNDsgQ29kZWNzPSJhdmMxLjRENDAwQyInKSA9PSAn
cHJvYmFibHknKSBPSwogRVhQRUNURUQgKHZpZGVvLmNhblBsYXlUeXBlKCcgVmlkZW8vTVA0IDsg
Q09ERUNTPSJtcDR2LjIwLjgsIG1wNGEuNDAuMiInKSA9PSAncHJvYmFibHknKSBPSwogRU5EIE9G
IFRFU1QKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL21lZGlhL21lZGlhLWNhbi1wbGF5LW1wZWc0
LXZpZGVvLmh0bWwgYi9MYXlvdXRUZXN0cy9tZWRpYS9tZWRpYS1jYW4tcGxheS1tcGVnNC12aWRl
by5odG1sCmluZGV4IGJkMTNhNjRlZGU3ZmY4YzAzYWVhZjg0NWFlNjQ1YjY1ZDc0OGQ0MDAuLjNk
YzZjODg0MzMyZjY3YjYyOTdlNGRjMGI3MTdjNjkzYWZmNDM3YTIgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL21lZGlhL21lZGlhLWNhbi1wbGF5LW1wZWc0LXZpZGVvLmh0bWwKKysrIGIvTGF5b3V0
VGVzdHMvbWVkaWEvbWVkaWEtY2FuLXBsYXktbXBlZzQtdmlkZW8uaHRtbApAQCAtOSw2ICs5LDcg
QEAKIAogICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgidmlkZW8uY2FuUGxheVR5cGUoJ3Zp
ZGVvL3gtbTR2JykiLCAibWF5YmUiKTsKICAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInZp
ZGVvLmNhblBsYXlUeXBlKCd2aWRlby9tcDQnKSIsICJtYXliZSIpOworICAgICAgICAgICAgICAg
IHRlc3RFeHBlY3RlZCgidmlkZW8uY2FuUGxheVR5cGUoJ3ZpZGVvL21wNDsgQ29kZWNzPVwiYXZj
MVwiJykiLCAicHJvYmFibHkiKTsKICAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInZpZGVv
LmNhblBsYXlUeXBlKCd2aWRlby9tcDQ7IENvZGVjcz1cImF2YzEuNEQ0MDBDXCInKSIsICJwcm9i
YWJseSIpOwogICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgidmlkZW8uY2FuUGxheVR5cGUo
JyAgICAgICAgVmlkZW8vTVA0IDsgQ09ERUNTPVwibXA0di4yMC44LCBtcDRhLjQwLjJcIicpIiwg
InByb2JhYmx5Iik7CiAK
</data>
<flag name="review"
          id="427346"
          type_id="1"
          status="+"
          setter="calvaris"
    />
          </attachment>
      

    </bug>

</bugzilla>