Commit Graph

767 Commits

Author SHA1 Message Date
Jay Sorg
05c599666d sesman: remove sessvc, one less process to manage 2017-03-19 17:16:36 -07:00
Pavel Roskin
58c9cb43e9 Make socket directory configurable, don't hardcode /tmp/.xrdp
Use XRDP_SOCKET_PATH in file_loc.h

Don't define any non-socket paths in file_loc.h, they should come from
the makefiles.

Define all paths unconditionally, they should not be defined elsewhere.

Pass XRDP_SOCKET_PATH as environment variable to the backends.
2017-03-17 22:25:05 -07:00
Pavel Roskin
fc2572f60b Remove chansrv_cleanup(), it doesn't do anything useful
xrdp_chansrv_%8.8x_main_term and xrdp_chansrv_%8.8x_thread_done are both
wait objects, not sockets. They are created and cleaned up in chansrv.c

Wait objects are pairs of file descriptors on POSIX. They are closed
automatically when the process exits.

On Windows, wait objects are handles that are closed by CloseHandle().
Those handles should also be closed on the process exit.

In any case, there is no way for a parent process to clean up file
handles of the child process.
2017-03-17 22:25:05 -07:00
speidy
cfdbc2b4db chansrv: dvc, check channel exists on get/remove api struct 2017-03-16 00:20:10 +02:00
Pavel Roskin
6ed4c969f4 Eliminate APP_CC and DEFAULT_CC 2017-03-14 00:21:48 -07:00
Pavel Roskin
30a7a947b1 Don't include config_ac.h from any header files 2017-03-04 00:52:34 -08:00
Pavel Roskin
b2d3dcf169 Include config_ac.h from all source files 2017-03-04 00:52:34 -08:00
Pavel Roskin
8a1de8dbc4 Remove trailing whitespace 2017-02-08 13:30:56 +09:00
Koichiro IWAO
f11eed3277 chansrv: fix warnings in pulse module 2017-02-02 21:46:49 -08:00
Pavel Roskin
99e4e4520a xrdp-sesadmin: show sessions in human readable format 2017-02-02 21:24:50 -08:00
Pavel Roskin
ea6882fd4c xrdp-sesadmin: refactor array access 2017-02-02 21:24:50 -08:00
Pavel Roskin
0017081d78 xrdp-sesadmin: fix crash on network or authentication error
If scp_v1c_mng_get_session_list() returns an error, report it to the
user and exit. Session list is not initialized in that case and should
not be freed.

