diff --git a/servers/vfs/main.c b/servers/vfs/main.c index 63d434a18..bfbb11047 100644 --- a/servers/vfs/main.c +++ b/servers/vfs/main.c @@ -738,7 +738,7 @@ static void get_work() } proc_p = _ENDPOINT_P(m_in.m_source); - if (proc_p < 0) fp = NULL; + if (proc_p < 0 || proc_p >= NR_PROCS) fp = NULL; else fp = &fproc[proc_p]; if (m_in.m_type == EDEADSRCDST) return; /* Failed 'sendrec' */ diff --git a/servers/vfs/path.c b/servers/vfs/path.c index bb9db3a2c..ca5182882 100644 --- a/servers/vfs/path.c +++ b/servers/vfs/path.c @@ -575,7 +575,7 @@ char ename[NAME_MAX + 1]; cur = (struct dirent *) (buf + consumed); name_len = cur->d_reclen - offsetof(struct dirent, d_name) - 1; - if(cur->d_name + name_len >= &buf[DIR_ENTRIES * DIR_ENTRY_SIZE]) + if(cur->d_name + name_len+1 >= &buf[DIR_ENTRIES*DIR_ENTRY_SIZE]) return(EINVAL); /* Rubbish in dir entry */ if (entry->v_inode_nr == cur->d_ino) { /* found the entry we were looking for */