diff options
author | metalefty <meta@vmeta.jp> | 2018-10-18 10:49:09 +0900 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-10-18 10:49:09 +0900 |
commit | c2ade7a1f7318527bd8cb5aedc4ed127c5546c94 (patch) | |
tree | d96e19d0069254cdfe05e89dc55e2df854f7b246 | |
parent | a83400060b8ad6ded4cedb0b060f9c0137b628ae (diff) | |
parent | 47d8e03d3ac43be2b109595483b9358f1e9c6eb5 (diff) | |
download | xrdp-proprietary-c2ade7a1f7318527bd8cb5aedc4ed127c5546c94.tar.gz xrdp-proprietary-c2ade7a1f7318527bd8cb5aedc4ed127c5546c94.zip |
Merge pull request #1225 from savisko/devel
Fix crash of xrdp-chansrv process, issue #1202.
-rw-r--r-- | sesman/chansrv/chansrv_fuse.c | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/sesman/chansrv/chansrv_fuse.c b/sesman/chansrv/chansrv_fuse.c index ff50f136..1095b63e 100644 --- a/sesman/chansrv/chansrv_fuse.c +++ b/sesman/chansrv/chansrv_fuse.c @@ -1228,10 +1228,17 @@ xfuse_create_file_in_xrdp_fs(tui32 device_id, int pinode, const char *name, { XRDP_INODE *xinode; XRDP_INODE *xinodep; + time_t cur_time; if ((name == NULL) || (strlen(name) == 0)) return NULL; + /* Do we have an inode table yet? */ + if (xfuse_init_xrdp_fs()) + { + return NULL; + } + xinode = g_new0(XRDP_INODE, 1); if (xinode == NULL) { @@ -1239,14 +1246,16 @@ xfuse_create_file_in_xrdp_fs(tui32 device_id, int pinode, const char *name, return NULL; } + cur_time = time(0); + xinode->parent_inode = pinode; xinode->inode = g_xrdp_fs.next_node++; xinode->nlink = 1; xinode->uid = getuid(); xinode->gid = getgid(); - xinode->atime = time(0); - xinode->mtime = time(0); - xinode->ctime = time(0); + xinode->atime = cur_time; + xinode->mtime = cur_time; + xinode->ctime = cur_time; xinode->device_id = device_id; xinode->is_synced = 1; strcpy(xinode->name, name); |