draw: fix robust ubo size calc
authorMike Blumenkrantz <michael.blumenkrantz@gmail.com>
Wed, 26 Apr 2023 19:37:31 +0000 (15:37 -0400)
committerMarge Bot <emma+marge@anholt.net>
Thu, 27 Apr 2023 19:48:48 +0000 (19:48 +0000)
if the size of the constant buffer + stride overflows UINT32_MAX,
DIV_ROUND_UP will return 0, which is, in some sense, extremely robust,
but for general functionality it's not actually very robust

cc: mesa-stable

Reviewed-by: Konstantin Seurer <konstantin.seurer@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22720>

src/gallium/auxiliary/draw/draw_pt_fetch_shade_pipeline_llvm.c

index 2df7c53..7cbb2e2 100644 (file)
@@ -406,7 +406,7 @@ llvm_middle_end_prepare(struct draw_pt_middle_end *middle,
 static unsigned
 get_num_consts_robust(struct draw_context *draw, unsigned *sizes, unsigned idx)
 {
-   unsigned const_bytes = sizes[idx];
+   uint64_t const_bytes = sizes[idx];
 
    if (const_bytes < sizeof(float))
       return 0;