summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormetalefty <meta@vmeta.jp>2018-10-18 10:49:09 +0900
committerGitHub <noreply@github.com>2018-10-18 10:49:09 +0900
commitc2ade7a1f7318527bd8cb5aedc4ed127c5546c94 (patch)
treed96e19d0069254cdfe05e89dc55e2df854f7b246
parenta83400060b8ad6ded4cedb0b060f9c0137b628ae (diff)
parent47d8e03d3ac43be2b109595483b9358f1e9c6eb5 (diff)
downloadxrdp-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.c15
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);