On 05/30/2017 03:45 PM, Vlad Golovkin wrote: > --- > src/compiler/glsl/standalone.cpp | 17 ++++++++++------- > 1 file changed, 10 insertions(+), 7 deletions(-) > > diff --git a/src/compiler/glsl/standalone.cpp > b/src/compiler/glsl/standalone.cpp > index 52554bb92a..b9cee23642 100644 > --- a/src/compiler/glsl/standalone.cpp > +++ b/src/compiler/glsl/standalone.cpp > @@ -459,19 +459,22 @@ standalone_compile_shader(const struct > standalone_options *_options, > if (len < 6) > goto fail; > > - const char *const ext = & files[i][len - 5]; > + const char *ext = & files[i][len - 5]; > /* TODO add support to read a .shader_test */ > - if (strncmp(".vert", ext, 5) == 0 || strncmp(".glsl", ext, 5) == 0) > + if (*ext != '.') > + goto fail; > + ++ext; > + if (memcmp("vert", ext, 4) == 0 || memcmp("glsl", ext, 4) == 0)
This is not the same. If ext points at a NUL character that is, say, at the end of page, you don't get to look at the next 3 bytes, and memcmp may well do that. There is no guarantee that memcmp will not access beyond the first mismatched byte. > shader->Type = GL_VERTEX_SHADER; > - else if (strncmp(".tesc", ext, 5) == 0) > + else if (memcmp("tesc", ext, 4) == 0) > shader->Type = GL_TESS_CONTROL_SHADER; > - else if (strncmp(".tese", ext, 5) == 0) > + else if (memcmp("tese", ext, 4) == 0) > shader->Type = GL_TESS_EVALUATION_SHADER; > - else if (strncmp(".geom", ext, 5) == 0) > + else if (memcmp("geom", ext, 4) == 0) > shader->Type = GL_GEOMETRY_SHADER; > - else if (strncmp(".frag", ext, 5) == 0) > + else if (memcmp("frag", ext, 4) == 0) > shader->Type = GL_FRAGMENT_SHADER; > - else if (strncmp(".comp", ext, 5) == 0) > + else if (memcmp("comp", ext, 4) == 0) > shader->Type = GL_COMPUTE_SHADER; > else > goto fail; > _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev