Commit Graph

4818 Commits

Author SHA1 Message Date
matt335672
82c95faaa9 Allow a cppcheck check_level to be specified
Version 2.14.0 of cppcheck generates errors relating to the
check level (e.g.):-

    common/base64.c:0:0: information: Limiting analysis of branches. Use --check-level=exhaustive to analyze all branches. [normalCheckLevelMaxBranches]

This does not happen with the same sources (commit
f781962a55) under 2.13.0.

This PR disables the warnings above for 2.14.0, but also allows a '-f'
argument to be passed in to request an exhaustive test. This could be used
(for example) before a major release. An exhaustive test takes a *lot*
longer. The first run with a git runner was around an hour.

The --check-level=flag was only added for 2.11.0, and so this now needs
a version check.
2024-09-02 15:36:50 +01:00
matt335672
eab3cbb1d5 Bump CI tools versions
- cppcheck 2.13.0 -> 2.15.0
- astyle 3.4.12 -> 3.4.14

Release notes
- https://github.com/danmar/cppcheck/releases/tag/2.14.0
- https://github.com/danmar/cppcheck/releases/tag/2.14.1
- https://github.com/danmar/cppcheck/releases/tag/2.14.2
- https://github.com/danmar/cppcheck/releases/tag/2.15.0
- https://astyle.sourceforge.net/notes.html

Later versions of astyle up to 3.5.1 have (currently) a problem with
align-pointer=name which confuses multiplication with a
pointer-dereference. See https://sourceforge.net/p/astyle/bugs/572/
2024-09-02 15:36:50 +01:00
matt335672
af22422260 Make scripts/install_cppcheck.sh shellcheck-compatible 2024-09-02 15:36:50 +01:00
matt335672
bc3f0e63f6 Update scripts/install_cppcheck.sh for v2.15.0
Remove the setting of CPPFLAGS for cppcheck v2.15.0 as this
upsets the setting of FILESDIR
2024-09-02 15:27:34 +01:00
matt335672
8f21f43768
Merge pull request #3198 from matt335672/add_pointer_guards
Add guards to xrdp_mm_module_cleanup
2024-08-26 16:06:38 +01:00
metalefty
5029bd12cd
Merge pull request #3221 from metalefty/x264-param
tconfig: fix setting default value and refine logging
2024-08-25 01:23:53 +09:00
Koichiro Iwao
b9d593bc11 tconfig: refine logging 2024-08-24 12:43:58 +09:00
Koichiro Iwao
16ef3dc3a8 tconfig: set proper default value for fps_den 2024-08-24 00:07:11 +09:00
metalefty
854d060917
Merge pull request #3214 from metalefty/x264-params
GFX: configurable x264 parameters
2024-08-23 14:24:41 +09:00
Koichiro Iwao
6aeb364c8d x264: Update x264 encoding parameters 2024-08-23 14:01:19 +09:00
Koichiro Iwao
010b6a3dbf x264: apply encoding parameters per connection type 2024-08-23 10:41:04 +09:00
Koichiro Iwao
d50c2fd4e4 tconfig: Makefile changes 2024-08-23 10:40:58 +09:00
Koichiro Iwao
b3513ba8df tconfig: add new toml config parser for gfx.toml 2024-08-23 10:40:44 +09:00
matt335672
2ebe6d1b6c
Merge pull request #3209 from matt335672/fix_bad_cache_message
Fix misreported cache size
2024-08-19 09:23:41 +01:00
matt335672
3bfa59472e Fix misreported cache size
Printed offscreen bitmap cache size is in bytes, not MB.
2024-08-16 11:18:15 +01:00
matt335672
9f59c6aafc
Merge pull request #3206 from matt335672/ubuntu_2404_ci
Make xrdp compatible with github runner ubuntu-24.04
2024-08-15 12:14:42 +01:00
matt335672
2aeec83bab Remove unnecessary autoconf AC_C_CONST macro 2024-08-15 11:48:23 +01:00
matt335672
c0a13e4471 Add additional dependency for configure for cppcheck CI 2024-08-15 11:48:23 +01:00
matt335672
abbc1076bc
Merge pull request #3204 from matt335672/update_librfxcodec
Update librfxcodec
2024-08-15 11:11:27 +01:00
matt335672
11be388f17 Update librfxcodec
Update librfxcodec for latest performance changes
2024-08-14 15:53:06 +01:00
matt335672
413c8c833d Add guards to xrdp_mm_module_cleanup
Adds pointer checks to less commonly used codepaths to prevent
a possible SEGV on process shutdown.
2024-08-06 13:05:14 +01:00
matt335672
ba0b6fd6fe
Merge pull request #3196 from matt335672/fix_librfxcodec_version
Fix librfxcodec version
2024-08-06 10:37:08 +01:00
matt335672
b418f657a9 Fix librfxcodec version
My bad. When I merged ba1d93930a just now.
I overwrote the version of librfxcodec with an old one. This commit
fixes that.
2024-08-06 10:10:23 +01:00
matt335672
8fd941632d
Merge pull request #3138 from matt335672/update_scancode_processing
Update scancode processing
2024-08-06 09:39:41 +01:00
matt335672
3f568b42fb Store TS_SYNC_EVENT before module load
When a connection is made to a system with the client numlock pressed, a
TS_SYNC_EVENT is sent before the module is loaded. This TS_SYNC_EVENT
correctly contains the NumLock status as 'pressed'. The event is, however,
discarded as the module isn't loaded.

