diff --git a/Kernel/lib.c b/Kernel/lib.c
index d388050ade9b8943813014a1d33e169c510f30b3..4fa226c1d3577bde3d678b61f7e1d01061b05f06 100644
--- a/Kernel/lib.c
+++ b/Kernel/lib.c
@@ -459,6 +459,7 @@ char *strdup(const char *Str)
 {
 	char	*ret;
 	ret = malloc(strlen(Str)+1);
+	if( !ret )	return NULL;
 	strcpy(ret, Str);
 	return ret;
 }
diff --git a/Kernel/vfs/open.c b/Kernel/vfs/open.c
index bd43a5f3c817002e43c6dfdbb48386d4dfa42271..5420b33a4f35e417dd63373bcf8e22b22419202e 100644
--- a/Kernel/vfs/open.c
+++ b/Kernel/vfs/open.c
@@ -458,6 +458,10 @@ int VFS_Open(char *Path, Uint Mode)
 	
 	// Get absolute path
 	absPath = VFS_GetAbsPath(Path);
+	if(absPath == NULL) {
+		Log_Warning("VFS", "VFS_Open: Path expansion failed '%s'", Path);
+		return -1;
+	}
 	LOG("absPath = \"%s\"", absPath);
 	// Parse path and get mount point
 	node = VFS_ParsePath(absPath, NULL);