diff options
author | Gert Wollny <gert.wollny@collabora.com> | 2022-11-09 09:40:25 +0100 |
---|---|---|
committer | Marge Bot <emma+marge@anholt.net> | 2022-11-10 07:03:02 +0000 |
commit | 0a4e3bc737314e75748dfed8f97e670c2820cd5e (patch) | |
tree | 5194b0c814f0dab34a89b19b8180618eb03c9baa | |
parent | 65c916fe22fafbed401d3eefb0abc2f44c2c163a (diff) | |
download | virglrenderer-0a4e3bc737314e75748dfed8f97e670c2820cd5e.tar.gz |
shader: Use open coded string copy to avoid overflow
Since we have to remove the swizzle part of the dest
using an open coded loop should not more expensive then
doing strcpy and strchr afterwards.
Fixes Coverity ID 1527193: "Copy into fixed size buffer"
Signed-off-by: Gert Wollny <gert.wollny@collabora.com>
Part-of: <https://gitlab.freedesktop.org/virgl/virglrenderer/-/merge_requests/975>
-rw-r--r-- | src/vrend_shader.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/src/vrend_shader.c b/src/vrend_shader.c index 08995dd9..13569fda 100644 --- a/src/vrend_shader.c +++ b/src/vrend_shader.c @@ -3855,11 +3855,13 @@ translate_load(const struct dump_ctx *ctx, set_memory_qualifier(ssbo_memory_qualifier, ctx->ssbo_used_mask, inst, inst->Src[0].Register.Index, inst->Src[0].Register.Indirect); - strcpy(mydst, dst); - char *wmp = strchr(mydst, '.'); + const char *d = dst; + char *md = mydst; + unsigned i = 0; + while ((i < sizeof(mydst) - 1) && *d && *d != '.') + *md++ = *d++; + *md = 0; - if (wmp) - wmp[0] = 0; emit_buff(glsl_strbufs, "ssbo_addr_temp = uint(floatBitsToUint(%s)) >> 2;\n", srcs[1]); atomic_op[0] = atomic_src[0] = '\0'; |