<?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>226495</bug_id>
          
          <creation_ts>2021-06-01 04:57:15 -0700</creation_ts>
          <short_desc>[GStreamer] clang analysis: Unlocked access in ImageDecoderGStreamer.cpp</short_desc>
          <delta_ts>2021-06-16 01:16:03 -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>WebKitGTK</component>
          <version>WebKit 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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alicia Boya García">aboya</reporter>
          <assigned_to name="Philippe Normand">pnormand</assigned_to>
          <cc>aperez</cc>
    
    <cc>bugs-noreply</cc>
    
    <cc>calvaris</cc>
    
    <cc>cgarcia</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gustavo</cc>
    
    <cc>menard</cc>
    
    <cc>pnormand</cc>
    
    <cc>vjaquez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1765572</commentid>
    <comment_count>0</comment_count>
    <who name="Alicia Boya García">aboya</who>
    <bug_when>2021-06-01 04:57:15 -0700</bug_when>
    <thetext>In ImageDecoderGStreamer.cpp, line 384:

        if (!decoder.m_messageDispatched) {
            Locker locker { decoder.m_messageLock };
            decoder.m_messageCondition.wait(decoder.m_messageLock);
        }

m_messageDispatched is guarded by m_messageLock (see ImageDecoderGStreamer.h):

    bool m_messageDispatched WTF_GUARDED_BY_LOCK(m_messageLock) { false };

Yet the value is being checked before taking the lock. I don&apos;t know how it should work but it sure looks like it shouldn&apos;t be that way given those guard preconditions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1769426</commentid>
    <comment_count>1</comment_count>
      <attachid>431335</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2021-06-14 09:26:29 -0700</bug_when>
    <thetext>Created attachment 431335
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1769781</commentid>
    <comment_count>2</comment_count>
      <attachid>431335</attachid>
    <who name="Alicia Boya García">aboya</who>
    <bug_when>2021-06-15 06:47:17 -0700</bug_when>
    <thetext>Comment on attachment 431335
Patch

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

&gt; Source/WebCore/platform/graphics/gstreamer/ImageDecoderGStreamer.cpp:380
&gt; +                if (!decoder.m_messageDispatched)

