diff --git a/userprog/syscall_open.c b/userprog/syscall_open.c
index fadce9511dec77c50fa7f8e10baacd6843d7b873..fcbbe06e7b871a726c740ffe5ada079184f31984 100644
--- a/userprog/syscall_open.c
+++ b/userprog/syscall_open.c
@@ -23,5 +23,10 @@ void syscall_open(struct intr_frame *f) {
 	}
 	// Described in system_calls.h, get a new file descriptor
 	int file_descriptor = associate_new_file_descriptor(file);
+
+	if (file_descriptor == -1) {
+		f->eax = -1; // Returning a failure state
+		return;
+	}
 	f->eax = file_descriptor; // Returning the file descriptor
 }