Mesa (master): glsl: fix bounds check in blob_overwrite_bytes

Rob Herring robh at kemper.freedesktop.org
Thu Jun 8 02:04:58 UTC 2017


Module: Mesa
Branch: master
Commit: 18348a383dae41567fd333db6f848fbc8ff7d99b
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=18348a383dae41567fd333db6f848fbc8ff7d99b

Author: Rob Herring <robh at kernel.org>
Date:   Wed May 31 19:07:40 2017 -0500

glsl: fix bounds check in blob_overwrite_bytes

clang gives a warning in blob_overwrite_bytes because offset type is
size_t which is unsigned:

src/compiler/glsl/blob.c:110:15: warning: comparison of unsigned expression < 0 is always false [-Wtautological-compare]
   if (offset < 0 || blob->size - offset < to_write)
       ~~~~~~ ^ ~

Remove the less than 0 check to fix this.

Additionally, if offset is greater than blob->size, the 2nd check would
be false due to unsigned math. Rewrite the check to avoid subtraction.

Reviewed-by: Ian Romanick <ian.d.romanick at intel.com>
Signed-off-by: Rob Herring <robh at kernel.org>

---

 src/compiler/glsl/blob.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/compiler/glsl/blob.c b/src/compiler/glsl/blob.c
index 769ebf1a02..db36252065 100644
--- a/src/compiler/glsl/blob.c
+++ b/src/compiler/glsl/blob.c
@@ -107,7 +107,7 @@ blob_overwrite_bytes(struct blob *blob,
                      size_t to_write)
 {
    /* Detect an attempt to overwrite data out of bounds. */
-   if (offset < 0 || blob->size - offset < to_write)
+   if (blob->size < offset + to_write)
       return false;
 
    memcpy(blob->data + offset, bytes, to_write);




More information about the mesa-commit mailing list