When the module is loaded, a TS_SYNC_EVENT is not sent again unless
client focus is removed from the xrdp window and re-applied. As a
result, the NumLock state is incorrect unless this is done.

This commit stores the last TS_SYNC_EVENT sent before a module is
loaded. When the module is loaded, the sync state can be correctly
communicated to the module.
2024-08-05 10:58:09 +01:00
matt335672
ba1d93930a Allow keycode set to be specified for the X server
This commit allows a keycode_set to be specified as a module parameter
in xrdp.ini. This has the following effects:-
1) xrdp loads the specified keycode set for mapping RDP scancodes to
   X11 keycodes. These are then passed to xorgxrdp as part of key press/
   key release events.
2) The name of the XKB rules which use the specified keycode set are
   passed to xorgxrdp so that XKB can be configured with rules which
   match the chosen keycodes.

The effect is to remove all keycode set dependencies from xorgxrdp.
Normally evdev rules and evdev keycodes will be used but base rules and
base keycodes can be used instead for applications that require them.
Also, any systems which do not ship the evdev rules can be made to
work with base rules.
2024-08-05 10:58:09 +01:00
matt335672
c9a2039858 Move and rename xrdp_load_keyboard_layout()
xrdp_load_keyboard_layout() is used exclusively by the xup module to
work out the parameters to pass to xorgxrdp for XKB. This function
does not need to be called locally from the SEC module.

This commit moves the function to xrdp/lang.c and renames it as
xrdp_init_xkb_layout(). The module interface is modified so that xup can
call this function. Other modules do not need to call it.
2024-08-05 10:44:10 +01:00
matt335672
d83fc8a93f Add xrdp_scancode_defs.h
Add a development header xrdp_scancode_defs.h which contains
common scancode definitions for xrdp and xorgxrdp
2024-08-05 10:44:10 +01:00
matt335672
37348d362c Regenerate keymaps
Regenerate keymaps with pause key and ABNT2 keypad point
keys added.
2024-08-05 10:44:10 +01:00
matt335672
dc696f5b7f Add missing scancode map for ABNT2 KPPT
The Brazilian ABNT2 Keyboard layout contains a keypad
decimal key which doesn't exist on other keypads:-

https://www.kbdlayout.info/kbdbr/virtualkeys

This key is curently mapped in xorgxrdp to keycode 134 (basic mapping),
but isn't present in the scancode map. It needs to be added so that it
is available to VNC sessions and will be mapped for xorgxrdp when we
move to evdev keycode mappings.
2024-08-05 10:44:10 +01:00
matt335672
7fe5b3ea34 Move pause key processing from xorgxrdp
This commit moves processing of the pause key from xorgxrdp
back to xrdp itself, so that the key can be passed to the VNC
backend.
2024-08-05 10:44:10 +01:00
matt335672
5779edd23f Replace magic numbers in keyboard code with defs
- All scancode definitions are moved to scancode.h
- Magic numbers are replaced where applicable with definitions
2024-08-05 10:44:10 +01:00
matt335672
ef14039c62 Use correct names for key events
Replace definitions in ms-rdpbcgr.h marked as TODO with the
names defined in [MS-RDPBCGR]

Some other simplifications around the fake Unicode event processing
have also been made.
2024-08-05 10:44:10 +01:00
matt335672
43d6db45ed Add module test for scancode index conversions 2024-08-05 10:44:10 +01:00
matt335672
c91ef80ca9 Implement scancode indexing
The mapping from scancodes to the indexes used in xrdp_keymap
is not well designed and contains an implicit dependency on
keycode values.

This mapping is alse slightly different from the index used for
the 'keys' map in the xrdp_wm structure.

This commit introduces support for mapping scancodes directly
to 'scancode indexes' suitable for indexing into both structures.