g_free() already checks its argument for being to NULL, remove an extra
check.
2017-02-02 21:24:50 -08:00
Koichiro IWAO
021b79ba55 docs: remove IdleTimeLimit until it is actually implemented
it gives users false hope and finally disappoints them.
2017-01-31 05:07:06 -03:00
Jay Sorg
a1aff316dc change log message to long long 2017-01-29 23:14:33 -08:00
Jay Sorg
b5029c2596 sesman: fix warning for 32 bit / 64 bit log entry, trunc to 32 bit 2017-01-29 23:14:33 -08:00
metalefty
cc48345f40 sesman: remove unnecessary fork for FreeBSD (#650)
it is not only unnecessary but causes another bug.
2017-01-28 21:14:55 +09:00
mirabilos
6257bae23f Add GNU/kFreeBSD support (#645)
* GNU/kFreeBSD is a FreeBSD variant, for code purposes.

* GNU/kFreeBSD uses GNU/Linux-ish init scripts, however.
2017-01-26 23:02:41 -02:00
Pavel Roskin
e35b5a4708 Constify string arguments in xrdp-chansrv sources 2017-01-22 22:39:10 -08:00
Idan Freiberg
4a23b7939c Merge pull request #630 from selu/devel
Fix calling XChangeProperty in clipboard provide
2017-01-23 08:16:18 +02:00
Pavel Roskin
0a9b586332 Improve xrdp-sesman help text
Don't document "-ns", as "-n" and "--nodaemon" should be enough. Always
refer to the program as xrdp-sesman, not sesman.
2017-01-17 18:09:47 -08:00
Szabolcs Seláf
bf4c32c862 Fix calling XChangeProperty in clipboard provide
XChangeProperty's last parameter is number of elements, not number of bytes as it's in https://tronche.com/gui/x/xlib/window-information/XChangeProperty.html
Because of this bug Paste did not work in any java applications.
2017-01-17 15:18:23 +01:00
Pavel Roskin
8ee886a5cc Don't log device_data_len in the code where it may be uninitialized
Log device_data_len only in the code that reads it.
2017-01-11 23:25:42 -08:00
Pavel Roskin
f1a521204a Remove redundant function declarations 2017-01-11 23:25:42 -08:00
Pavel Roskin
9a2e728396 Remove send_channel_data() from devredir.h, it's declared in chansrv.h
Include "chansrv.h" from devredir.c to have send_channel_data()
declaration.
2017-01-11 23:25:42 -08:00
Idan Freiberg
e08c85aa42 Merge pull request #618 from metalefty/max_disc_time
sesman: print max_disc_time as DisconnectedTimeLimit
2017-01-12 06:58:12 +02:00
Koichiro IWAO
c3fbd71513 sesman: print max_disc_time as DisconnectedTimeLimit
not max_idle_time.
2017-01-10 15:35:16 +09:00
Pavel Roskin
c049c3dfd0 rail: remove unneeded call to XGetWindowAttributes()
It is already called above "if" with the same arguments.
2017-01-06 11:24:17 -08:00
Pavel Roskin
6664aac00f Use "void" for empty argument list in declarations
In C, an empty argument list in a declaration means that the function
can accept any arguments. Use "void" instead, it means "no arguments".

C++ treats void and empty list as "no arguments".
2017-01-05 17:27:20 -08:00
jsorg71
15a24ff1c4 Merge pull request #612 from proski/includes
Use <> for system includes, move system includes above local ones
2017-01-05 16:01:52 -08:00
Pavel Roskin
7ba3610787 Use <> for system includes, move system includes above local ones 2017-01-04 13:13:20 -08:00
volth
26a26ef906 fix build with --enable-xrdpdebug=yes 2017-01-04 19:20:44 +00:00
volth
37b4a14b54 fix build with --enable-xrdpdebug=yes 2017-01-04 13:00:01 +00:00
Pavel Roskin
a01aaa19b8 Fix help text to match the manual and the actual behavior
The help text mentions "LIST" and "KILL" commands, but the manual says
"list" and "kill", and the command line parser expects the later.
2016-12-19 23:58:13 -08:00
Idan Freiberg
a11af2bc95 Merge pull request #545 from moobyfr/fix-xauth
Fix xauth
2016-12-19 01:59:19 -05:00
Pavel Roskin
b1db87ea21 Use per-display VNC password files, remove old style password if found
Every session uses its own VNC password, so keep then in separate files.

The old style password file uses the user's password encrypted with a
known key. Since we are not replacing it anymore, we should remove it.
2016-12-18 09:24:11 -08:00
Pavel Roskin
c21b9a78f4 Distribute all files except git and github specific data
It is better to distribute a few useless file than not to distribute
needed files.
2016-12-18 00:00:11 -08:00
BLINDAUER Emmanuel
a2d7720887 Fix typo 2016-12-17 08:07:07 +01:00
BLINDAUER Emmanuel
1430c54c40 - Removed tailing space
- Fixed the copyright and year
2016-12-16 20:55:52 +01:00
BLINDAUER Emmanuel
2927eed74c - Update copyright
- remove test on filename for xauth as we know what we send
- better names for variables in xauth
- if xauth fails, exit sesman
- g_bytes_to_hexstr returns a null-teminated string, don't set it twice.
2016-12-15 22:45:12 +01:00
BLINDAUER Emmanuel
480d6d37b7 use correct include 2016-12-15 18:49:07 +01:00
BLINDAUER Emmanuel
51759d3d84 remove unused include 2016-12-15 18:38:37 +01:00
BLINDAUER Emmanuel
b2f4f68ab8 - move function related to xauth in own file
- use of g_bytes_to_hexstr()
- correct typos and coding syntax
- don't create auth file, xauth can do that if needed
2016-12-15 18:06:35 +01:00
BLINDAUER Emmanuel
e72957b7c9 xauth: use the authfile if not using default value 2016-12-14 10:55:45 +01:00
BLINDAUER Emmanuel
7d1fdd04b5 Cosmetic change: follow coding standard 2016-12-14 08:28:25 +01:00
BLINDAUER Emmanuel
16b6471d88 use the correct size for snprintf 2016-12-14 07:16:06 +01:00
BLINDAUER Emmanuel
0aa4b85f81 Xauth: use snprintf for setting the filename and adjust the value of computed cookie 2016-12-14 00:29:22 +01:00
BLINDAUER Emmanuel
6875dbe860 use functions from os_call.h 2016-12-13 18:53:07 +01:00
BLINDAUER Emmanuel
7bd1823ceb Add xauth support to get more security for all backends 2016-12-13 13:24:15 +01:00
Koichiro IWAO
35bc7c1d65 sesman: unbreak FreeBSD build after #523 2016-12-09 10:35:21 +09:00
metalefty
731d4be670 Merge pull request #521 from proski/xorg-log
Change default Xorg logfile to .xorgxrdp.%s.log
2016-12-09 09:45:47 +09:00
Pavel Roskin
9cbf3d1bb8 Change default Xorg logfile to .xorgxrdp.%s.log
The log file is created in the home directory, %s is replaced with the
display number (e.g. 10).

If Xorg is run setuid root, it can refuse to run if the log path is
absolute.
2016-12-06 15:10:01 -08:00
Pavel Roskin
04414e0fd4 Disable privilege elevation by setuid for the X server 2016-12-06 15:09:52 -08:00
Jay Sorg
f14e3dc8ac sesman: must save guid in session data 2016-12-04 17:20:01 -08:00
Jay Sorg
9a517b34f0 vnc: code cleanup 2016-12-04 15:39:10 -08:00
Jay Sorg
57905d71ad vnc: change password file to use guid hash 2016-12-03 23:12:48 -08:00
Pavel Roskin
e46d15ca84 Fix C++ errors and warnings in FUSE code 2016-11-26 09:17:51 -08:00
Pavel Roskin
2ab321a7c6 Use fuse_ino_t for FUSE inodes, not tui32 or int 2016-11-26 09:17:51 -08:00
Pavel Roskin
f622a17c75 Remove write-only FileId variable 2016-11-26 09:17:51 -08:00
Pavel Roskin
46f4025372 Cast pointer to uint64_t through tintptr to avoid warnings
Cast to long would damage a pointer on Win64.
2016-11-26 09:17:51 -08:00
Pavel Roskin
e92c4f3b40 Use constant strings to fix warnings 2016-11-26 09:17:51 -08:00
Pavel Roskin
662172012b Call devredir_cvt_slash() on the path copy, it changes the argument 2016-11-26 09:17:51 -08:00
Pavel Roskin
a4e3952d65 Disable or remove dead code to prevent it from throwing warnings 2016-11-26 09:17:51 -08:00
Pavel Roskin
a547cc3784 Include needed files in chansrv_fuse.c, remove duplicate declarations 2016-11-26 09:17:51 -08:00
Pavel Roskin
bf39fed6e4 Fix misuse of NULL for arithmetic type 2016-11-26 09:17:51 -08:00
Pavel Roskin
4234ed278e Use FUSE_CFLAGS and FUSE_LIBS from pkg-config
Include <fuse_lowlevel.h>, not <fuse/fuse_lowlevel.h>, the include path
should be set up for that.

Don't define _FILE_OFFSET_BITS in one file, FUSE_CFLAGS would enable it
for the whole xrdp-chansrv build if needed.
2016-11-26 09:17:51 -08:00
Pavel Roskin
15c4c47811 Remove "-ac" from X server parameters, it's insecure and unnecessary
Fedora patches sesman.ini to remove "-ac", and that doesn't cause any ill
effects.
2016-11-21 22:37:41 -08:00
Pavel Roskin
7fce469cbc Fix format warnings if FUSE is enabled 2016-11-21 17:51:20 +00:00
Jay Sorg
25fd585d55 chansrv: some fixes to log file path 2016-11-19 07:31:36 +00:00
Itamar Reis Peixoto
f7b0b0d89c Merge pull request #488 from metalefty/docs
Update man pages and config files
2016-11-17 23:12:49 -02:00
metalefty
9deaa078fc Merge pull request #477 from proski/vnc-strerror
Improve error messages about VNC password file
2016-11-16 17:10:38 +09:00
metalefty
8516e6f97b Merge pull request #476 from proski/auth
Fix compile warnings for non-default authentication methods
2016-11-16 17:08:15 +09:00
metalefty
b89956d06e Merge pull request #485 from proski/code-standards
Code standards
2016-11-16 17:05:21 +09:00
metalefty
d335c93a75 Merge pull request #480 from proski/strncat
Fix potential buffer overflow in strncat() invocation
2016-11-16 17:02:33 +09:00
Pavel Roskin
35b336272b Fix compilation with C++ 2016-11-15 22:40:06 -08:00
Pavel Roskin
16c3bbdb8d Remove all tabs in sources 2016-11-15 22:40:06 -08:00
Pavel Roskin
e9d064e390 Don't try to create .vnc directory if it exists
Report system error if it cannot be created.
2016-11-15 22:39:22 -08:00
Pavel Roskin
60029514a6 Report system error if the VNC password file cannot be created 2016-11-15 22:39:22 -08:00
Pavel Roskin
e9a0324cb3 Fix compile warnings for non-default authentication methods
Include string.h for strcmp(). Don't define _XOPEN_SOURCE, it conflicts
with libc headers and hides putpwent(). Make input strings constant. Fix
functions to match their declarations.
2016-11-15 22:38:56 -08:00
Pavel Roskin
92423a466e Fix potential buffer overflow in strncat() invocation
strncat() will copy at most the specified number of characters and append
the null character on top of that. strlen() doesn't count the final null
character.
2016-11-15 22:38:21 -08:00
Koichiro IWAO
cb1960e0fc config: use semicolon to comment out descriptions in config files
and use number sign to comment out actual configurations.
For example:

    ; if set to true, enables foobar
    #foobar=true
2016-11-16 14:15:44 +09:00
Koichiro IWAO
4f2d94505a config: unify all boolean values in config to true/false 2016-11-16 14:15:44 +09:00
Pavel Roskin
0d72cced46 Omit numbers from the "param" keys, they are not needed
Users assume that they need to renumber the parameters. That makes
parameter editing more involved than it needs to be.
2016-11-15 20:55:03 -08:00
metalefty
94901c9989 Merge pull request #454 from metalefty/change-chansrv-log-path
chansrv: change chansrv log path to ${XDG_DATA_HOME}/xrdp
2016-11-07 09:56:31 +09:00
Dominik George
c90bc13d39
Move -logfile /dev/null option for easier commenting in debug scenarios. 2016-10-28 16:45:05 +02:00
Koichiro IWAO
7d017482f6 chansrv: change chansrv log path to ${XDG_DATA_HOME}/xrdp
like Xorg's logfile is written to ${XDG_DATA_HOME}/xorg/Xorg.n.log.

If XDG_DATA_HOME is not defined, the log path will be
${HOME}/.local/share/xrdp.
2016-10-25 14:52:43 +09:00
Pavel Roskin
b28a986071 Fix memory leak in xrdp-sesman on config reload 2016-10-21 20:15:50 +00:00
Pavel Roskin
dc60a80b86 Memory leak fix: keep X server path in the parameter list
g_cfg->xorg_params, g_cfg->vnc_params and g_cfg->rdp_params don't have
auto_free enabled, so removing an item from one of those lists won't free
its contents.

It's better not to change those lists, as they represent the actual
config file and could be reused. Instead, omit the 0th parameter (the
executable path) from copying to xserver_params.

Found by Valgrind.
2016-10-21 20:15:50 +00:00
Pavel Roskin
e17a56efb6 Call auth_end() exactly once in scp_v0_process()
As discovered by Valgrind, it wasn't called at all in case of a
successful session creation, which leaked memory.
2016-10-21 20:15:50 +00:00
Pavel Roskin
65ac8e758b Fix memory leak: free session data
Call scp_session_destroy() in the functions that call
scp_session_create() and nowhere else.

As found by Valgrind, the session data is not freed if the session is
created successfully.
2016-10-21 20:15:50 +00:00
Pavel Roskin
a370306f75 Get rid of EXTRA_LIBS, use variables with more specific names 2016-10-20 10:43:02 -07:00
Pavel Roskin
5c69f3cd57 Eliminate EXTRA_FLAGS, it's a poor name, use AM_LDFLAGS 2016-10-20 10:43:02 -07:00
Pavel Roskin
0422734fc7 Merge EXTRA_DEFINES and EXTRA_INCLUDES into AM_CPPFLAGS
AM_CPPFLAGS is a documented Automake variable for C preprocessor flags
that should not be overridden when compiling the package.

There is no need to have two additional variables that are ultimately
merged into AM_CPPFLAGS.

Their names are also confusing. EXTDA_DIST is a documented Automake
variable. Everything else that starts with "EXTRA" is not.
2016-10-20 10:43:02 -07:00
Pavel Roskin
6fef1e4eb5 Use const pointers in function arguments when possible 2016-10-17 08:54:07 -07:00
Pavel Roskin
c3b99de739 Fix wrong comments in sesman config printing code 2016-10-17 08:54:07 -07:00
Pavel Roskin
bf08892622 Fix incorrect description of auth_userpass() return value 2016-10-17 08:54:07 -07:00
Pavel Roskin
a618d4f757 Don't use final newline in log calls, it's already appended 2016-10-17 08:54:07 -07:00
Pavel Roskin
424cef464b Log malloc errors with LOG_LEVEL_ERROR 2016-10-17 08:38:22 -07:00
Pavel Roskin
945833a94f Don't close socket in scp_process_start(), the caller closes it 2016-09-08 20:26:19 -07:00
Pavel Roskin
f7c27f05cf g_term_event is a wait object, not TCP socket, delete it correctly 2016-09-08 20:26:19 -07:00
Pavel Roskin
931fb90832 sesrun: remove unused g_sck and write-only g_pid 2016-09-08 20:26:19 -07:00