From 65c8cbe89df3c0e23e83f32111cce6609f86c85d Mon Sep 17 00:00:00 2001 From: Eric Engestrom Date: Sun, 25 Sep 2016 16:49:51 +0100 Subject: nir/spirv: improve lseek() error handling Signed-off-by: Eric Engestrom Reviewed-by: Jason Ekstrand --- src/compiler/spirv/spirv2nir.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) (limited to 'src/compiler') diff --git a/src/compiler/spirv/spirv2nir.c b/src/compiler/spirv/spirv2nir.c index d151c2cc828..a02402874fc 100644 --- a/src/compiler/spirv/spirv2nir.c +++ b/src/compiler/spirv/spirv2nir.c @@ -39,6 +39,8 @@ #include #include +#define WORD_SIZE 4 + int main(int argc, char **argv) { int fd = open(argv[1], O_RDONLY); @@ -49,9 +51,15 @@ int main(int argc, char **argv) } off_t len = lseek(fd, 0, SEEK_END); + if (len % WORD_SIZE != 0) + { + fprintf(stderr, "File length isn't a multiple of the word size\n"); + fprintf(stderr, "Are you sure this is a valid SPIR-V shader?\n"); + close(fd); + return 1; + } - assert(len % 4 == 0); - size_t word_count = len / 4; + size_t word_count = len / WORD_SIZE; const void *map = mmap(NULL, len, PROT_READ, MAP_PRIVATE, fd, 0); assert(map != NULL); -- cgit v1.2.3