aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGert Wollny <gert.wollny@collabora.com>2022-11-09 09:40:25 +0100
committerMarge Bot <emma+marge@anholt.net>2022-11-10 07:03:02 +0000
commit0a4e3bc737314e75748dfed8f97e670c2820cd5e (patch)
tree5194b0c814f0dab34a89b19b8180618eb03c9baa
parent65c916fe22fafbed401d3eefb0abc2f44c2c163a (diff)
downloadvirglrenderer-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.c10
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';