Some renaming is also done; [MS-RDPBCGR] uses the terms scancode
and keyCode interchangeably. An effort is made to use key_code for a
raw value from a TS_KEYBOARD_EVENT, and scancode for a value which is
produced by the scancode module.
2024-08-05 10:44:10 +01:00
matt335672
d82a172b55
Merge pull request #3173 from matt335672/chansrv_clip_fixes
Chansrv clip fixes
2024-08-05 09:49:08 +01:00
matt335672
0f6e731524 clipboard: Allow a file read to return 0 for EOF
When used with a FreeRDP client on Linux, a file copy operation from
the clipboard detects end-of-file by a read returning 0 bytes. This is
currently marked as an error.

It is assumed that mstsc.exe detects end-of-file in another way, which
is why this has not been found before.
2024-08-02 12:41:20 +01:00
matt335672
34b5582460 Remove unnecessary copy from clipboard_get_files()
The routine clipboard_get_files() parses a potentially long string,
and copies portions of it into a temporary buffer. This buffer is then
passed to clipboard_get_file() as pointer + length;

The buffer is inadequately sized for very long filenames which may
approach XFS_MAXFILENAMELEN in length. This can cause chansrv to fail
when the user copies such filenames.

It turns out the buffer is unnecessary, as the filenames can be
passed directly into clipboard_get_file() from the source string,
using pointer + length. This avoids the length limitation entirely.
2024-08-02 12:41:20 +01:00
matt335672
c3f7eec4f5 Allow for longer filenames from the redirector.
This commit ensures that filenames up to the maximum size supported
by our xfs can be supported.
2024-08-02 12:41:20 +01:00
matt335672
a90228241d Remove hard-coded filename limit for clipboard file lists
The limit of 256 characters for clipboard files is limiting for
many Asian locales, particularly as '%xx' notation is used to
communicate bytes with bit 7 set.
2024-08-02 12:41:20 +01:00
matt335672
d8b5435710 Dynamically allocate XFS filesystem names
Replace the 256 byte buffer used for names in the XFS filesystem with a
dynamically allocated buffer.

The define XFS_MAXFILENAMELEN which used to be 255 has been retained,
but bumped to 1023. This value is no longer used for long-lived
allocations, but is used in chansrv_fuse.c for maintaining state
information for in-fligh I/O requests.
2024-08-02 12:41:20 +01:00
metalefty
f1d3b21177
Merge pull request #3189 from metalefty/tarball
Include {xrdp,sesman}.ini.in instead of substituted .ini in tarball
2024-08-01 21:17:43 +09:00
Koichiro Iwao
5e95fc0cb3 Include {xrdp,sesman}.ini.in instead of substituted .ini in tarball
These config files are intended to be substituted during the build
process. The substituted .ini files should not be included in release
tarballs.

Fixes:  #3187
(cherry picked from commit 19bacc6e49)
2024-08-01 20:40:25 +09:00
metalefty
ecebe4588a
Merge pull request #2973 from metalefty/compression-level-options
GFX: selectable lossy compression levels
2024-07-30 10:22:20 +09:00
matt335672
597d30b6e2
Merge pull request #3172 from matt335672/fix_potential_name_overflow
Fix potential name buffer overflows in redirector
2024-07-23 12:29:03 +01:00
matt335672
c9e84dc16c Fix potential name buffer overflows in redirector
The state buffers used by the following structs in chansrv_fuse.c
are one byte too small for filenames of length XFS_MAXFILENAMELEN:-
- struct state_lookup
- struct state_create
- struct state_rename

In practice, there is no runtime danger, as XFS_MAXFILENAMELEN is 255,
and these buffers will be followed by non-byte aligned data. Nevertheless
this should be fixed to prevent problems if the value is changed.
2024-07-22 14:44:58 +01:00
matt335672
4bfeb668e1
Merge pull request #3170 from matt335672/fix_missing_pre_session_ipaddr
sesman: Copy IP address to pre_session_item struct
2024-07-22 09:46:08 +01:00
matt335672
a4f57572e6 sesman: Copy IP address to pre_session_item struct
struct pre_session_item has an entry for the start_ip_addr which is not
being filled in. This is not normally needed, as the IP address of the
session is passed into the session another way, but it is needed if the
session selection Policy contains the 'I' selector.
2024-07-19 11:57:55 +01:00
matt335672
b6407a9bf9
Merge pull request #3143 from matt335672/remove_licensing_exchange
Remove Licensing exchange
2024-07-15 09:02:32 +01:00
jsorg71
2a8eea90de
Merge pull request #3161 from jsorg71/link1
link error dlclose, use DLOPEN_LIBS
2024-07-13 22:46:26 -07:00