<?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>161958</bug_id>
          
          <creation_ts>2016-09-14 05:27:55 -0700</creation_ts>
          <short_desc>[GTK] Avoid strstr() when checking (E)GL extensions</short_desc>
          <delta_ts>2016-10-20 05:39:00 -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 Local 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>
          
          <blocked>163333</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Emanuele Aina">emanuele.aina</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>bugs-noreply</cc>
    
    <cc>cgarcia</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1229531</commentid>
    <comment_count>0</comment_count>
    <who name="Emanuele Aina">emanuele.aina</who>
    <bug_when>2016-09-14 05:27:55 -0700</bug_when>
    <thetext>Using strstr() is not sufficient to safely check for (E)GL extensions, because it may match a substring of the extension name you&apos;re testing for. For example, if you&apos;re testing for the GL_EXT_texture extension and glGetString(GL_EXTENSIONS) returns &quot;GL_EXT_texture3D&quot; then simply using strstr() will incorrectly tell you that GL_EXT_texture is supported. (From http://www.mesa3d.org/brianp/sig97/exten.htm )

We currently use strstr() with no extra checks in GLContextEGL::createSurfacelessContext() (for EGL_KHR_surfaceless_context and EGL_KHR_surfaceless_opengl) and in WaylandCompositor::initializeEGL() (for EGL_KHR_image_base).

GLPlatformContext::supportsEGLExtension() does it correctly, but it seems to belong to a separate tree of GL context types (GLPlatformContext, GLXOffscreenContext and EGLOffscreenContext) which is are not used by the GTK+ port (which uses GLContext, GLContextGLX and GLContextEGL, usually by way of GraphicsContext3D).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1242297</commentid>
    <comment_count>1</comment_count>
      <attachid>292159</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2016-10-20 01:58:43 -0700</bug_when>
    <thetext>Created attachment 292159
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1242336</commentid>
    <comment_count>2</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2016-10-20 05:39:00 -0700</bug_when>
    <thetext>Committed r207614: &lt;http://trac.webkit.org/changeset/207614&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>292159</attachid>
            <date>2016-10-20 01:58:43 -0700</date>
            <delta_ts>2016-10-20 05:22:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>wk-check-gl-extensions.diff</filename>
            <type>text/plain</type>
            <size>5853</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAwZGE5MmY3Li5mN2ZhOGY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMjMg
QEAKIDIwMTYtMTAtMjAgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgogCisgICAgICAgIFtHVEtdIEF2b2lkIHN0cnN0cigpIHdoZW4gY2hlY2tpbmcgKEUpR0wgZXh0
ZW5zaW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTYxOTU4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
QWRkIHN0YXRpYyBtZXRob2QgR0xDb250ZXh0Ojppc0V4dGVuc2lvblN1cHBvcnRlZCgpIHRvIHBy
b3Blcmx5IHNlYXJjaCBleHRlbnN0aW9ucyBpbiB0aGUgZ2l2ZW4gZXh0ZW5zaW9uCisgICAgICAg
IGxpc3QsIGFuZCB1c2UgaXQgaW5zdGVhZCBvZiBzdHJzdHIoKS4KKworICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL0dMQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHTENvbnRleHQ6
OmlzRXh0ZW5zaW9uU3VwcG9ydGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HTENv
bnRleHQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0RUdMLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkdMQ29udGV4dEVHTDo6Y3JlYXRlU3VyZmFjZWxlc3NDb250
ZXh0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nbHgvR0xDb250ZXh0R0xYLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Omhhc1NHSVN3YXBDb250cm9sRXh0ZW5zaW9uKToKKworMjAxNi0x
MC0yMCAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CisKICAgICAg
ICAgV3JvbmcgdXNlIG9mIEVHTF9ERVBUSF9TSVpFCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTU1MzYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR0xDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dMQ29udGV4dC5jcHAKaW5kZXggY2YyNWIzZC4uNmZkYTYzMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR0xDb250ZXh0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HTENvbnRleHQuY3BwCkBAIC0xNDks
NiArMTQ5LDIyIEBAIEdMQ29udGV4dCogR0xDb250ZXh0OjpjdXJyZW50KCkKICAgICByZXR1cm4g
Y3VycmVudENvbnRleHQoKS0+Y29udGV4dCgpOwogfQogCitib29sIEdMQ29udGV4dDo6aXNFeHRl
bnNpb25TdXBwb3J0ZWQoY29uc3QgY2hhciogZXh0ZW5zaW9uTGlzdCwgY29uc3QgY2hhciogZXh0
ZW5zaW9uKQoreworICAgIGlmICghZXh0ZW5zaW9uTGlzdCkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgQVNTRVJUKGV4dGVuc2lvbik7CisgICAgaW50IGV4dGVuc2lvbkxlbiA9IHN0cmxl
bihleHRlbnNpb24pOworICAgIGNvbnN0IGNoYXIqIGV4dGVuc2lvbkxpc3RQdHIgPSBleHRlbnNp
b25MaXN0OworICAgIHdoaWxlICgoZXh0ZW5zaW9uTGlzdFB0ciA9IHN0cnN0cihleHRlbnNpb25M
aXN0UHRyLCBleHRlbnNpb24pKSkgeworICAgICAgICBpZiAoZXh0ZW5zaW9uTGlzdFB0cltleHRl
bnNpb25MZW5dID09ICcgJyB8fCBleHRlbnNpb25MaXN0UHRyW2V4dGVuc2lvbkxlbl0gPT0gJ1ww
JykKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBleHRlbnNpb25MaXN0UHRyICs9
IGV4dGVuc2lvbkxlbjsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR0xDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HTENvbnRleHQuaAppbmRleCBjODJmMDk4Li5iNDExNzBiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HTENvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HTENvbnRleHQuaApAQCAtNDgsNiArNDgsNyBAQCBwdWJsaWM6
CiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHQ+IGNyZWF0ZU9mZnNjcmVlbkNv
bnRleHQoUGxhdGZvcm1EaXNwbGF5KiA9IG51bGxwdHIpOwogICAgIHN0YXRpYyBzdGQ6OnVuaXF1
ZV9wdHI8R0xDb250ZXh0PiBjcmVhdGVTaGFyaW5nQ29udGV4dChQbGF0Zm9ybURpc3BsYXkmKTsK
ICAgICBzdGF0aWMgR0xDb250ZXh0KiBjdXJyZW50KCk7CisgICAgc3RhdGljIGJvb2wgaXNFeHRl
bnNpb25TdXBwb3J0ZWQoY29uc3QgY2hhciogZXh0ZW5zaW9uTGlzdCwgY29uc3QgY2hhciogZXh0
ZW5zaW9uKTsKIAogICAgIFBsYXRmb3JtRGlzcGxheSYgZGlzcGxheSgpIGNvbnN0IHsgcmV0dXJu
IG1fZGlzcGxheTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9lZ2wvR0xDb250ZXh0RUdMLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2VnbC9HTENvbnRleHRFR0wuY3BwCmluZGV4IGFlMjAzYjkuLjE5NDhmMmUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VnbC9HTENvbnRleHRFR0wuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VnbC9HTENvbnRleHRFR0wu
Y3BwCkBAIC0xNTEsNyArMTUxLDcgQEAgc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dEVHTD4gR0xD
b250ZXh0RUdMOjpjcmVhdGVTdXJmYWNlbGVzc0NvbnRleHQoUGxhdGZvcm1EaXMKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAKICAgICBjb25zdCBjaGFyKiBleHRlbnNpb25zID0gZWdsUXVlcnlT
dHJpbmcoZGlzcGxheSwgRUdMX0VYVEVOU0lPTlMpOwotICAgIGlmICghc3Ryc3RyKGV4dGVuc2lv
bnMsICJFR0xfS0hSX3N1cmZhY2VsZXNzX2NvbnRleHQiKSAmJiAhc3Ryc3RyKGV4dGVuc2lvbnMs
ICJFR0xfS0hSX3N1cmZhY2VsZXNzX29wZW5nbCIpKQorICAgIGlmICghR0xDb250ZXh0Ojppc0V4
dGVuc2lvblN1cHBvcnRlZChleHRlbnNpb25zLCAiRUdMX0tIUl9zdXJmYWNlbGVzc19jb250ZXh0
IikgJiYgIUdMQ29udGV4dDo6aXNFeHRlbnNpb25TdXBwb3J0ZWQoZXh0ZW5zaW9ucywgIkVHTF9L
SFJfc3VyZmFjZWxlc3Nfb3BlbmdsIikpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAg
RUdMQ29uZmlnIGNvbmZpZzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dseC9HTENvbnRleHRHTFguY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ2x4L0dMQ29udGV4dEdMWC5jcHAKaW5kZXggMGE1YjY3ZS4uZTcxYzRmMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ2x4L0dMQ29udGV4dEdMWC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ2x4L0dMQ29udGV4dEdM
WC5jcHAKQEAgLTQ1LDggKzQ1LDcgQEAgc3RhdGljIGJvb2wgaGFzU0dJU3dhcENvbnRyb2xFeHRl
bnNpb24oRGlzcGxheSogZGlzcGxheSkKICAgICAgICAgcmV0dXJuICEhZ2xYU3dhcEludGVydmFs
U0dJOwogCiAgICAgaW5pdGlhbGl6ZWQgPSB0cnVlOwotICAgIGNvbnN0IGNoYXIqIGV4dGVuc2lv
bnMgPSBnbFhRdWVyeUV4dGVuc2lvbnNTdHJpbmcoZGlzcGxheSwgMCk7Ci0gICAgaWYgKCFzdHJz
dHIoZXh0ZW5zaW9ucywgIkdMWF9TR0lfc3dhcF9jb250cm9sIikpCisgICAgaWYgKCFHTENvbnRl
eHQ6OmlzRXh0ZW5zaW9uU3VwcG9ydGVkKGdsWFF1ZXJ5RXh0ZW5zaW9uc1N0cmluZyhkaXNwbGF5
LCAwKSwgIkdMWF9TR0lfc3dhcF9jb250cm9sIikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAog
ICAgIGdsWFN3YXBJbnRlcnZhbFNHSSA9IHJlaW50ZXJwcmV0X2Nhc3Q8UEZOR0xYU1dBUElOVEVS
VkFMU0dJUFJPQz4oZ2xYR2V0UHJvY0FkZHJlc3MocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1bnNp
Z25lZCBjaGFyKj4oImdsWFN3YXBJbnRlcnZhbFNHSSIpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZDliNzAw
Ni4uZmRlZDZhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDE3IEBACiAyMDE2LTEwLTIwICBDYXJs
b3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAorICAgICAgICBbR1RLXSBB
dm9pZCBzdHJzdHIoKSB3aGVuIGNoZWNraW5nIChFKUdMIGV4dGVuc2lvbnMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MTk1OAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZSBHTENvbnRleHQ6OmlzRXh0
ZW5zaW9uU3VwcG9ydGVkKCkgaW5zdGVhZCBvZiBzdHJzdHIoKS4KKworICAgICAgICAqIFVJUHJv
Y2Vzcy9ndGsvV2F5bGFuZENvbXBvc2l0b3IuY3BwOgorICAgICAgICAoV2ViS2l0OjpXYXlsYW5k
Q29tcG9zaXRvcjo6aW5pdGlhbGl6ZUVHTCk6CisKKzIwMTYtMTAtMjAgIENhcmxvcyBHYXJjaWEg
Q2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgorCiAgICAgICAgIFdyb25nIHVzZSBvZiBFR0xf
REVQVEhfU0laRQogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTU1NTM2CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2F5
bGFuZENvbXBvc2l0b3IuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XYXlsYW5k
Q29tcG9zaXRvci5jcHAKaW5kZXggMjdmNzgwZS4uYTZmYjY2MSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XYXlsYW5kQ29tcG9zaXRvci5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XYXlsYW5kQ29tcG9zaXRvci5jcHAKQEAgLTMzNSw3ICsz
MzUsNyBAQCBib29sIFdheWxhbmRDb21wb3NpdG9yOjppbml0aWFsaXplRUdMKCkKICAgICAgICAg
ZWdsRGVzdHJveUltYWdlID0gcmVpbnRlcnByZXRfY2FzdDxQRk5FR0xERVNUUk9ZSU1BR0VLSFJQ
Uk9DPihlZ2xHZXRQcm9jQWRkcmVzcygiZWdsRGVzdHJveUltYWdlIikpOwogICAgIH0gZWxzZSB7
CiAgICAgICAgIGNvbnN0IGNoYXIqIGV4dGVuc2lvbnMgPSBlZ2xRdWVyeVN0cmluZyhQbGF0Zm9y
bURpc3BsYXk6OnNoYXJlZERpc3BsYXkoKS5lZ2xEaXNwbGF5KCksIEVHTF9FWFRFTlNJT05TKTsK
LSAgICAgICAgaWYgKHN0cnN0cihleHRlbnNpb25zLCAiRUdMX0tIUl9pbWFnZV9iYXNlIikpIHsK
KyAgICAgICAgaWYgKEdMQ29udGV4dDo6aXNFeHRlbnNpb25TdXBwb3J0ZWQoZXh0ZW5zaW9ucywg
IkVHTF9LSFJfaW1hZ2VfYmFzZSIpKSB7CiAgICAgICAgICAgICBlZ2xDcmVhdGVJbWFnZSA9IHJl
aW50ZXJwcmV0X2Nhc3Q8UEZORUdMQ1JFQVRFSU1BR0VLSFJQUk9DPihlZ2xHZXRQcm9jQWRkcmVz
cygiZWdsQ3JlYXRlSW1hZ2VLSFIiKSk7CiAgICAgICAgICAgICBlZ2xEZXN0cm95SW1hZ2UgPSBy
ZWludGVycHJldF9jYXN0PFBGTkVHTERFU1RST1lJTUFHRUtIUlBST0M+KGVnbEdldFByb2NBZGRy
ZXNzKCJlZ2xEZXN0cm95SW1hZ2VLSFIiKSk7CiAgICAgICAgIH0K
</data>
<flag name="review"
          id="315270"
          type_id="1"
          status="+"
          setter="zan"
    />
          </attachment>
      

    </bug>

</bugzilla>