glsl/blob: clear padding bytes
authorGrazvydas Ignotas <notasas@gmail.com>
Thu, 2 Mar 2017 23:59:57 +0000 (01:59 +0200)
committerTimothy Arceri <tarceri@itsqueeze.com>
Thu, 9 Mar 2017 09:41:02 +0000 (20:41 +1100)
Since blob is intended for serializing data, it's not a good idea to
leave padding holes with uninitialized data, which may leak heap
contents and hurt compression if the blob is later compressed, like
done by shader cache. Clear it.

Signed-off-by: Grazvydas Ignotas <notasas@gmail.com>
Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com>
src/compiler/glsl/blob.c

index dd4341be961df45602500f22ff1908b46a88e983..14dc69092f0c73d287160c0ec54cef435e08850b 100644 (file)
@@ -70,10 +70,13 @@ align_blob(struct blob *blob, size_t alignment)
 {
    const size_t new_size = ALIGN(blob->size, alignment);
 
-   if (! grow_to_fit (blob, new_size - blob->size))
-      return false;
+   if (blob->size < new_size) {
+      if (!grow_to_fit(blob, new_size - blob->size))
+         return false;
 
-   blob->size = new_size;
+      memset(blob->data + blob->size, 0, new_size - blob->size);
+      blob->size = new_size;
+   }
 
    return true;
 }