LGTM. Normally you use while() instead of if(), but it should be fine if the condition is only signalled when m_messageDispatched is set to true, rather than to any value.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1769859</commentid>
    <comment_count>3</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2021-06-15 10:27:16 -0700</bug_when>
    <thetext>(In reply to Alicia Boya García from comment #2)
&gt; Comment on attachment 431335 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=431335&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/gstreamer/ImageDecoderGStreamer.cpp:380
&gt; &gt; +                if (!decoder.m_messageDispatched)
&gt; 
&gt; LGTM. Normally you use while() instead of if(), but it should be fine if the
&gt; condition is only signalled when m_messageDispatched is set to true, rather
&gt; than to any value.

Right, I think there&apos;s no need for a while() indeed. The condition is notified at most one time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1770107</commentid>
    <comment_count>4</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-06-16 01:16:00 -0700</bug_when>
    <thetext>Committed r278925 (238856@main): &lt;https://commits.webkit.org/238856@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 431335.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>431335</attachid>
            <date>2021-06-14 09:26:29 -0700</date>
            <delta_ts>2021-06-16 01:16:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226495-20210614092627.patch</filename>
            <type>text/plain</type>
            <size>2562</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4ODIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzU4Y2EyMzBmMmZlMTZm
MjExNjNlN2VmMGIxMmY2ZGU1MjFjOWVjNC4uNWVjYmJiZjYyY2U5ZTVkNzhjZmY2ODUxM2MzZDFh
NjEzZjAzOTZlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDIxLTA2LTE0ICBQaGls
aXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1N0cmVhbWVy
XSBjbGFuZyBhbmFseXNpczogVW5sb2NrZWQgYWNjZXNzIGluIEltYWdlRGVjb2RlckdTdHJlYW1l
ci5jcHAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIy
NjQ5NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJl
bW92ZSB1bmxvY2tlZCBhY2Nlc3MgdG8gdGhlIHRoZSBtX21lc3NhZ2VEaXNwYXRjaGVkIGluc3Rh
bmNlIHZhcmlhYmxlLiBBbHNvIHRoZXJlIGlzIG5vCisgICAgICAgIG5lZWQgdG8gd2FpdCBvbiB0
aGUgY29uZGl0aW9uIGlmIHRoZSBkaXNwYXRjaGluZyBoYXBwZW5zIHN5bmNocm9ub3VzbHkgaW4g
dGhlIGN1cnJlbnQKKyAgICAgICAgdGhyZWFkLiBObyBuZWVkIHRvIG5vdGlmeSB0aGUgY29uZGl0
aW9uIGVpdGhlciBiZWZvcmUgZGlzcGF0Y2hpbmcsIHRoZSBvbmx5IGNhbGwgdG8gd2FpdCgpCisg
ICAgICAgIGlzIGFmdGVyIHRoZSBhc3luY2hyb25vdXMgZGlzcGF0Y2ggaGFzIGJlZW4gc2NoZWR1
bGVkLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2Rl
ckdTdHJlYW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXJHU3RyZWFtZXI6
OklubmVyRGVjb2Rlcjo6cHJlcGFyZVBpcGVsaW5lKToKKwogMjAyMS0wNi0xMyAgQ2hyaXMgRHVt
ZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbGF4ICJwYXJlbnQgbXVzdCBiZSBh
biBIVE1MRWxlbWVudCIgcmVzdHJpY3Rpb24gaW4gb3V0ZXJIVE1MIHNldHRlcgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0ltYWdlRGVjb2Rl
ckdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmNwcAppbmRleCBhMTYxYzQ3YzUwZGI4Mjg0N2U2ZmYy
ZDY4NTI4YmQ4Y2NjNzIyZDUxLi4zNTJlYzY2NjRjODliZjY5ZjIyMmUyZDFlYzNjZWMxNDJmYTM0
Y2M3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvSW1hZ2VEZWNvZGVyR1N0cmVhbWVyLmNwcApAQCAtMzY1LDcg
KzM2NSw2IEBAIHZvaWQgSW1hZ2VEZWNvZGVyR1N0cmVhbWVyOjpJbm5lckRlY29kZXI6OnByZXBh
cmVQaXBlbGluZSgpCiAgICAgICAgIHsKICAgICAgICAgICAgIExvY2tlciBsb2NrZXIgeyBkZWNv
ZGVyLm1fbWVzc2FnZUxvY2sgfTsKICAgICAgICAgICAgIGRlY29kZXIubV9tZXNzYWdlRGlzcGF0
Y2hlZCA9IGZhbHNlOwotICAgICAgICAgICAgZGVjb2Rlci5tX21lc3NhZ2VDb25kaXRpb24ubm90
aWZ5T25lKCk7CiAgICAgICAgIH0KICAgICAgICAgaWYgKCZkZWNvZGVyLm1fcnVuTG9vcCA9PSAm
UnVuTG9vcDo6Y3VycmVudCgpKQogICAgICAgICAgICAgZGVjb2Rlci5oYW5kbGVNZXNzYWdlKG1l
c3NhZ2UpOwpAQCAtMzc2LDEwICszNzUsMTEgQEAgdm9pZCBJbWFnZURlY29kZXJHU3RyZWFtZXI6
OklubmVyRGVjb2Rlcjo6cHJlcGFyZVBpcGVsaW5lKCkKICAgICAgICAgICAgICAgICBpZiAod2Vh
a1RoaXMpCiAgICAgICAgICAgICAgICAgICAgIHdlYWtUaGlzLT5oYW5kbGVNZXNzYWdlKHByb3Rl
Y3RlZE1lc3NhZ2UuZ2V0KCkpOwogICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0KLSAgICAgICAg
aWYgKCFkZWNvZGVyLm1fbWVzc2FnZURpc3BhdGNoZWQpIHsKLSAgICAgICAgICAgIExvY2tlciBs
b2NrZXIgeyBkZWNvZGVyLm1fbWVzc2FnZUxvY2sgfTsKLSAgICAgICAgICAgIGRlY29kZXIubV9t
ZXNzYWdlQ29uZGl0aW9uLndhaXQoZGVjb2Rlci5tX21lc3NhZ2VMb2NrKTsKKyAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICBMb2NrZXIgbG9ja2VyIHsgZGVjb2Rlci5tX21lc3NhZ2VMb2Nr
IH07CisgICAgICAgICAgICAgICAgaWYgKCFkZWNvZGVyLm1fbWVzc2FnZURpc3BhdGNoZWQpCisg
ICAgICAgICAgICAgICAgICAgIGRlY29kZXIubV9tZXNzYWdlQ29uZGl0aW9uLndhaXQoZGVjb2Rl
ci5tX21lc3NhZ2VMb2NrKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBnc3Rf
bWVzc2FnZV91bnJlZihtZXNzYWdlKTsKICAgICAgICAgcmV0dXJuIEdTVF9CVVNfRFJPUDsK
</data>

          </attachment>
      

    </bug>

</bugzilla>