浏览代码

fix system crash when socket accept connection

eason 5 年之前
父节点
当前提交
a487c5e3d4
共有 1 个文件被更改,包括 14 次插入0 次删除
  1. 14 0
      components/net/sal_socket/socket/net_sockets.c

+ 14 - 0
components/net/sal_socket/socket/net_sockets.c

@@ -41,8 +41,22 @@ int accept(int s, struct sockaddr *addr, socklen_t *addrlen)
         if(d)
         {
             /* this is a socket fd */
+            d->fnode = (struct dfs_fnode *)rt_malloc(sizeof(struct dfs_fnode));
+            if (!d->fnode)
+            {
+                /* release fd */
+                fd_release(fd);
+                rt_set_errno(-ENOMEM);
+                return -1;
+            }
+            rt_memset(d->fnode, 0, sizeof(struct dfs_fnode));
+            rt_list_init(&d->fnode->list);
+
             d->fnode->type = FT_SOCKET;
             d->fnode->path = NULL;
+            d->fnode->fullpath = NULL;
+            d->fnode->ref_count = 1;
+
 
             d->fnode->fops = dfs_net_get_fops();