From: <ljs...@us...> - 2012-02-17 22:37:50
|
Revision: 745 http://cadcdev.svn.sourceforge.net/cadcdev/?rev=745&view=rev Author: ljsebald Date: 2012-02-17 22:37:44 +0000 (Fri, 17 Feb 2012) Log Message: ----------- Protect fs_dup() and fs_dup2() against invalid file descriptors. Modified Paths: -------------- kos/kernel/fs/fs.c Modified: kos/kernel/fs/fs.c =================================================================== --- kos/kernel/fs/fs.c 2012-02-17 02:44:28 UTC (rev 744) +++ kos/kernel/fs/fs.c 2012-02-17 22:37:44 UTC (rev 745) @@ -266,19 +266,28 @@ file_t fs_dup(file_t oldfd) { /* Make sure it exists */ - if (!fd_table[oldfd]) { + if (oldfd < 0 || oldfd >= FD_SETSIZE) { errno = EBADF; return -1; } + else if (!fd_table[oldfd]) { + errno = EBADF; + return -1; + } return fs_hnd_assign(fd_table[oldfd]); } file_t fs_dup2(file_t oldfd, file_t newfd) { - if (!fd_table[oldfd]) { + /* Make sure the descriptors are valid */ + if (oldfd < 0 || oldfd >= FD_SETSIZE || newfd < 0 || newfd >= FD_SETSIZE) { errno = EBADF; return -1; } + else if (!fd_table[oldfd]) { + errno = EBADF; + return -1; + } if (fd_table[newfd]) fs_close(newfd); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |