When xfuse_create_file_in_xrdp_fs is failed, it returns NULL.
Without this fix, xinode->size causes SEGV, so implementation is changed
to return -1 and check the return value in caller.
sem_init() is not functional on Mac OS. Use the Grand Central Dispatch
implementation.
Make libscp_lock.c use semaphores through the thread_calls wrapper.
In RHEL and its clones, /usr/bin/Xorg is set suid-root. To execute
Xorg with user privileges, /etc/pam.d/xserver needs be edited [1],
or suid bit of Xorg binary needs to be dropped.
In order to keep Xorg and /etc/pam.d/xserver untouched, preparing
non-suid version of Xorg as /usr/bin/Xorg.non-suid for example is
the simplest solution. However, Xorg.non-suid cannot be executed
since it is hardcoded to execute Xorg in sesman.
This change makes more flexible to execute Xorg with non-standard
name or not in PATH environment variable.
[1] https://www.centos.org/forums/viewtopic.php?t=21185
Discovered in #321. The number of argument for pa_rtpoll_run have
been changed since 6.0.
>=6.0 : int pa_rtpoll_run(pa_rtpoll *f);
<6.0 : int pa_rtpoll_run(pa_rtpoll *f, bool wait);
Check pulseaudio version by PA_CHECK_VERSION macro introduced since
pulseaudio 0.9.16. In case PA_CHECK_VERSION is not defined,
pa_rtpoll_run takes 2 arguments.
tm_mon in `struct tm` uses 0 for January.
`struct session_data` and `struct SCP_DISCONNECTED_SESSION` don't specify
how dates are stored. But considering the code in sestest and sesadmin,
all date components are stored as displayed.
libdir is for shared and static libraries. Some xrdp libraries are loaded
dynamically from a non-standard directory, so they are used like modules.
Having separate libdir and moduledir would eventually allow to separate
dynamically loaded modules from shared libraries.
That can cause unexpected behavior, especially with third party tools.
The ignored files will be lost if the source tree is re-imported to
another git repository, unless special care is taken.
Whitelist all non-generated makefiles.
To whitelist instfiles/pam.d/xrdp-sesman, add path to all generated
executables listed in the top-level .gitignore, sort .gitignore
alphabetically.
Add mkinstalldir, it's used by Automake on some systems.
Strictly speaking, both existence and readability should be checked.
However, chances of ~/.profile being a directory or a FIFO are very small
compared to its chances of being non-readable due to some
misconfiguration.
Put "if" and "then" on the same line for consistency with other checks.
Improve comment and pseudocode formatting.
Notes about software design should not be shown as warnings to everybody
who compiles the code. Warnings should be about unexpected conditions
detected at the compile time.