mirror of
https://github.com/apache/nuttx.git
synced 2026-05-29 04:19:37 +08:00
fs/inode: add sanity check for inode to avoid nullpointer
Change-Id: Ib2c74ba308b8f15756fac4e69632c296243eb4ab Signed-off-by: Jiuzhu Dong <dongjiuzhu1@xiaomi.com>
This commit is contained in:
+2
-1
@@ -189,7 +189,8 @@ int sockfd_allocate(FAR struct socket *psock, int oflags)
|
|||||||
|
|
||||||
FAR struct socket *file_socket(FAR struct file *filep)
|
FAR struct socket *file_socket(FAR struct file *filep)
|
||||||
{
|
{
|
||||||
if (filep != NULL && INODE_IS_SOCKET(filep->f_inode))
|
if (filep != NULL && filep->f_inode != NULL &&
|
||||||
|
INODE_IS_SOCKET(filep->f_inode))
|
||||||
{
|
{
|
||||||
return filep->f_priv;
|
return filep->f_priv;
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -106,7 +106,7 @@ static FAR struct epoll_head *epoll_head_from_fd(int fd)
|
|||||||
|
|
||||||
/* Check fd come from us */
|
/* Check fd come from us */
|
||||||
|
|
||||||
if (filep->f_inode->u.i_ops != &g_epoll_ops)
|
if (!filep->f_inode || filep->f_inode->u.i_ops != &g_epoll_ops)
|
||||||
{
|
{
|
||||||
set_errno(EBADF);
|
set_errno(EBADF);
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|||||||
+7
-1
@@ -169,7 +169,13 @@ int file_fstat(FAR struct file *filep, FAR struct stat *buf)
|
|||||||
/* Get the inode from the file structure */
|
/* Get the inode from the file structure */
|
||||||
|
|
||||||
inode = filep->f_inode;
|
inode = filep->f_inode;
|
||||||
DEBUGASSERT(inode != NULL);
|
|
||||||
|
/* Was this file opened ? */
|
||||||
|
|
||||||
|
if (!inode)
|
||||||
|
{
|
||||||
|
return -EBADF;
|
||||||
|
}
|
||||||
|
|
||||||
/* The way we handle the stat depends on the type of inode that we
|
/* The way we handle the stat depends on the type of inode that we
|
||||||
* are dealing with.
|
* are dealing with.
|
||||||
|
|||||||
@@ -106,11 +106,10 @@ int mq_notify(mqd_t mqdes, FAR const struct sigevent *notification)
|
|||||||
}
|
}
|
||||||
|
|
||||||
inode = filep->f_inode;
|
inode = filep->f_inode;
|
||||||
msgq = inode->i_private;
|
|
||||||
|
|
||||||
/* Was a valid message queue descriptor provided? */
|
/* Was a valid message queue descriptor provided? */
|
||||||
|
|
||||||
if (!msgq)
|
if (!inode || !inode->i_private)
|
||||||
{
|
{
|
||||||
/* No.. return EBADF */
|
/* No.. return EBADF */
|
||||||
|
|
||||||
@@ -128,6 +127,7 @@ int mq_notify(mqd_t mqdes, FAR const struct sigevent *notification)
|
|||||||
|
|
||||||
/* Is there already a notification attached */
|
/* Is there already a notification attached */
|
||||||
|
|
||||||
|
msgq = inode->i_private;
|
||||||
if (msgq->ntpid == INVALID_PROCESS_ID)
|
if (msgq->ntpid == INVALID_PROCESS_ID)
|
||||||
{
|
{
|
||||||
/* No... Have we been asked to establish one? */
|
/* No... Have we been asked to establish one? */
|
||||||
|
|||||||
Reference in New Issue
Block a user