diff options
author | Grazvydas Ignotas <[email protected]> | 2017-03-03 01:59:57 +0200 |
---|---|---|
committer | Timothy Arceri <[email protected]> | 2017-03-09 20:41:02 +1100 |
commit | 8cd83a6c813964e38d8ce76fe0031a96f764b4d5 (patch) | |
tree | 970aa2e401ae8b2da6345b82eb2e496e99f38743 | |
parent | 61bbb25a080e48a8ca897ba7f6e73cc6a8e9b5b8 (diff) |
glsl/blob: clear padding bytes
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 <[email protected]>
Reviewed-by: Timothy Arceri <[email protected]>
-rw-r--r-- | src/compiler/glsl/blob.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/src/compiler/glsl/blob.c b/src/compiler/glsl/blob.c index dd4341be961..14dc69092f0 100644 --- a/src/compiler/glsl/blob.c +++ b/src/compiler/glsl/blob.c @@ -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; } |