From d08bcc455d372662ec687897ef46c1a3a299e5e9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jakub=20K=C4=85dzio=C5=82ka?= Date: Tue, 30 Mar 2021 23:24:15 +0200 Subject: [PATCH] Handle errors when opening source file Before this commit, opening a file for which the user didn't have permission resulted in a "Bad file descriptor" error. --- src/asm/lexer.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/asm/lexer.c b/src/asm/lexer.c index 57f9f1cc..dc2be553 100644 --- a/src/asm/lexer.c +++ b/src/asm/lexer.c @@ -473,6 +473,11 @@ struct LexerState *lexer_OpenFile(char const *path) state->path = path; state->isFile = true; state->fd = isStdin ? STDIN_FILENO : open(path, O_RDONLY); + if (state->fd < 0) { + error("Failed to open file \"%s\": %s\n", path, strerror(errno)); + free(state); + return NULL; + } state->isMmapped = false; /* By default, assume it won't be mmap()ed */ if (!isStdin && fileInfo.st_size > 0) { /* Try using `mmap` for better performance */