Showing preview only (6,546K chars total). Download the full file or copy to clipboard to get everything.
Repository: neutrinolabs/xrdp
Branch: devel
Commit: b9742d94f729
Files: 691
Total size: 6.1 MB
Directory structure:
gitextract_vzhdixoe/
├── .cirrus.yml
├── .github/
│ ├── FUNDING.yml
│ ├── ISSUE_TEMPLATE/
│ │ ├── bug_report.yml
│ │ └── config.yml
│ └── workflows/
│ ├── build.yml
│ ├── coverity.yml
│ └── release-tarball.yml
├── .gitignore
├── .gitmodules
├── COPYING
├── Makefile.am
├── NEWS.md
├── README.md
├── SECURITY.md
├── astyle_config.as
├── bootstrap
├── coding_style.md
├── common/
│ ├── Makefile.am
│ ├── arch.h
│ ├── base64.c
│ ├── base64.h
│ ├── channel_defs.h
│ ├── defines.h
│ ├── fifo.c
│ ├── fifo.h
│ ├── file.c
│ ├── file.h
│ ├── guid.c
│ ├── guid.h
│ ├── list.c
│ ├── list.h
│ ├── list16.c
│ ├── list16.h
│ ├── log.c
│ ├── log.h
│ ├── ms-erref.h
│ ├── ms-fscc.h
│ ├── ms-rdpbcgr.h
│ ├── ms-rdpeclip.h
│ ├── ms-rdpedisp.h
│ ├── ms-rdpefs.h
│ ├── ms-rdpegdi.h
│ ├── ms-rdpele.h
│ ├── ms-rdperp.h
│ ├── ms-smb2.h
│ ├── os_calls.c
│ ├── os_calls.h
│ ├── parse.c
│ ├── parse.h
│ ├── pixman-region.c
│ ├── pixman-region.h
│ ├── pixman-region16.c
│ ├── rail.h
│ ├── scancode.c
│ ├── scancode.h
│ ├── set_int.c
│ ├── set_int.h
│ ├── ssl_calls.c
│ ├── ssl_calls.h
│ ├── string_calls.c
│ ├── string_calls.h
│ ├── thread_calls.c
│ ├── thread_calls.h
│ ├── timers.c
│ ├── timers.h
│ ├── trans.c
│ ├── trans.h
│ ├── unicode_defines.h
│ ├── xrdp_client_info.h
│ ├── xrdp_constants.h
│ ├── xrdp_rail.h
│ ├── xrdp_scancode_defs.h
│ ├── xrdp_sockets.h
│ └── xup_client_info.h
├── configure.ac
├── docs/
│ ├── Makefile.am
│ └── man/
│ ├── .gitignore
│ ├── Makefile.am
│ ├── gfx.toml.5.in
│ ├── sesman.ini.5.in
│ ├── xrdp-chansrv.8.in
│ ├── xrdp-dis.1.in
│ ├── xrdp-dumpfv1.8.in
│ ├── xrdp-genkeymap.8.in
│ ├── xrdp-keygen.8.in
│ ├── xrdp-km.toml.5.in
│ ├── xrdp-mkfv1.8.in
│ ├── xrdp-sesadmin.8.in
│ ├── xrdp-sesman.8.in
│ ├── xrdp-sesrun.8.in
│ ├── xrdp.8.in
│ └── xrdp.ini.5.in
├── fontutils/
│ ├── Makefile.am
│ ├── README_fv1.txt
│ ├── dumpfv1.c
│ ├── fv1.c
│ ├── fv1.h
│ ├── mkfv1.c
│ └── windows/
│ ├── .gitignore
│ ├── Makefile
│ └── fontdump.c
├── genkeymap/
│ ├── Makefile.am
│ ├── dump-keymaps.sh
│ ├── genkeymap.c
│ └── readme.txt
├── instfiles/
│ ├── Makefile.am
│ ├── default/
│ │ ├── Makefile.am
│ │ └── xrdp
│ ├── init.d/
│ │ ├── Makefile.am
│ │ └── xrdp
│ ├── keymap-names.txt
│ ├── km-00000405.toml
│ ├── km-00000406.toml
│ ├── km-00000407.ini
│ ├── km-00000407.toml
│ ├── km-00000409.toml
│ ├── km-0000040a.toml
│ ├── km-0000040b.toml
│ ├── km-0000040c.toml
│ ├── km-0000040e.toml
│ ├── km-00000410.ini
│ ├── km-00000410.toml
│ ├── km-00000411.ini
│ ├── km-00000411.toml
│ ├── km-00000412.toml
│ ├── km-00000414.toml
│ ├── km-00000415.ini
│ ├── km-00000415.toml
│ ├── km-00000416.toml
│ ├── km-00000419.ini
│ ├── km-00000419.toml
│ ├── km-0000041d.ini
│ ├── km-0000041d.toml
│ ├── km-00000424.toml
│ ├── km-00000426.toml
│ ├── km-00000807.toml
│ ├── km-00000809.ini
│ ├── km-00000809.toml
│ ├── km-0000080a.toml
│ ├── km-0000080c.toml
│ ├── km-00000813.toml
│ ├── km-00000816.ini
│ ├── km-00000816.toml
│ ├── km-0000100c.toml
│ ├── km-00010409.ini
│ ├── km-00010409.toml
│ ├── km-00010426.toml
│ ├── km-00060409.toml
│ ├── km-19360409.ini
│ ├── km-19360409.toml
│ ├── pam.d/
│ │ ├── Makefile.am
│ │ ├── mkpamrules
│ │ ├── xrdp-sesman.arch
│ │ ├── xrdp-sesman.debian
│ │ ├── xrdp-sesman.freebsd
│ │ ├── xrdp-sesman.macos
│ │ ├── xrdp-sesman.redhat
│ │ ├── xrdp-sesman.suse
│ │ ├── xrdp-sesman.system
│ │ └── xrdp-sesman.unix
│ ├── pulse/
│ │ ├── Makefile.am
│ │ └── default.pa
│ ├── rc.d/
│ │ ├── Makefile.am
│ │ ├── xrdp
│ │ └── xrdp-sesman
│ ├── xrdp-sesman.service.in
│ └── xrdp.service.in
├── keygen/
│ ├── Makefile.am
│ ├── keygen.c
│ └── openssl.conf
├── libipm/
│ ├── Doxyfile
│ ├── Makefile.am
│ ├── ccp.c
│ ├── ccp.h
│ ├── ccp_application_types.c
│ ├── ccp_application_types.h
│ ├── eicp.c
│ ├── eicp.h
│ ├── ercp.c
│ ├── ercp.h
│ ├── libipm.c
│ ├── libipm.h
│ ├── libipm_facilities.h
│ ├── libipm_private.h
│ ├── libipm_recv.c
│ ├── libipm_send.c
│ ├── scp.c
│ ├── scp.h
│ ├── scp_application_types.c
│ ├── scp_application_types.h
│ ├── scp_sync.c
│ └── scp_sync.h
├── libxrdp/
│ ├── Makefile.am
│ ├── libxrdp.c
│ ├── libxrdp.h
│ ├── libxrdpinc.h
│ ├── xrdp_bitmap32_compress.c
│ ├── xrdp_bitmap_compress.c
│ ├── xrdp_caps.c
│ ├── xrdp_channel.c
│ ├── xrdp_channel.h
│ ├── xrdp_fastpath.c
│ ├── xrdp_iso.c
│ ├── xrdp_jpeg_compress.c
│ ├── xrdp_mcs.c
│ ├── xrdp_mppc_enc.c
│ ├── xrdp_orders.c
│ ├── xrdp_orders_rail.c
│ ├── xrdp_orders_rail.h
│ ├── xrdp_rdp.c
│ ├── xrdp_sec.c
│ └── xrdp_surface.c
├── m4/
│ ├── .gitignore
│ ├── ax_append_compile_flags.m4
│ ├── ax_append_flag.m4
│ ├── ax_cflags_warn_all.m4
│ ├── ax_check_compile_flag.m4
│ ├── ax_gcc_func_attribute.m4
│ ├── ax_require_defined.m4
│ ├── ax_type_socklen_t.m4
│ ├── axrdp.m4
│ └── pkg.m4
├── mc/
│ ├── Makefile.am
│ ├── mc.c
│ └── mc.h
├── neutrinordp/
│ ├── Makefile.am
│ ├── xrdp-color.c
│ ├── xrdp-color.h
│ ├── xrdp-neutrinordp.c
│ └── xrdp-neutrinordp.h
├── pkgconfig/
│ ├── .gitignore
│ ├── Makefile.am
│ ├── xrdp-uninstalled.pc.in
│ └── xrdp.pc.in
├── scripts/
│ ├── install_astyle.sh
│ ├── install_astyle_dependencies_with_apt.sh
│ ├── install_cppcheck.sh
│ ├── install_cppcheck_dependencies_with_apt.sh
│ ├── install_xrdp_build_dependencies_with_apt.sh
│ ├── run_astyle.sh
│ └── run_cppcheck.sh
├── sesman/
│ ├── Doxyfile
│ ├── Makefile.am
│ ├── chansrv/
│ │ ├── Makefile.am
│ │ ├── audin.c
│ │ ├── audin.h
│ │ ├── chansrv.c
│ │ ├── chansrv.h
│ │ ├── chansrv_common.c
│ │ ├── chansrv_common.h
│ │ ├── chansrv_config.c
│ │ ├── chansrv_config.h
│ │ ├── chansrv_fuse.c
│ │ ├── chansrv_fuse.h
│ │ ├── chansrv_xfs.c
│ │ ├── chansrv_xfs.h
│ │ ├── clipboard-notes.txt
│ │ ├── clipboard.c
│ │ ├── clipboard.h
│ │ ├── clipboard_common.h
│ │ ├── clipboard_file.c
│ │ ├── clipboard_file.h
│ │ ├── devredir.c
│ │ ├── devredir.h
│ │ ├── input.h
│ │ ├── input_ibus.c
│ │ ├── irp.c
│ │ ├── irp.h
│ │ ├── pcsc/
│ │ │ ├── .gitignore
│ │ │ ├── Makefile
│ │ │ ├── dumps/
│ │ │ │ ├── scard-begin-tranaction.txt
│ │ │ │ ├── scard-connect.txt
│ │ │ │ ├── scard-control.txt
│ │ │ │ ├── scard-disconnect.txt
│ │ │ │ ├── scard-end-tranaction.txt
│ │ │ │ ├── scard-establish-context.txt
│ │ │ │ ├── scard-get-status-change.txt
│ │ │ │ ├── scard-list-readers.txt
│ │ │ │ ├── scard-release-context.txt
│ │ │ │ ├── scard-status.txt
│ │ │ │ └── scard-transmit.txt
│ │ │ ├── wrapper/
│ │ │ │ ├── Makefile
│ │ │ │ ├── winscard-func-names.txt
│ │ │ │ ├── winscard-funcs.h
│ │ │ │ ├── winscard.c
│ │ │ │ └── winscard.def
│ │ │ └── xrdp_pcsc.c
│ │ ├── rail.c
│ │ ├── rail.h
│ │ ├── smartcard.c
│ │ ├── smartcard.h
│ │ ├── smartcard_dummy.c
│ │ ├── smartcard_internal.h
│ │ ├── smartcard_pcsc.c
│ │ ├── smartcard_pcsc.h
│ │ ├── sound.c
│ │ ├── sound.h
│ │ ├── wave-format-server.txt
│ │ ├── xcommon.c
│ │ └── xcommon.h
│ ├── display_utils.c
│ ├── display_utils.h
│ ├── eicp_process.c
│ ├── eicp_process.h
│ ├── ercp_process.c
│ ├── ercp_process.h
│ ├── libsesman/
│ │ ├── Makefile.am
│ │ ├── sesman_access.c
│ │ ├── sesman_access.h
│ │ ├── sesman_auth.h
│ │ ├── sesman_clip_restrict.c
│ │ ├── sesman_clip_restrict.h
│ │ ├── sesman_config.c
│ │ ├── sesman_config.h
│ │ ├── verify_user.c
│ │ ├── verify_user_bsd.c
│ │ ├── verify_user_kerberos.c
│ │ ├── verify_user_pam.c
│ │ └── verify_user_pam_userpass.c
│ ├── lock_uds.c
│ ├── lock_uds.h
│ ├── notes.txt
│ ├── reconnectwm.sh
│ ├── scp_list.c
│ ├── scp_list.h
│ ├── scp_process.c
│ ├── scp_process.h
│ ├── sesexec/
│ │ ├── Makefile.am
│ │ ├── ccp_server.c
│ │ ├── ccp_server.h
│ │ ├── eicp_server.c
│ │ ├── eicp_server.h
│ │ ├── env.c
│ │ ├── env.h
│ │ ├── ercp_server.c
│ │ ├── ercp_server.h
│ │ ├── login_info.c
│ │ ├── login_info.h
│ │ ├── sesexec.c
│ │ ├── sesexec.h
│ │ ├── sesexec_discover.c
│ │ ├── sesexec_discover.h
│ │ ├── session.c
│ │ ├── session.h
│ │ ├── sessionrecord.c
│ │ ├── sessionrecord.h
│ │ ├── xauth.c
│ │ ├── xauth.h
│ │ ├── xwait.c
│ │ └── xwait.h
│ ├── sesexec_control.c
│ ├── sesexec_control.h
│ ├── sesman.c
│ ├── sesman.h
│ ├── sesman.ini.in
│ ├── sesman_restart.c
│ ├── sesman_restart.h
│ ├── session_list.c
│ ├── session_list.h
│ ├── sig.c
│ ├── sig.h
│ ├── startwm.sh
│ └── tools/
│ ├── Makefile.am
│ ├── authmod.c
│ ├── authtest.c
│ ├── dis.c
│ ├── sesadmin.c
│ ├── sesrun.c
│ └── xcon.c
├── tests/
│ ├── Makefile.am
│ ├── common/
│ │ ├── Makefile.am
│ │ ├── UTF-8-test.txt
│ │ ├── test_base64.c
│ │ ├── test_common.h
│ │ ├── test_common_main.c
│ │ ├── test_fifo_calls.c
│ │ ├── test_guid.c
│ │ ├── test_list16_calls.c
│ │ ├── test_list_calls.c
│ │ ├── test_os_calls.c
│ │ ├── test_os_calls_signals.c
│ │ ├── test_parse.c
│ │ ├── test_scancode.c
│ │ ├── test_set_int.c
│ │ ├── test_ssl_calls.c
│ │ ├── test_string_calls.c
│ │ ├── test_string_calls_unicode.c
│ │ └── test_timers.c
│ ├── libipm/
│ │ ├── Makefile.am
│ │ ├── test_libipm.h
│ │ ├── test_libipm_main.c
│ │ ├── test_libipm_recv_calls.c
│ │ └── test_libipm_send_calls.c
│ ├── libxrdp/
│ │ ├── Makefile.am
│ │ ├── test_libxrdp.h
│ │ ├── test_libxrdp_main.c
│ │ ├── test_libxrdp_process_monitor_stream.c
│ │ └── test_xrdp_sec_process_mcs_data_monitors.c
│ ├── memtest/
│ │ ├── Makefile.am
│ │ ├── libmem.c
│ │ ├── libmem.h
│ │ └── memtest.c
│ ├── readme.txt
│ └── xrdp/
│ ├── Makefile.am
│ ├── gfx/
│ │ ├── gfx.toml
│ │ ├── gfx_codec_h264_only.toml
│ │ ├── gfx_codec_h264_preferred.toml
│ │ ├── gfx_codec_order_undefined.toml
│ │ ├── gfx_codec_rfx_only.toml
│ │ ├── gfx_codec_rfx_preferred.toml
│ │ ├── gfx_codec_rfx_preferred_odd.toml
│ │ ├── gfx_h264_encoder_invalid.toml
│ │ ├── gfx_h264_encoder_openh264.toml
│ │ ├── gfx_h264_encoder_undefined.toml
│ │ ├── gfx_h264_encoder_x264.toml
│ │ └── gfx_missing_h264.toml
│ ├── test_bitmap_load.c
│ ├── test_tconfig.c
│ ├── test_xrdp.h
│ ├── test_xrdp_egfx.c
│ ├── test_xrdp_keymap.c
│ ├── test_xrdp_main.c
│ └── test_xrdp_region.c
├── third_party/
│ ├── COPYING-THIRD-PARTY
│ ├── Makefile.am
│ ├── Makefile.copying
│ ├── README.md
│ ├── copying_third_party.h
│ └── tomlc99/
│ ├── .editorconfig
│ ├── .gitignore
│ ├── LICENSE
│ ├── Makefile.am
│ ├── README.md
│ ├── libtoml.pc.sample
│ ├── sample.toml
│ ├── stdex/
│ │ ├── .gitignore
│ │ ├── RUN.sh
│ │ ├── arr1.toml
│ │ ├── arr1.toml.res
│ │ ├── arr2.toml
│ │ ├── arr2.toml.res
│ │ ├── arrtab1.toml
│ │ ├── arrtab1.toml.res
│ │ ├── arrtab2.toml
│ │ ├── arrtab2.toml.res
│ │ ├── arrtab3.toml
│ │ ├── arrtab3.toml.res
│ │ ├── arrtab4.toml
│ │ ├── arrtab4.toml.res
│ │ ├── arrtab5.toml
│ │ ├── arrtab5.toml.res
│ │ ├── arrtab6.toml
│ │ ├── arrtab6.toml.res
│ │ ├── arrtab7.toml
│ │ ├── arrtab7.toml.res
│ │ ├── bool1.toml
│ │ ├── bool1.toml.res
│ │ ├── comment.toml
│ │ ├── comment.toml.res
│ │ ├── float1.toml
│ │ ├── float1.toml.res
│ │ ├── float2.toml
│ │ ├── float2.toml.res
│ │ ├── float3.toml
│ │ ├── float3.toml.res
│ │ ├── float4.toml
│ │ ├── float4.toml.res
│ │ ├── float5.toml
│ │ ├── float5.toml.res
│ │ ├── float6.toml
│ │ ├── float6.toml.res
│ │ ├── inlinetab1.toml
│ │ ├── inlinetab1.toml.res
│ │ ├── inlinetab2.toml
│ │ ├── inlinetab2.toml.res
│ │ ├── inlinetab3.toml
│ │ ├── inlinetab3.toml.res
│ │ ├── int0.toml
│ │ ├── int0.toml.res
│ │ ├── int1.toml
│ │ ├── int1.toml.res
│ │ ├── keys00.toml
│ │ ├── keys00.toml.res
│ │ ├── keys01.toml
│ │ ├── keys01.toml.res
│ │ ├── keys02.toml
│ │ ├── keys02.toml.res
│ │ ├── keys03.toml
│ │ ├── keys03.toml.res
│ │ ├── keys04.toml
│ │ ├── keys04.toml.res
│ │ ├── keys05.toml
│ │ ├── keys05.toml.res
│ │ ├── keys06.toml
│ │ ├── keys06.toml.res
│ │ ├── keys07.toml
│ │ ├── keys07.toml.res
│ │ ├── keys08.toml
│ │ ├── keys08.toml.res
│ │ ├── keys09.toml
│ │ ├── keys09.toml.res
│ │ ├── keys10.toml
│ │ ├── keys10.toml.res
│ │ ├── keys11.toml
│ │ ├── keys11.toml.res
│ │ ├── keys12.toml
│ │ ├── keys12.toml.res
│ │ ├── kvpair0.toml
│ │ ├── kvpair0.toml.res
│ │ ├── kvpair1.toml
│ │ ├── kvpair1.toml.res
│ │ ├── kvpair2.toml
│ │ ├── kvpair2.toml.res
│ │ ├── string0.toml
│ │ ├── string0.toml.res
│ │ ├── string1.toml
│ │ ├── string1.toml.res
│ │ ├── string3.toml
│ │ ├── string3.toml.res
│ │ ├── string4.toml
│ │ ├── string4.toml.res
│ │ ├── string5.toml
│ │ ├── string5.toml.res
│ │ ├── string6.toml
│ │ ├── string6.toml.res
│ │ ├── string7.toml
│ │ ├── string7.toml.res
│ │ ├── string8.toml
│ │ ├── string8.toml.res
│ │ ├── tab01.toml
│ │ ├── tab01.toml.res
│ │ ├── tab02.toml
│ │ ├── tab02.toml.res
│ │ ├── tab03.toml
│ │ ├── tab03.toml.res
│ │ ├── tab04.toml
│ │ ├── tab04.toml.res
│ │ ├── tab05.toml
│ │ ├── tab05.toml.res
│ │ ├── tab06.toml
│ │ ├── tab06.toml.res
│ │ ├── tab07.toml
│ │ ├── tab07.toml.res
│ │ ├── tab08.toml
│ │ ├── tab08.toml.res
│ │ ├── tab09.toml
│ │ ├── tab09.toml.res
│ │ ├── tab10.toml
│ │ ├── tab10.toml.res
│ │ ├── tab11.toml
│ │ ├── tab11.toml.res
│ │ ├── ts1.toml
│ │ ├── ts1.toml.res
│ │ ├── ts2.toml
│ │ ├── ts2.toml.res
│ │ ├── ts3.toml
│ │ ├── ts3.toml.res
│ │ ├── ts4.toml
│ │ ├── ts4.toml.res
│ │ ├── ts5.toml
│ │ └── ts5.toml.res
│ ├── test1/
│ │ ├── .gitignore
│ │ ├── README.md
│ │ ├── build.sh
│ │ ├── extra/
│ │ │ ├── array_of_tables.toml
│ │ │ ├── inline_array.toml
│ │ │ └── inline_table.toml
│ │ └── run.sh
│ ├── test2/
│ │ ├── .gitignore
│ │ ├── Note.txt
│ │ ├── build.sh
│ │ └── run.sh
│ ├── toml.c
│ ├── toml.h
│ ├── toml_cat.c
│ ├── toml_json.c
│ ├── toml_sample.c
│ └── unittest/
│ └── t1.c
├── tools/
│ ├── Makefile.am
│ ├── chkpriv/
│ │ ├── Makefile.am
│ │ ├── xrdp-chkpriv.in
│ │ └── xrdp-droppriv.c
│ └── devel/
│ ├── Makefile.am
│ ├── gtcp_proxy/
│ │ ├── README.txt
│ │ ├── gtcp-proxy.c
│ │ ├── gtcp.c
│ │ ├── gtcp.h
│ │ └── hexdump.c
│ └── tcp_proxy/
│ ├── Makefile.am
│ └── main.c
├── vnc/
│ ├── Makefile.am
│ ├── rfb.c
│ ├── rfb.h
│ ├── vnc.c
│ ├── vnc.h
│ ├── vnc_clip.c
│ └── vnc_clip.h
├── vrplayer/
│ ├── README.txt
│ ├── decoder.cpp
│ ├── decoder.h
│ ├── demuxmedia.cpp
│ ├── demuxmedia.h
│ ├── dlgabout.cpp
│ ├── dlgabout.h
│ ├── dlgabout.ui
│ ├── main.cpp
│ ├── mainwindow.cpp
│ ├── mainwindow.h
│ ├── mainwindow.ui
│ ├── mediapacket.cpp
│ ├── mediapacket.h
│ ├── ourinterface.cpp
│ ├── ourinterface.h
│ ├── playaudio.cpp
│ ├── playaudio.h
│ ├── playvideo.cpp
│ ├── playvideo.h
│ └── vrplayer.pro
├── waitforx/
│ ├── Makefile.am
│ └── waitforx.c
├── xrdp/
│ ├── Makefile.am
│ ├── README.logo
│ ├── cursor0.cur
│ ├── cursor1.cur
│ ├── czech.txt
│ ├── funcs.c
│ ├── gfx.toml
│ ├── lang.c
│ ├── rdp-scan-codes.txt
│ ├── sans-10.fv1
│ ├── sans-18.fv1
│ ├── xrdp.c
│ ├── xrdp.h
│ ├── xrdp.ini.in
│ ├── xrdp_bitmap.c
│ ├── xrdp_bitmap_common.c
│ ├── xrdp_bitmap_load.c
│ ├── xrdp_cache.c
│ ├── xrdp_egfx.c
│ ├── xrdp_egfx.h
│ ├── xrdp_encoder.c
│ ├── xrdp_encoder.h
│ ├── xrdp_encoder_openh264.c
│ ├── xrdp_encoder_openh264.h
│ ├── xrdp_encoder_x264.c
│ ├── xrdp_encoder_x264.h
│ ├── xrdp_font.c
│ ├── xrdp_keyboard.toml
│ ├── xrdp_listen.c
│ ├── xrdp_login_wnd.c
│ ├── xrdp_main_utils.c
│ ├── xrdp_mm.c
│ ├── xrdp_mm.h
│ ├── xrdp_mm_ccp.c
│ ├── xrdp_painter.c
│ ├── xrdp_process.c
│ ├── xrdp_region.c
│ ├── xrdp_tconfig.c
│ ├── xrdp_tconfig.h
│ ├── xrdp_types.h
│ ├── xrdp_wm.c
│ └── xrdpwin.c
├── xrdp_accel_assist/
│ ├── Makefile.am
│ ├── encoder_headers/
│ │ ├── nvEncodeAPI_11_0.h
│ │ └── nvEncodeAPI_11_1.h
│ ├── xrdp_accel_assist.c
│ ├── xrdp_accel_assist.h
│ ├── xrdp_accel_assist_egl.c
│ ├── xrdp_accel_assist_egl.h
│ ├── xrdp_accel_assist_glx.c
│ ├── xrdp_accel_assist_glx.h
│ ├── xrdp_accel_assist_nvenc.c
│ ├── xrdp_accel_assist_nvenc.h
│ ├── xrdp_accel_assist_shaders.c
│ ├── xrdp_accel_assist_x11.c
│ └── xrdp_accel_assist_x11.h
├── xrdpapi/
│ ├── Makefile.am
│ ├── connectmon.c
│ ├── simple.c
│ ├── vrplayer.c
│ ├── vrplayer.mk
│ ├── xrdp-ssh-agent.c
│ ├── xrdpapi.c
│ └── xrdpapi.h
├── xrdpvr/
│ ├── Makefile.am
│ ├── xrdpvr.c
│ ├── xrdpvr.h
│ └── xrdpvr_internal.h
└── xup/
├── Makefile.am
├── xup.c
└── xup.h
================================================
FILE CONTENTS
================================================
================================================
FILE: .cirrus.yml
================================================
FreeBSD_task:
matrix:
env:
SSL: libressl
matrix:
freebsd_instance:
image_family: freebsd-14-3
prepare_script:
- pkg install -y $SSL git autoconf automake libtool pkgconf opus jpeg-turbo fdk-aac pixman libX11 libXfixes libXrandr libxkbfile nasm fusefs-libs3 check imlib2 freetype2 cmocka ibus
- git submodule update --init --recursive
configure_script:
- ./bootstrap
- env CPPFLAGS=-I/usr/local/include LDFLAGS=-L/usr/local/lib ./configure --localstatedir=/var --enable-strict-locations --with-pkgconfigdir=/usr/local/libdata/pkgconfig --enable-strict-locations --enable-ibus --enable-ipv6 --enable-opus --enable-jpeg --enable-fdkaac --enable-painter --enable-pixman --enable-fuse --with-imlib2 --with-freetype2
build_script:
- make -j $(sysctl -n hw.ncpu || echo 4)
check_script:
- make check
install_script:
- make install
test_script:
- /usr/local/sbin/xrdp -v
================================================
FILE: .github/FUNDING.yml
================================================
open_collective: xrdp-project
================================================
FILE: .github/ISSUE_TEMPLATE/bug_report.yml
================================================
name: "🕷️ Bug report"
description: Report errors or unexpected behavior
labels:
- "bug"
body:
- type: markdown
attributes:
value: |
Before submitting a bug, read the [FAQ](https://github.com/neutrinolabs/xrdp/wiki/Tips-and-FAQ). **In particular, on systemd-based systems. make sure you are not logged in on the console as the same user you are trying to use for xrdp**
Please do not include links to images or videos on external websites. These are not guaranteed to always be available, and could be used to compromise web browsers.
Videos hosted on github have a size limit (currently 10MB). If your video is larger than this, please upload it to https://youtube.com
- type: input
attributes:
label: xrdp version
placeholder: 0.9.20
validations:
required: true
- type: textarea
attributes:
label: Detailed xrdp version, build options
description: Copy & paste the result of `xrdp --version`. DO NOT remove `~~~` but paste the result between two `~~~`.
value: |
~~~
Paste the result between `~~~`. Please DO NOT remove `~~~`!
~~~
- type: input
attributes:
label: Operating system & version
placeholder: "Ubuntu 22.04 / AlmaLinux 9 / FreeBSD 13.2 / etc"
description: Tell us about your operating system. See PRETTY_NAME
in /etc/os-release if you don't know.
Note we are currently unable to provide direct support for Red Hat
Enterprise Linux. Either reproduce the issue on CentOS/Alma/Rocky
OS, or contact Red Hat directly for support.
validations:
required: true
- type: dropdown
attributes:
label: Installation method
description: How was xrdp installed from?
options:
- dnf / apt / zypper / pkg / etc
- Homebrew / MacPorts
- git clone & make install
- Doesn't matter
- other
validations:
required: true
- type: input
attributes:
label: Which backend do you use?
description: Tell us about xrdp backend and version you're using. Typically, it would be either Xvnc or xorgxrdp or rarely NeutrionRDP / FreeRDP.
placeholder: Xvnc (tigervnc-1.12.0-13.el9_2)
- type: input
attributes:
label: What desktop environment do you use?
description: Tell us about your desktop (e.g. GNOME / KDE / Xfce / xterm). If you're certain the bug you about to report is not desktop specific, fill "any" here.
placeholder: GNOME
- type: input
attributes:
label: Environment xrdp running on
description: Tell us whether xrdp is running on a VM, or if on a physical machine what graphics cards are installed.
- type: input
attributes:
label: What's your client?
description: If you issue occurs with specific clients, tell us the client app name, app version client os version and platform.
placeholder: Microsoft's official client from Mac App Store, running on macOS Ventura.
- type: dropdown
attributes:
label: Area(s) with issue?
description: What things had an issue? Check all that apply.
multiple: true
options:
- Audio redirection
- Authentication
- Crashes such as segfault
- Clipboard
- Compatiblity aginst clients
- Compile error
- File transfer / drive redirection
- Graphic glitches
- Keyboard / Mouse
- Network
- Performance
- Session manager (sesman)
- Smartcard
- Other
- type: textarea
attributes:
label: Steps to reproduce
placeholder: Having detailed steps helps us reproduce the bug.
validations:
required: true
- type: textarea
attributes:
label: ✔️ Expected Behavior
placeholder: What were you expecting?
validations:
required: false
- type: textarea
attributes:
label: ❌ Actual Behavior
placeholder: What happened instead?
validations:
required: false
- type: textarea
attributes:
label: Anything else?
description: Links? References? Anything that will give us more context about the issue you are encountering! We recommend attaching `xrdp.log`, `xrdp-sesman.log`, `xrdp/xorg.conf` or screenshots to clarify context.
================================================
FILE: .github/ISSUE_TEMPLATE/config.yml
================================================
contact_links:
- name: Questions
about: If you are new to xrdp and want to ask community for help, raise it as Q&A in discussion.
url: https://github.com/neutrinolabs/xrdp/discussions/new?category=q-a
================================================
FILE: .github/workflows/build.yml
================================================
name: build and test
on:
push:
branches-ignore:
- "gh-pages"
tags-ignore:
- "v0.[0-8]**"
pull_request:
branches-ignore:
- "gh-pages"
jobs:
build_and_test:
strategy:
fail-fast: false
matrix:
include:
# Minimal 64-bit arch builds
- CC: gcc
feature_set: min
arch: amd64
os: ubuntu-latest
unittests: false
DISTCHECK: false
- CC: g++
feature_set: min
arch: amd64
os: ubuntu-latest
unittests: false
DISTCHECK: false
- CC: clang
feature_set: min
arch: amd64
os: ubuntu-latest
unittests: false
DISTCHECK: false
# Maximal 64-bit arch builds
- CC: gcc
feature_set: max
arch: amd64
os: ubuntu-latest
unittests: true
DISTCHECK: true
- CC: g++
feature_set: max
arch: amd64
os: ubuntu-latest
unittests: false
DISTCHECK: false
- CC: clang
feature_set: max
arch: amd64
os: ubuntu-latest
unittests: true
DISTCHECK: true
- CC: clang
feature_set: max
arch: amd64
os: ubuntu-latest
unittests: true
DISTCHECK: false
name_extra: and AddressSanitized
CFLAGS: "-fsanitize=address -ggdb"
LDFLAGS: "-fsanitize=address"
- CC: clang
feature_set: max
arch: amd64
os: ubuntu-latest
unittests: true
DISTCHECK: false
name_extra: and UndefinedBehaviorSanitized
# -fsanitize=nullability is only available for Clang
# TODO: enable alignment
CFLAGS: "-fsanitize=undefined -fsanitize=nullability -fno-sanitize=alignment -ggdb"
LDFLAGS: "-fsanitize=undefined -fsanitize=nullability -fno-sanitize=alignment"
UBSAN_OPTIONS: print_stacktrace=1:halt_on_error=1:report_error_type=1
# Maximal debug 64-bit arch builds
# Check we can also do a static build without
# installing .a files
- CC: gcc
feature_set: max
arch: amd64
os: ubuntu-latest
unittests: true
DISTCHECK: false
name_extra: and DEBUG
CONF_FLAGS_EXTRA: "--enable-devel-all --disable-static"
# Maximal 32-bit arch builds
- CC: gcc
feature_set: max
arch: i386
os: ubuntu-latest
unittests: true
DISTCHECK: false
name_extra: for 32-bit arch (legacy OS)
CFLAGS: "-m32"
LDFLAGS: "-m32"
- CC: g++
feature_set: max
arch: i386
os: ubuntu-latest
unittests: false
DISTCHECK: false
name_extra: for 32-bit arch (legacy OS)
CFLAGS: "-m32"
LDFLAGS: "-m32"
- CC: clang
feature_set: max
arch: i386
os: ubuntu-latest
unittests: true
DISTCHECK: false
name_extra: for 32-bit arch (legacy OS)
CFLAGS: "-m32"
LDFLAGS: "-m32"
name: ${{ matrix.feature_set }} features with ${{ matrix.CC }} ${{ matrix.name_extra }}
runs-on: ${{ matrix.os }}
env:
CC: ${{ matrix.CC }}
CFLAGS: ${{ matrix.CFLAGS }}
LDFLAGS: ${{ matrix.LDFLAGS }}
UBSAN_OPTIONS: ${{ matrix.UBSAN_OPTIONS }}
# HACK (2020-11-16): github actions doesn't support YAML anchors/aliases to
# avoid repeating long config values. So instead the config values are defined
# as environment variables using a naming convention with fields that come from
# the job config. These environment variables are then referenced as regular
# environment variables via the naming convention in the "define env" step to
# define the standard environment variable used in the rest of the steps.
CONF_FLAGS_amd64_min: "--disable-ipv6 --disable-jpeg --disable-fuse --disable-mp3lame
--disable-fdkaac --disable-opus --disable-rfxcodec --disable-painter
--disable-pixman --disable-utmp"
CONF_FLAGS_amd64_max: "--enable-ibus --enable-ipv6 --enable-jpeg --enable-fuse
--enable-mp3lame --enable-fdkaac --enable-opus --enable-rfxcodec
--enable-painter --enable-pixman --enable-utmp
--with-imlib2 --with-freetype2 --enable-tests --enable-x264
--enable-openh264 --enable-smartcard"
CONF_FLAGS_i386_max: "--enable-ipv6 --enable-jpeg
--enable-mp3lame --enable-opus --enable-rfxcodec
--enable-painter --disable-pixman
--with-freetype2 --host=i686-linux --enable-tests
--enable-smartcard"
PKG_CONFIG_PATH_i386: "/usr/lib/i386-linux-gnu/pkgconfig"
steps:
- name: "Define feature and arch dependent environment variables"
# Note: any "variable=value" written to the $GITHUB_ENV file will be
# defined as an environment variable for all future steps in this job
# See: https://docs.github.com/en/free-pro-team@latest/actions/reference/workflow-commands-for-github-actions#setting-an-environment-variable
run: |
echo "CONF_FLAGS=$CONF_FLAGS_${{ matrix.arch }}_${{ matrix.feature_set }} ${{ matrix.CONF_FLAGS_EXTRA }}" >> $GITHUB_ENV
echo "PKG_CONFIG_PATH=$PKG_CONFIG_PATH_${{ matrix.arch }}" >> $GITHUB_ENV
- uses: actions/checkout@v6
- name: "Install Dependencies"
# See https://github.com/actions/runner-images/issues/7192
run: |
echo RESET grub-efi/install_devices | sudo debconf-communicate grub-pc
sudo scripts/install_xrdp_build_dependencies_with_apt.sh ${{ matrix.feature_set }} ${{ matrix.arch }} --allow-downgrades --allow-remove-essential --allow-change-held-packages
- name: Bootstrap
run: ./bootstrap
- name: configure
run: ./configure $CONF_FLAGS
- name: make
run: make -j $(nproc)
- name: unittests
if: ${{ matrix.unittests }}
run: make check -j $(nproc) || (cat tests/*/test-suite.log && exit 1)
- name: distcheck
id: dist_check
if: ${{ matrix.DISTCHECK }}
run: make distcheck -j $(nproc)
- name: "Artifact: test-suite.log distcheck"
uses: actions/upload-artifact@v7
if: always() && steps.dist_check.outcome == 'failure'
with:
name: test-suite-distcheck-${{ matrix.cc }}-${{ matrix.feature_set }}
path: ${{ github.workspace }}/xrdp-*/_build/sub/tests/xrdp/test-suite.log
cppcheck:
name: cppcheck
runs-on: ubuntu-latest
env:
CC: gcc
# This is required to use a version of cppcheck other than that
# supplied with the operating system
CPPCHECK_VER: "2.20.0"
CPPCHECK_REPO: https://github.com/danmar/cppcheck.git
steps:
# Set steps.os.outputs.image to the specific OS (e.g. 'ubuntu20')
- name: Get operating system name and version.
id: os
run: echo "image=$ImageOS" >>$GITHUB_OUTPUT
shell: bash
- uses: actions/checkout@v6
- name: Cache cppcheck
uses: actions/cache@v5
env:
cache-name: cache-cppcheck
with:
path: ~/cppcheck.local
key: ${{ steps.os.outputs.image }}-build-${{ env.cache-name }}-${{ env.CPPCHECK_VER }}
- run: sudo scripts/install_cppcheck_dependencies_with_apt.sh $CPPCHECK_VER
- run: ./bootstrap
- run: ./configure
- run: scripts/install_cppcheck.sh $CPPCHECK_REPO $CPPCHECK_VER
- run: scripts/run_cppcheck.sh -v $CPPCHECK_VER
code_formatting_check:
name: code formatting check
runs-on: ubuntu-latest
env:
CC: gcc
# This is required to use a version of astyle other than that
# supplied with the operating system
ASTYLE_VER: 3.4.14
ASTYLE_REPO: https://gitlab.com/saalen/astyle.git
steps:
# Set steps.os.outputs.image to the specific OS (e.g. 'ubuntu20')
- name: Get operating system name and version.
id: os
run: echo "image=$ImageOS" >>$GITHUB_OUTPUT
shell: bash
- uses: actions/checkout@v6
- name: Cache astyle
uses: actions/cache@v5
env:
cache-name: cache-astyle
with:
path: ~/astyle.local
key: ${{ steps.os.outputs.image }}-build-${{ env.cache-name }}-${{ env.ASTYLE_VER }}
- run: sudo scripts/install_astyle_dependencies_with_apt.sh
- run: scripts/install_astyle.sh $ASTYLE_REPO $ASTYLE_VER
- name: Format code with astyle
run: scripts/run_astyle.sh -v $ASTYLE_VER
- name: Check code formatting
run: git diff --exit-code
================================================
FILE: .github/workflows/coverity.yml
================================================
name: Coverity
on:
schedule:
- cron: "0 0 * * *"
workflow_dispatch:
jobs:
scan:
name: scan
runs-on: ubuntu-latest
if: ${{ github.repository_owner == 'neutrinolabs' }}
env:
CC: gcc
CONF_FLAGS_amd64_max: "--enable-ipv6 --enable-jpeg --enable-fuse --enable-mp3lame
--enable-fdkaac --enable-opus --enable-rfxcodec --enable-painter
--enable-pixman --enable-utmp
--enable-x264 --enable-openh264
--with-imlib2 --with-freetype2 --enable-tests"
steps:
- uses: actions/checkout@v6
- name: Download Coverity build tool
run: |
wget -c -N https://scan.coverity.com/download/linux64 --post-data "token=${{ secrets.COVERITY_SCAN_TOKEN }}&project=neutrinolabs/xrdp" -O coverity_tool.tar.gz
mkdir coverity_tool
tar xzf coverity_tool.tar.gz --strip 1 -C coverity_tool
- name: "Install Dependencies"
run: |
echo RESET grub-efi/install_devices | sudo debconf-communicate grub-pc
sudo scripts/install_xrdp_build_dependencies_with_apt.sh max amd64 --allow-downgrades --allow-remove-essential --allow-change-held-packages
- name: Bootstrap
run: ./bootstrap
- name: configure
run: ./configure $CONF_FLAGS_amd64_max
- name: make
run: |
export PATH=`pwd`/coverity_tool/bin:$PATH
cov-build --dir cov-int make -j $(nproc)
- name: Submit build result to Coverity Scan
run: |
tar czvf cov.tar.gz cov-int
curl --form token=${{ secrets.COVERITY_SCAN_TOKEN }} \
--form email=meta@vmeta.jp \
--form file=@cov.tar.gz \
--form version="Commit $GITHUB_SHA" \
--form description="Build submitted via CI" \
https://scan.coverity.com/builds?project=neutrinolabs/xrdp
================================================
FILE: .github/workflows/release-tarball.yml
================================================
name: Generate release tarball
on:
workflow_dispatch:
inputs:
tag:
description: 'Tag to build'
required: true
jobs:
build:
name: Generate release tarball (${{ github.event.repository.name }} ${{ github.event.inputs.tag }})
runs-on: ubuntu-latest
steps:
- name: Set timestamp
run: echo "timestamp=$(date +'%Y%m%d-%H%M%S')" >> $GITHUB_ENV
- name: Checkout repository
uses: actions/checkout@v6
with:
ref: ${{ github.event.inputs.tag }}
- name: Install dependencies
run: |
sudo scripts/install_xrdp_build_dependencies_with_apt.sh min amd64
- name: Run make distcheck
run: |
./bootstrap
./configure
make distcheck
- name: Find generated tarball
id: find_tarball
run: |
TARBALL=$(find . -maxdepth 1 -name "*.tar.gz" | head -n 1)
if [ -z "$TARBALL" ]; then
echo "Error: No tarball found" >&2
exit 1
fi
echo "tarball=$TARBALL" >> $GITHUB_ENV
- name: Upload Artifact
uses: actions/upload-artifact@v7
with:
name: ${{ github.event.repository.name }}-${{ github.event.inputs.tag }}-${{ env.timestamp }}
path: "${{ env.tarball }}"
if-no-files-found: error
compression-level: 0
retention-days: 7
================================================
FILE: .gitignore
================================================
*~
*.a
aclocal.m4
AUTHORS
autom4te.cache/
ChangeLog
compile
config_ac.h
config_ac-h.in
config.guess
config.log
config.status
config.sub
configure
depcomp
.deps/
fontutils/xrdp-dumpfv1
fontutils/xrdp-mkfv1
genkeymap/xrdp-genkeymap
install-sh
instfiles/pam.d/xrdp-sesman
instfiles/*.service
keygen/xrdp-keygen
*.la
.libs
libtool
*.lo
*.log
ltmain.sh
Makefile
Makefile.in
missing
mkinstalldirs
NEWS
*.o
README
sesman/chansrv/xrdp-chansrv
sesman/sesexec/xrdp-sesexec
sesman/tools/xrdp-authtest
sesman/tools/xrdp-dis
sesman/tools/xrdp-sesadmin
sesman/tools/xrdp-sesrun
sesman/tools/xrdp-sestest
sesman/tools/xrdp-xcon
sesman/xrdp-sesman
sesman/sesman.ini
*.so
stamp-h1
tap-driver.sh
test-driver
tests/common/test_common
tests/libipm/test_libipm
tests/libxrdp/test_libxrdp
tests/memtest/memtest
tests/xrdp/test_xrdp
tools/devel/tcp_proxy/tcp_proxy
tools/chkpriv/xrdp-chkpriv
tools/chkpriv/xrdp-droppriv
*.trs
waitforx/waitforx
xrdp/xrdp
xrdp/xrdp.ini
xrdp_configure_options.h
xrdpapi/xrdp-xrdpapi-simple
.vscode/*
xrdp_accel_assist/xrdp-accel-assist
================================================
FILE: .gitmodules
================================================
[submodule "librfxcodec"]
path = librfxcodec
url = https://github.com/neutrinolabs/librfxcodec.git
branch = .
ignore = untracked
[submodule "libpainter"]
path = libpainter
url = https://github.com/neutrinolabs/libpainter.git
branch = .
ignore = untracked
[submodule "ulalaca"]
path = ulalaca
url = https://github.com/neutrinolabs/ulalaca-xrdp.git
================================================
FILE: COPYING
================================================
Apache License, Version 2.0
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction, and
distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by the
copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all other
entities that control, are controlled by, or are under common control
with that entity. For the purposes of this definition, "control" means
(i) the power, direct or indirect, to cause the direction or management
of such entity, whether by contract or otherwise, or (ii) ownership of
fifty percent (50%) or more of the outstanding shares, or
(iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity exercising
permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation source,
and configuration files.
"Object" form shall mean any form resulting from mechanical transformation
or translation of a Source form, including but not limited to compiled
object code, generated documentation, and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or Object form,
made available under the License, as indicated by a copyright notice that is
included in or attached to the work (an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object form,
that is based on (or derived from) the Work and for which the editorial
revisions, annotations, elaborations, or other modifications represent, as a
whole, an original work of authorship. For the purposes of this License,
Derivative Works shall not include works that remain separable from, or
merely link (or bind by name) to the interfaces of, the Work and
Derivative Works thereof.
"Contribution" shall mean any work of authorship, including the original
version of the Work and any modifications or additions to that Work or Derivative
Works thereof, that is intentionally submitted to Licensor for inclusion in the
Work by the copyright owner or by an individual or Legal Entity authorized to
submit on behalf of the copyright owner. For the purposes of this definition,
"submitted" means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems, and
issue tracking systems that are managed by, or on behalf of, the Licensor for
the purpose of discussing and improving the Work, but excluding communication
that is conspicuously marked or otherwise designated in writing by the copyright
owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity on behalf
of whom a Contribution has been received by Licensor and subsequently incorporated
within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of this License,
each Contributor hereby grants to You a perpetual, worldwide, non-exclusive,
no-charge, royalty-free, irrevocable copyright license to reproduce, prepare
Derivative Works of, publicly display, publicly perform, sublicense, and distribute
the Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of this License,
each Contributor hereby grants to You a perpetual, worldwide, non-exclusive,
no-charge, royalty-free, irrevocable (except as stated in this section) patent
license to make, have made, use, offer to sell, sell, import, and otherwise transfer
the Work, where such license applies only to those patent claims licensable by such
Contributor that are necessarily infringed by their Contribution(s) alone or by
combination of their Contribution(s) with the Work to which such Contribution(s) was
submitted. If You institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution
incorporated within the Work constitutes direct or contributory patent infringement,
then any patent licenses granted to You under this License for that Work shall
terminate as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the Work or Derivative
Works thereof in any medium, with or without modifications, and in Source or Object
form, provided that You meet the following conditions:
You must give any other recipients of the Work or Derivative Works a copy of this
License; and
You must cause any modified files to carry prominent notices stating that You changed
the files; and
You must retain, in the Source form of any Derivative Works that You distribute,
all copyright, patent, trademark, and attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of the Derivative Works; and
If the Work includes a "NOTICE" text file as part of its distribution, then any
Derivative Works that You distribute must include a readable copy of the attribution
notices contained within such NOTICE file, excluding those notices that do not pertain
to any part of the Derivative Works, in at least one of the following places: within a
NOTICE text file distributed as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or, within a display
generated by the Derivative Works, if and wherever such third-party notices normally
appear. The contents of the NOTICE file are for informational purposes only and do not
modify the License. You may add Your own attribution notices within Derivative Works
that You distribute, alongside or as an addendum to the NOTICE text from the Work,
provided that such additional attribution notices cannot be construed as modifying
the License. You may add Your own copyright statement to Your modifications and may
provide additional or different license terms and conditions for use, reproduction,
or distribution of Your modifications, or for any such Derivative Works as a whole,
provided Your use, reproduction, and distribution of the Work otherwise complies
with the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution
intentionally submitted for inclusion in the Work by You to the Licensor shall be under
the terms and conditions of this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify the terms of any
separate license agreement you may have executed with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade names, trademarks,
service marks, or product names of the Licensor, except as required for reasonable and
customary use in describing the origin of the Work and reproducing the content of
the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing,
Licensor provides the Work (and each Contributor provides its Contributions) on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied,
including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT,
MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for
determining the appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory, whether in tort
(including negligence), contract, or otherwise, unless required by applicable law
(such as deliberate and grossly negligent acts) or agreed to in writing, shall any
Contributor be liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a result of this
License or out of the use or inability to use the Work (including but not limited to
damages for loss of goodwill, work stoppage, computer failure or malfunction, or any
and all other commercial damages or losses), even if such Contributor has been advised
of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing the Work or
Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance
of support, warranty, indemnity, or other liability obligations and/or rights consistent
with this License. However, in accepting such obligations, You may act only on Your
own behalf and on Your sole responsibility, not on behalf of any other Contributor,
and only if You agree to indemnify, defend, and hold each Contributor harmless for any
liability incurred by, or claims asserted against, such Contributor by reason of your
accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONS
APPENDIX: How to apply the Apache License to your work
To apply the Apache License to your work, attach the following boilerplate notice,
with the fields enclosed by brackets "[]" replaced with your own identifying
information. (Don't include the brackets!) The text should be enclosed in the
appropriate comment syntax for the file format. We also recommend that a file or class
name and description of purpose be included on the same "printed page" as the
copyright notice for easier identification within third-party archives.
Copyright [yyyy] [name of copyright owner]
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
================================================
FILE: Makefile.am
================================================
ACLOCAL_AMFLAGS = -I m4
# Redefine the localstatedir to stop github CI defaulting to
# something like /home/runner/work/xrdp/xrdp/xrdp-0.10.80/_inst/var
#
# A path this long (50 chars) can trigger some -Werror=format-truncation
# errors when using the XRDP_SOCKET_ROOT_PATH macro to create a Unix
# domain socket name, as these names have a quite short length (108
# characters on Linux).
AM_DISTCHECK_CONFIGURE_FLAGS = \
--localstatedir=/distcheckdummy/var \
--without-systemdsystemunitdir \
--enable-strict-locations \
--enable-tests
EXTRA_DIST = \
COPYING \
README.md \
NEWS.md \
astyle_config.as \
bootstrap \
coding_style.md \
m4 \
vrplayer
if XRDP_NEUTRINORDP
NEUTRINORDPDIR = neutrinordp
else
NEUTRINORDPDIR =
endif
if XRDP_XRDPVR
XRDPVRDIR = xrdpvr
else
XRDPVRDIR =
endif
if XRDP_PAINTER
PAINTERDIR = libpainter
else
PAINTERDIR =
endif
if XRDP_RFXCODEC
RFXCODECDIR = librfxcodec
else
RFXCODECDIR =
endif
if XRDP_ULALACA
ULALACADIR = ulalaca
else
ULALACADIR =
endif
if XRDP_ACCEL
ACCELDIR = xrdp_accel_assist
else
ACCELDIR =
endif
# This should not be dictionary order but build order
SUBDIRS = \
third_party \
third_party/tomlc99 \
common \
vnc \
xup \
mc \
$(NEUTRINORDPDIR) \
libipm \
libxrdp \
$(PAINTERDIR) \
$(RFXCODECDIR) \
sesman \
xrdp \
fontutils \
keygen \
waitforx \
docs \
instfiles \
genkeymap \
xrdpapi \
pkgconfig \
$(XRDPVRDIR) \
$(ULALACADIR) \
tests \
tools \
$(ACCELDIR)
distclean-local:
-rm -f xrdp_configure_options.h
================================================
FILE: NEWS.md
================================================
# Release notes for xrdp v0.9.19 (2022/03/17)
## General announcements
* Running xrdp and xrdp-sesman on separate hosts is still supported by this release, but is now deprecated. This is not secure. A future release will replace the TCP socket used between these processes with a Unix Domain Socket, and then cross-host running will not be possible.
## New features
* Both inbound and outbound clipboards can now be restricted for text, files or images [Sponsored by @CyberTrust @clear-code and @kenhys] (#2087)
## Bug fixes
* [CVE-2022-23613](https://www.cve.org/CVERecord?id=CVE-2022-23613): Privilege escalation on xrdp-sesman (This fix is also in the out-of-band v0.9.18.1 release)
* The versions of imlib2 used on RHEL 7 and 8 are now detected correctly (#2118)
* Some situations where zombie processes could exist have been resolved (#2146, #2151, #2168)
* Some null-pointer exceptions which can happen in the logging module have been addressed (#2149)
* Some minor logging errors have been corrected (#2152)
* The signal handling in sesman has been reworked to prevent race conditions when a child exits. This has also made it possible to reliably reload the sesman configuration with SIGHUP (#1729, #2168)
## Internal changes
* Versions 0.13 and later of checklib can undefine the pre-processor symbol `HAVE_STDINT_H`. The xrdp tests now build successfully against these versions (#2124)
* OpenSSL packaging changes (#2130):-
- The OpenSSL 3 EVP interface is now fully supported
- When building against OpenSSL 3, an internal implementation of the RC4 cipher is used instead of the implementation from the OpenSSL legacy provider
- The wrapping of the OpenSSL library has been improved which should make it simpler to provide an alternative cryptographic provider in the future, if required
- The logging of TLS/non-TLS security negotiation has been improved
* cppcheck version used for CI bumped to 2.7 (#2140)
* The `s_check()` macro which is easily mis-used has been removed (#2144)
* Status values for the DRDYNVC channel are now available in `libxrdp/xrdp_channel.h`
## Changes for packagers or developers
* On OpenSSL 3 systems, there is now no need to build with the `-Wno-error=deprecated-declarations` flag
## Known issues
* On-the-fly resolution change requires the Microsoft Store version of Remote Desktop client but sometimes crashes on connect (#1869)
* xrdp's login dialog is not relocated at the center of the new resolution after on-the-fly resolution change happens (#1867)
-----------------------
# Release notes for xrdp v0.9.18.1 (2022/02/08)
This is a security fix release that includes fixes for the following privilege escalation vulnerability.
* [CVE-2022-23613: Privilege escalation on xrdp-sesman](https://www.cve.org/CVERecord?id=CVE-2022-23613)
Users who uses xrdp v0.9.17 or v0.9.18 are recommended to update to this version.
## Special thanks
Thanks to [Gilad Kleinman](https://github.com/giladkl) reporting the vulnerability and reviewing fix.
-----------------------
# Release notes for xrdp v0.9.18 (2022/01/10)
## General announcements
* Running xrdp and xrdp-sesman on separate hosts is still supported by this release, but is now deprecated. This is not secure. A future release will replace the TCP socket used between these processes with a Unix Domain Socket, and then cross-host running will not be possible.
* Special thanks for @trishume for contributing code to the RFX codec
## New features
* Backgrounds and logos on the login screen can now be zoomed and scaled (#1962)
* Small change for Alpine Linux support (#2005)
* loongarch support (#2057)
* Improved Fail2ban support (#1976)
## Bug fixes
* Logging is improved for security protocol level decisions (#1974, #1975)
* An unnecessary log error message which is always generated when running neutrinordp has been removed (#2016)
* An incorrect development log message has been fixed (#2074)
* Some informational and error messages written to the console on stdout have been removed or replaced with log messages (#2078 #2080)
* Failure to attach to the memory area shared with xorgxrdp is now logged (#2065)
* A regression in the VNC module logging which might cause a connection to drop out has been identified and fixed (#1989)
* Remote drive redirection now works if printer redirection is also requested by the client (#327)
* Some file names could not be copied from the client to the server over the clipboard. This is now fixed (#1992, #1995)
* A config value has been added which allows copy-pasting of files to work with Nautilus for GNOME 3 versions >= 3.29.92 (#1994, #1996)
* Clipboard now works properly when files can't be read (#1997 #2001)
* (xorgxrdp v0.2.18) The screen is fully refreshed after initialising shared memory which should fix black screen problems like #1964
* An incorrect initialisation reported by @qarmin has been fixed (#1909)
* Some minor memory leaks have been fixed (#2014 #2028)
* A hard hang in chansrv when copying files from the remote system has been addressed (#2032)
* Users can now capitalise username and password on the login screen if required (#2061)
* Some failed size checks in the fastpath code with `--enable-devel-streamcheck` have been addressed (#2066,#2070)
* Log level for clipboard restriction has been promoted from DEVEL DEBUG to INFO (#2088)
* A buffer overflow in the RFX codec associated with large screens has been fixed (#2087)
## Internal changes
* Some 64-bit packages are removed during the 32-bit CI build process in an attempt to make this more robust (#1985)
* Minor improvements to error checking and logging for file copy-paste (#1996)
* Now uses cppcheck 2.6 for CI builds (#2008)
* Generated systemd unit files now ignored by git (#2006)
* More internal tests (#2015)
* Some unnecessary files have been removed from the distribution (#2030)
* The `which` command in shell scripts has been replaced with `command -v` (#2067)
* Additional unit tests added for `g_file_get_size()` (#1988)
* A compiler warning with -O3 on gcc 11.1 has been addressed (#2105)
* An unused declaration for xrdp_wm_drdynvc_up has been removed (#2098)
* The SCP V0 code has been unified, which will make it easier to update and replace (#2011)
* Monitor processing unit tests for existing xrdp_sec function have been added (#1932)
* The librfxcodec has been updated as part of #2087, and also to add stack frames to assemble code to assist debugging
## Changes for packagers or developers
* The `--with-imlib2` option has been added. If xrdp is built with imlib2, the login screen supports more image formats for the background and logo, and better quality zooming and scaling (#1962)
## Known issues
* On-the-fly resolution change requires the Microsoft Store version of Remote Desktop client but sometimes crashes on connect (#1869)
* xrdp's login dialog is not relocated at the center of the new resolution after on-the-fly resolution change happens (#1867)
-----------------------
# Release notes for xrdp v0.9.17 (2021/08/31)
## General announcements
* Running xrdp and xrdp-sesman on separate hosts is still supported by this release, but is now deprecated. This is not secure. A future release will replace the TCP socket used between these processes with a Unix Domain Socket, and then cross-host running will not be possible.
## New features
* The IP address, port, and user name of NeutrinoRDP Proxy connection are logged in xrdp.log - these connections may not have a sesman log to use (#1873)
* The performance settings for NeutrinoRDP can be now configured (#1903)
* Support for Alpine Linux in startwm.sh (#1965)
* clipboard: log file transfer for the purpose of audit (#1954)
* Client's Keyboard layout now can be overridden by xrdp configuration for debugging purposes (#1952)
## Bug fixes
* PAM_USER environment variable is not set when using pam_exec module (#1882)
* Allow common channel settings to be overridden for modules as well as chansrv (#1899)
* The text only-copy/paste interface for the VNC module (used only when chansrv is not active) has been improved (#1900)
* The unsupported `tcutils` utility has been removed (#1943)
* The quality of TLS logging has been improved (#1926)
* Keyboard information is now passed correctly through NeuutrinoRDP, and can be overridden if required (#1934)
* A message is now logged in the sesman log for unsuccessful login attempts detailing the user used (#1947)
## Internal changes
* astyle formatting is now checked during CI builds (#1879)
* Generalise development build options, and add --enable-devel-streamcheck (#1887)
* Now uses cppcheck 2.5 for CI builds (#1938)
* The SCP protocol is now using a standard `struct trans` for messaging rather than its own thing (#1925)
## Changes for packagers or developers
* The `--enable-xrdpdebug` developer option has been replaced with finer-grained `--enable-devel-*` options. Consequently, specifying `--enable-xrdpdebug` is now an error (#1913)
## Known issues
* On-the-fly resolution change requires the Microsoft Store version of Remote Desktop client but sometimes crashes on connect (#1869)
* xrdp's login dialog is not relocated at the center of the new resolution after on-the-fly resolution change happens (#1867)
-----------------------
# Release notes for xrdp v0.9.16 (2021/04/30)
## New features
* On-the-fly resolution change now supported for Xvnc and Xorg (#448, #1820) - thanks to @Nexarian for this significant first contribution. See the following YouTube video for a demo.
* [Windows] https://youtu.be/cZ0ebieZHeA
* [Mac] https://youtu.be/6kfAkyLUgFY
* xrdp can now use key algorithms other than RSA for TLS (#1776)
* Do not spit on the console 2nd stage (inspired by Debian) #1762
* Unified and improved logging (#1742, #1767, #1802, #1806, #1807, #1826, #1843) - thanks to @aquesnel for this detailed work.
* Other logging level fixes (#1864)
* chansrv can now work on `DISPLAY=:0` so it can be used with x11vnc/Vino/etc sessions (#1849)
## Bug fixes
* Fix some regressions in sesman auth modules (#1769)
* Minor manpage fixes (#1787)
* Fix TS_PLAY_SOUND_PDU_DATA to set the correct frequency and duration (#1793)
* Fix password leakage to logs in NeutrinoRDP module (#1872) - thanks to @TOMATO-ONE for reporting.
## Internal changes
* cppcheck version for CI bumped to 2.4 (#1771, #1836)
* FreeBSD version for CI bumped to 12-2 (#1804)
* Support for check unit test framework added (#1843, #1860)
* FreeBSD FUSE module now compiles under CI but needs additional work (#1856)
* Compilation support added for additional Debian platforms (#1818)
* Refactoring:-
* Confusing preprocessor macro USE_NOPAM replaced with USE_PAM (#1800)
* Window manager states in xrdp executable now use symbolic constants instead of numbers (#1803)
* Documentation improvements
* KRDC added to client list (#1817)
* Platform support tier added (#1822)
* README file revised (#1863)
* Don't install test+development executables by default (#1858)
## Changes for packagers
These changes are likely to impact operating system package builders and those building xrdp from source.
* (#1843, #1860) This release introduces an additional optional compile-time dependency on the `check` unit test framework. The dependency is recommended when packaging for compile-time tests.
* (#1858) The executables `memtest` and `tcp_proxy` are no longer copied to the sbin directory on a package install.
## Known issues
* On-the-fly resolution change requires the Microsoft Store version of Remote Desktop client but sometimes crashes on connect (#1869)
* xrdp's login dialog is not relocated at the center of the new resolution after on-the-fly resolution change happens (#1867)
-----------------------
# Release notes for xrdp v0.9.15 (2020/12/28)
## New features
* Allow token sign in without autologon for SSO (#1667 #1668)
* Norwegian keyboard support (#1675)
* Improved config support for chansrv (#1635)
* Unified chansrv, sesman and libxrdp logging (#1633 #1708 #1738) - thanks to @aquesnel
* Support SUSE move to /usr/etc (#1702)
* Parameters may now be specified for user-specified shell (#1270 #1695)
* xrdp executables now allow alternative config files to be specified with -c (#1588 #1650 #1651)
* sesrun improvements (#1741)
* Drive redirection location can now be specified (#1048)
* Now compiles on RISC-V (#1761)
## Bug fixes
* Additional buffer overflow checks (#1662)
* FUSE support now builds on 32-bit platforms (#1682)
* genkeymap array size conflict fixed (#1691)
* Buffering issue with neutrinordp over a slow link fixed (#1608 1634)
* Various documentation fixes (#1704 #1741 #1755 #1759)
* Prevent PAM info message from causing authentication failure (#1727)
* Cosmetic fixes for minor issues (#1751 #1755 #1749)
* Try harder to clean up socket files on session exit (#1740 #1756)
* xrdp-chansrv become defunct in docker while file copy (#1658)
## Internal changes
* Compilation warnings with newer compilers (#1659 #1680)
* Continuation Integration checks on 32-bit platforms now include FUSE support (#1682)
* Continuation Integration builds now default to the Ubuntu Focal platform (#1666)
* FUSE type tidy-ups (#1686)
* Switch from Travis CI to GitHub Actions (#1728 #1732)
* Easier to set up console logging for utilities (#1711)
-----------------------
# Release notes for xrdp v0.9.14 (2020/08/31)
## New features
* VNC multi-monitor support if you are using a suitable Xvnc server #1343
* VNC sessions now resize by default on reconnection if you are using a suitable Xvnc server #1343
* Support Slackware for PAM #1558 #1560
* Support Programmer Dvorak Keyboard #1663
**[HEADS UP]** The VNC changes are significant. They described in more detail on the following wiki page.
* [Xvnc backend : Multi monitor and resize support](https://github.com/neutrinolabs/xrdp/wiki/Xvnc-backend-:-Multi-monitor-and-resize-support)
## Bug fixes
* Fix odd shift key behavior (workaround) #397 #1522
* Fix Xorg path in the document for Arch Linux #1448 #1529
* Fix Xorg path in the document for CentOS 8 #1646 #1647
* Fix internal username/password buffer is smaller than RDP protocol specification #1648 #1653
* Fix possible memory out-of-bounds accesses #1549
* Fix memory allocation overflow #1557
* Prevent chansrv input channels being scanned during a server reset #1595
* Ignore TS_MULTIFRAGMENTUPDATE_CAPABILITYSET from client if fp disabled #1593
* Minor manpage fixes #1611
## Other changes
* CI error fixes
* Introduce cppcheck
## Known issues
* FreeRDP 2.0.0-rc4 or later might not able to connect to xrdp due to
xrdp's bad-mannered behaviour, add `+glyph-cache` option to FreeRDP to connect #1266
* Audio redirection by MP3 codec doesn't sound with some client, use AAC instead #965
# Release notes for xrdp v0.9.13.1 (2020/06/30)
This is a security fix release that includes fixes for the following local buffer overflow vulnerability.
* [CVE-2020-4044: Local users can perform a buffer overflow attack against the xrdp-sesman service and then impersonate it](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2020-4044)
This update is recommended for all xrdp users.
## Special thanks
Thanks to [Ashley Newson](https://github.com/ashleynewson) reporting the vulnerability and reviewing fix.
-----------------------
# Release notes for xrdp v0.9.13 (2020/03/11)
This release is an intermediate bugfix release. The previous version v0.9.12 has some regressions on drive redirection.
## Bug fixes (drive redirection related)
* Fix chansrv crashes with segmentation fault (regression in #1449) #1487
* Drive redirection now supports Guacamole client #1505 #1507
* Prevent a coredump in the event of a corrupted file system #1507
* Resolve double-free in `chansrv_fuse` #1469
## Bug fixes (other)
* Fix the issue `xrdp --version | less` will show empty output #1471 #1472
* Fix some warnings found by cppcheck #1479 #1481 #1484 #1485
## Other changes
* Add FreeBSD CI test #1466
* Move Microsoft-defined constants into separate includes #1470
* Perform cppcheck during CI test #1493
* Support mousex button 8/9 #1478
## Known issues
* FreeRDP 2.0.0-rc4 or later might not able to connect to xrdp due to
xrdp's bad-mannered behaviour, add `+glyph-cache` option to FreeRDP to connect #1266
* Audio redirection by MP3 codec doesn't sound with some client, use AAC instead #965
-----------------------
# Release notes for xrdp v0.9.12 (2019/12/28)
## Bug fixes
* Fix "The log reference is NULL" error when sesman startup #1425
* Fix behavior when shmem_id changes #1439
* Make vsock config accept -1 for cid and port #1441
* Cleanup refresh rect and check stream bounds #1437
* Significant improvements in drive redirection #1449
* Fix build on macOS Catalina #1462
## Other changes
* Proprietary microphone redirection via rdpsnd is now default off
RDP compatible microphone redirection is on instead #1427
* Skip connecting to chansrv when no channels enabled #1393
* Add openSUSE's pam rules #1442
* Do not terminate xrdp daemon when caught SIGHUP #1319
## Known issues
* FreeRDP 2.0.0-rc4 or later might not able to connect to xrdp due to
xrdp's bad-mannered behaviour, add `+glyph-cache` option to FreeRDP to connect #1266
* Audio redirection by MP3 codec doesn't sound with some client, use AAC instead #965
# Release notes for xrdp v0.9.11 (2019/08/19)
## New features
* Suppress output (do not draw screen when client window is minimized) #1330
* Audio input (microphone) redirection compatible with [MS-RDPEAI](https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-rdpeai/d04ffa42-5a0f-4f80-abb1-cc26f71c9452) #1369
* Now xrdp can listen on more than one port #1124 #1366
## Bug fixes
* Fix the issue audio redirection sometimes sounds with long delay #1363
* Check term event for more responsive shutdown #1372
## Known issues
* FreeRDP 2.0.0-rc4 or later might not able to connect to xrdp due to
xrdp's bad-mannered behaviour, add `+glyph-cache` option to FreeRDP to connect #1266
* Audio redirection by MP3 codec doesn't sound with some client, use AAC instead #965
-----------------------
# Release notes for xrdp v0.9.11 (2019/08/19)
## New features
* Suppress output (do not draw screen when client window is minimized) #1330
* Audio input (microphone) redirection compatible with [MS-RDPEAI](https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-rdpeai/d04ffa42-5a0f-4f80-abb1-cc26f71c9452) #1369
* Now xrdp can listen on more than one port #1124 #1366
## Bug fixes
* Fix the issue audio redirection sometimes sounds with long delay #1363
* Check term event for more responsive shutdown #1372
## Known issues
* FreeRDP 2.0.0-rc4 or later might not able to connect to xrdp due to
xrdp's bad-mannered behaviour, add `+glyph-cache` option to FreeRDP to connect #1266
* Audio redirection by MP3 codec doesn't sound with some client, use AAC instead #965
-----------------------
# Release notes for xrdp v0.9.10 (2019/04/18)
## Special thanks
Thank you for matt335672 contributing to lots of improvements in drive redirection!
## New features
* Restrict outbound (server->client) clipboard transfer, configured in `sesman.ini` #1298
## Bug fixes
* Fix the issue libscp v1 not setting width but height twice #1293
* Fix the issue reconnecting to session causes duplicate drive entries in fuse fs #1299
* Fix default_wm and reconnect_sh refer wrong path after sesman caught SIGUP #1315 #1331
* Shutdown xrdp more responsively #1325
* Improve remote file lookup in drive redirection #996 #1327
* Overwriting & appending to existing files is are now supported #1327
## Other changes
* Add Danish Keyboard #1290
* Put xrdp- prefix to some executables appear in man page #1313
* Replace some URLs from SF.net to xrdp.org #1313
## Known issues
* FreeRDP 2.0.0-rc4 or later might not able to connect to xrdp due to
xrdp's bad-mannered behaviour, add `+glyph-cache` option to FreeRDP to connect #1266
* Audio redirection by MP3 codec doesn't sound with some client, use AAC instead #965
-----------------------
# Release notes for xrdp v0.9.9 (2018/12/25)
## Release cycle
From the next release, release cycle will be changed from quarterly to every
4 months. xrdp will be released in April, August, December.
## New features
* Disconnection by idle timeout (requires xorgxrdp v0.2.9 or later) #1227
* Glyph cache v2 (fixes no font issue on iOS/macOS/Android client) #367 #1235
## Bug fixes
* Fix xrdp-chansrv crashes caused in drive redirection #1202 #1225
* Fix build with FDK AAC v2 #1257
* Do not enable RemoteApp if the INFO_RAIL flag is not set (RDP-RDP proxy) #1253
## Other changes
* Add Spanish Latin Amarican keyboard #1237 #1240 #1244
* Dynamic channel improvements #1222 #1224
* Remove some deprecated sesman session types #1232
* Refactoring and cleanups
## Known issues
* FreeRDP 2.0.0-rc4 or later might not able to connect to xrdp due to
xrdp's bad-mannered behaviour, add `+glyph-cache` option to FreeRDP to connect #1266
* Audio redirection by MP3 codec doesn't sound with some client, use AAC instead #965
-----------------------
# Release notes for xrdp v0.9.8 (2018/09/25)
## Deprecation notice
We removed TLSv1 and TLSv1.1 from the default config. The current default is TLSv1.2
and TLSv1.3. Users can whenever re-enable these early TLS versions by editing xrdp.
To use TLSv1.3, OpenSSL or LibreSSL must support TLSv1.3. You can know the OpenSSL
or LibreSSL version by `xrdp --version` command that compiled with xrdp.
## Other topics
Pulseaudio modules has been removed from xrdp source tree since it is actually
independent and not part of xrdp. The repository has been moved to:
https://github.com/neutrinolabs/pulseaudio-module-xrdp
If you want to use audio redirection, make sure install the module separately.
## New features
* Add TLSv1.3 support #1193
## Bug fixes
* Ensure unmount redirected drive on fatal X error #1140
## Other changes
* Show more helpful message if xrdp-dis failed #1206
* Pass pulse socket name via environment variable #1198
* Fix xrdp's log path in man page #1168
# Release notes for xrdp v0.9.7 (2018/06/29)
## Deprecation notice
x11rdp has been removed from xrdp reposiory and stored in the separate repository.
Checkout [x11rdp repository](https://github.com/neutrionlabs/x11rdp) if you still need x11rdp.
In most cases, [xorgxrdp](https://github.com/neutrinolabs/xorgxrdp) can replace x11rdp.
## Bug fixes
* Fix endianness detection on ppc64el #1082
* Fix a bug xrdp file copy slow #1112 #1132
* Copy the PAM session environment for the reconnect script #1120
* Accept fullpath for DefaultWindowManager, ReconnectScript #1147
## Other changes
* Add PAM support for Arch Linux #1078
* Show OpenSSL version to '--version' CLI option #1096
* Separate x11rdp from xrdp repository #1104
* Support sesrun start xorgxrdp sessions #1108
* Show configure summary when configure is done #1126 #1134 #1137
* Less spit on the console when sesman starts #1142
* Fix memory leaks #1146
* Separate rc script for FreeBSD into xrdp and xrdp-sesman #1153
* Improve documents and helps
## Known issues
* Audio redirection by MP3 codec doesn't sound with some client, use AAC instead #965
-----------------------
# Release notes for xrdp v0.9.6 (2018/03/26)
## Compatibility notice
Exclamation mark (`!`) has been removed from comment out symbol of config files.
Use number sign (`#`) or semicolon (`;`) instead. As a result of this change, now
you can use exclamation mark as config value such as in `tls_ciphers`.
```
tls_ciphers=HIGH:!aNULL:!eNULL:!EXPORT:!RC4
```
See also: #1033
## macOS supports
Please note that xrdp still doesn't support macOS officially so far.
However, a volunteer is working on macOS compatibility.
* Generate dylibs for macOS #1015
* Add PAM support for macOS #1021
## Bug fixes
* Make listen check before daemon fork #988
* Fix xrdp sometimes become zombie processes #1000
* Include hostname in sesman password file name #1006 #1007 #1076
* Fix default startwm.sh to use bash explicitly #1009 #1049
* Fix the issue FreeBSD doesn't acknowledge terminated sessions #1016 #1030
## Other changes
* Add Swiss French keyboard #1053
* Improve perfect forward secrecy, explicitly enable ECDHE/DHE #1024 #1052 #1063
* Lots of leak fixes, cleanups and refactoring
## Known issues
* Audio redirection by MP3 codec doesn't sound with some client, use AAC instead #965
-----------------------
# Release notes for xrdp v0.9.5 (2017/12/27)
## Security fixes
* Fix local denial of service [CVE-2017-16927](http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-16927) #958 #979
## New features
* Add a new log level TRACE more verbose than DEBUG #835 #944
* SSH agent forwarding via RDP #867 #868 FreeRDP/FreeRDP#4122
* Support horizontal wheel properly #928
## Bug fixes
* Avoid use of hard-coded sesman port #895
* Workaround for corrupted display with Windows Server 2008 using NeutrinoRDP #869
* Fix glitch in audio redirection by AAC #910 #936
* Implement vsock support #930 #935 #948
* Avoid 100% CPU usage on SSL accept #956
## Other changes
* Add US Dvorak keyboard #929
* Suppress some misleading logs #964
* Add Finnish keyboard #972
* Add more user-friendlier description about Xorg config #974
* Renew pulseaudio document #984 #985
* Lots of cleanups and refactoring
## Known issues
* Audio redirection by MP3 codec doesn't sound with some client, use AAC instead #965
-----------------------
# Release notes for xrdp v0.9.4 (2017/09/28)
## New features
* Accept prefill credentials in base64 form #153 #811
* Indroduce AAC encoder to audio redirection (requires Windows 10 client)
## Bugfixes
* Fix ocasional SEGV in drive redirection #838
* Fix client's IP addresses in xrdp-sesman.log are always logged as `0.0.0.0` #878 #882
* Fix `ls_background_image` didn't accept full path #776 #853
* Fix misuse of hidelogwindow #414 #876
* Fix WTSVirtualChannelWrite return code #859
* Fix no longer needed socket files remained in the socket dir #812 #831
* Make creating socket path a bit more robust #823
## Other changes
* Add Belgian keyboard #858
* Add a PAM file for FreeBSD #824
* Several refactorings and cosmetic changes
## Known issues
* Windows 10 (1703) shows black blank screen in RemoteFX mode
* This issue is already fixed at Insider Preview build 16273
-----------------------
# Release notes for xrdp v0.9.3.1 (2017/08/16)
This release fixes a trivial packaging issue #848 occurred in v0.9.3. The issue only affects systemd systems. This release is principally for distro packagers or users who compile & install xrdp from source.
Users who running xrdp on these systems don't need to upgrade from v0.9.3 to v0.9.3.1.
* Linux systems without systemd
* non-Linux systems such as BSD operating systems
-----------------------
# Release notes for xrdp v0.9.3 (2017/07/15)
## New features
* Log user-friendly messages when certificate/privkey is inaccessible
## Bugfixes
* Now sesman sets mandatory LOGNAME environment variable #725
* Now sesman ensures socket directory present #801
* Exit with failure status if port already in use #644
* Eliminate some hard coded paths
* Fix glitches with IPv4 struct initialization #803
* Fix some keyboard layout integration (UK, Spanish)
* Fix handle OS when IPv6 disabled #714
* Fix issues around systemd session #778
* Fix protocol error when 32 bit color and non RemoteFX session #737 #804
* Fix sesadmin shows error when no sessions #797
* Fix TLS spins 100% CPU #728
* Fix Xvnc backend disconnects when some data copied to clipboard #755
* Pick up the first section if given section(domain) doesn't match anything #750
## Other changes
* Change xrdp-chansrv log path to include display number
* Optimize startwm.sh for SUSE
* Several cleanups and optimizations
## Known issues
* Windows 10 (1703) shows black blank screen in RemoteFX mode
-----------------------
# Release notes for xrdp v0.9.2 (2017/03/30)
## New features
* RemoteFX codec support is now enabled by default.
* Bitmap updates support is now enabled by default.
* TLS ciphers suites and version is now logged.
* Connected computer name is now logged.
* Switched to Xorg (xorgxrdp) as the default backend now.
* Miscellaneous RemoteFX codec mode improvements.
* Socket directory is configurable at the compile time.
## Bugfixes
* Parallels client for MacOS / iOS can now connect (audio redirection must be disabled on client or xrdp server though).
* MS RDP client for iOS can now connect using TLS security layer.
* MS RDP client for Android can now connect to xrdp.
* Large resolutions (4K) can be used with RemoteFX graphics.
* Multiple RemoteApps can be opened throguh NeutrinoRDP proxy.
* tls_ciphers in xrdp.ini is not limited to 63 chars anymore, it's variable-length.
* Fixed an issue where tls_ciphers were ignored and rdp security layer could be used instead.
* Kill disconnected sessions feature is working with Xorg (xorgxrdp) backend.
* Miscellaneous code cleanup and memory issues fixes.
-----------------------
# Release notes for xrdp v0.9.1 (2016/12/21)
## New features
* New xorgxrdp backend using existing Xorg with additional modules
* Improvements to X11rdp backend
* Support for IPv6 (disabled by default)
* Initial support for RemoteFX Codec (disabled by default)
* Support for TLS security layer (preferred over RDP layer if supported by the client)
* Support for disabling deprecated SSLv3 protocol and for selecting custom cipher suites in xrdp.ini
* Support for bidirectional fastpath (enabled in both directions by default)
* Support clients that don't support drawing orders, such as MS RDP client for Android, ChromeRDP (disabled by default)
* More configurable login screen
* Support for new virtual channels:
* rdpdr: device redirection
* rdpsnd: audio output
* cliprdr: clipboard
* xrdpvr: xrdp video redirection channel (can be used along with NeutrinoRDP client)
* Support for disabling virtual channels globally or by session type
* Allow to specify the path for backends (Xorg, X11rdp, Xvnc)
* Added files for systemd support
* Multi-monitor support
* xrdp-chansrv stroes logs in `${XDG_DATA_HOME}/xrdp` now
## Security fixes
* User's password could be recovered from the Xvnc password file
* X11 authentication was not used
================================================
FILE: README.md
================================================
[](https://github.com/neutrinolabs/xrdp/actions)
[](https://gitter.im/neutrinolabs/xrdp-questions)

[](https://github.com/neutrinolabs/xrdp/releases)
# xrdp - an open source RDP server
## Overview
**xrdp** provides a graphical login to remote machines using Microsoft
Remote Desktop Protocol (RDP). xrdp accepts connections from a variety of RDP clients:
* FreeRDP
* rdesktop
* KRDC
* NeutrinoRDP
* Windows MSTSC (Microsoft Terminal Services Client, aka `mstsc.exe`)
* Microsoft Remote Desktop (found on Microsoft Store, which is distinct from MSTSC)
Many of these work on some or all of Windows, Mac OS, iOS, and/or Android.
RDP transport is encrypted using TLS by default.

## Features
### Remote Desktop Access
* Connect to a Linux desktop using RDP from anywhere (requires
[xorgxrdp](https://github.com/neutrinolabs/xorgxrdp) Xorg module)
* Reconnect to an existing session
* Session resizing (both on-connect and on-the-fly)
* RDP/VNC proxy (connect to another RDP/VNC server via xrdp)
### Access to Remote Resources
* Two-way clipboard transfer (text, bitmap, file)
* Audio redirection ([requires to build additional modules](https://github.com/neutrinolabs/xrdp/wiki/How-to-set-up-audio-redirection))
* Microphone redirection ([requires to build additional modules](https://github.com/neutrinolabs/xrdp/wiki/How-to-set-up-audio-redirection))
* Drive redirection (mount local client drives on remote machine)
## Supported Platforms
**xrdp** primarily targets GNU/Linux operating system. x86 (including x86-64)
and ARM processors are most mature architecture to run xrdp on.
See also [Platform Support Tier](https://github.com/neutrinolabs/xrdp/wiki/Platform-Support-Tier).
Some components such as xorgxrdp and RemoteFX codec have special optimization
for x86 using SIMD instructions. So running xrdp on x86 processors will get
fully accelerated experience.
## Quick Start
Most Linux distributions should distribute the latest release of xrdp in their
repository. You would need xrdp and xorgxrdp packages for the best
experience. It is recommended that xrdp depends on xorgxrdp, so it should
be sufficient to install xrdp. If xorgxrdp is not provided, use Xvnc
server.
xrdp listens on 3389/tcp. Make sure your firewall accepts connection to
3389/tcp from where you want to access.
### Ubuntu / Debian
```bash
apt install xrdp
```
### Fedora, RHEL and derivatives
If you're not running Fedora, make sure to enable EPEL packages first.
```bash
dnf install epel-release
```
(All systems) Install xrdp with:-
```bash
dnf install xrdp
```
## Compiling
See also https://github.com/neutrinolabs/xrdp/wiki#building-from-sources
### Prerequisites
To compile xrdp from the packaged sources, you need basic build tools - a
compiler (**gcc** or **clang**) and the **make** program. Additionally,
you would need **openssl-devel**, **pam-devel**, **libX11-devel**,
**libXfixes-devel**, **libXrandr-devel**. More additional software would
be needed depending on your configuration.
To compile xrdp from a checked out git repository, you would additionally
need **autoconf**, **automake**, **libtool** and **pkg-config**.
### Get the source and build it
If compiling from the packaged source, unpack the tarball and change to the
resulting directory.
If compiling from a checked out repository, please make sure you've got the submodules
cloned too (use `git clone --recursive https://github.com/neutrinolabs/xrdp`)
Then run following commands to compile and install xrdp:
```bash
./bootstrap
./configure
make
sudo make install
```
If you want to use audio redirection, you need to build and install additional
pulseaudio modules. The build instructions can be found at wiki.
* [How to set up audio redirection](https://github.com/neutrinolabs/xrdp/wiki/How-to-set-up-audio-redirection)
## Directory Structure
```
xrdp
├── common ······ common code
├── docs ········ documentation
├── fontutils ··· font handling utilities
├── genkeymap ··· keymap generator
├── instfiles ··· installable data file
├── keygen ······ xrdp RSA key pair generator
├── libpainter ·· painter library
├── librfxcodec · RFX codec library
├── libxrdp ····· core RDP protocol implementation
├── m4 ·········· Autoconf macros
├── mc ·········· media center module
├── neutrinordp · RDP client module for proxying RDP connections using NeutrinoRDP
├── pkgconfig ··· pkg-config configuration
├── scripts ····· build scripts
├┬─ sesman ······ session manager for xrdp
|├── chansrv ···· channel server for xrdp
|├── libsesman ·· Code common to sesman and its related executables
|└── tools ······ session management tools for sys admins
├── tests ······· tests for the code
├┬─ tools ······· tools
|└┬─ devel ······ development tools
| ├── gtcp_proxy GTK app that forwards TCP connections to a remote host
| └── tcp_proxy · CLI app that forwards TCP connections to a remote host
├── vnc ········· VNC client module for xrdp
├── vrplayer ···· QT player redirecting video/audio to clients over xrdpvr channel
├── xrdp ········ main server code
├── xrdpapi ····· virtual channel API
├── xrdpvr ······ API for playing media over RDP
└── xup ········· xorgxrdp client module
```
================================================
FILE: SECURITY.md
================================================
# Security Policy
## Reporting a Vulnerability
Please DO NOT report any security issues to public GitHub issue.
If you find a security vulnerability please kindly inform us via [Report Form](https://github.com/neutrinolabs/xrdp/security/advisories/new) so that we can fix the security problem to protect a lot of users around the world as soon as possible.
If you have anything else you want to report privately to developers, send us an email to the following email address. This is a private mailing list not open for public viewing.
* [xrdp-core@googlegroups.com](mailto:xrdp-core@googlegroups.com)
================================================
FILE: astyle_config.as
================================================
# detached brackets
--style=allman
# 4 spaces, no tabs
--indent=spaces=4
# for C++ files only
--indent-classes
# Indent 'switch' blocks so that the 'case X:' statements are indented in the switch block.
# The entire case block is indented.
--indent-switches
# Add extra indentation to namespace blocks. This option has no effect on Java files.
--indent-namespaces
# Converts tabs into spaces in the non-indentation part of the line.
--convert-tabs
# requires --convert-tabs to work properly
--indent-preproc-define
--indent-col1-comments
--min-conditional-indent=2
--max-continuation-indent=40
# Insert space padding around operators.
--pad-oper
# Insert space padding after paren headers only (e.g. 'if', 'for', 'while'...).
--pad-header
# Add brackets to unbracketed one line conditional statements (e.g. 'if', 'for', 'while'...).
--add-braces
--align-pointer=name
# Do not retain a backup of the original file. The original file is purged after it is formatted.
--suffix=none
# For each directory in the command line, process all subdirectories recursively.
--recursive
# Exclude git submodule directories and generated files.
--exclude=libpainter
--exclude=librfxcodec
--exclude=xrdp_configure_options.h
# ignore errors from generated files that do not exist
--ignore-exclude-errors
# Preserve the original file's date and time modified.
--preserve-date
# Formatted files display mode. Display only the files that have been formatted.
# Do not display files that are unchanged.
--formatted
--lineend=linux
================================================
FILE: bootstrap
================================================
#!/bin/sh
command -v autoconf
if ! test $? -eq 0
then
echo "error, install autoconf"
exit 1
fi
command -v automake
if ! test $? -eq 0
then
echo "error, install automake"
exit 1
fi
command -v libtool || command -v libtoolize
if ! test $? -eq 0
then
echo "error, install libtool"
exit 1
fi
command -v pkg-config
if ! test $? -eq 0
then
echo "error, install pkg-config"
exit 1
fi
if ! test -f libpainter/configure.ac
then
git submodule update --init libpainter
fi
if ! test -f librfxcodec/configure.ac
then
git submodule update --init librfxcodec
fi
if ! test -f ulalaca/Makefile.am
then
git submodule update --init ulalaca
fi
autoreconf -fvi
================================================
FILE: coding_style.md
================================================
XRdp Coding Style
=================
The coding style used by XRdp is described below.
The XRdp project uses astyle (artistic style) to format the code. Astyle
requires a configuration file that describes how you want your code
formatted. This file is present in the XRdp root directory and is named
`astyle_config.as`.
Here is how we run the astyle command:
astyle --options=/path/to/file/astyle_config.as "*.c"
This coding style is a work in progress and is still evolving.
Language Standard
-----------------
Try to make all code compile with both C and C++ compiler. C++ is more
strict, which makes the code safer.
Indentation
-----------
* 4 spaces per indent
* No tabs for any indents
☞
if (fd < 0)
{
return -1;
}
Line wrapping
-------------
* Keep lines not longer than 80 chars
* Align wrapped argument to the first argument
☞
log_message("connection aborted: error %d",
ret);
Variable names
--------------
* Use lowercase with underscores as needed
* Don't use camelCase
* Preprocessor constants should be uppercase
☞
#define BUF_SIZE 1024
int fd;
int bytes_in_stream;
Variable declaration
--------------------
* Each variable is declared on a separate line
☞
int i;
int j;
Whitespace
----------
* Use blank lines to group statements
* Use at most one empty line between statements
* For pointers and references, use a single space before * or & but not after
* Use one space after a cast
* No space before square brackets
☞
char *cptr;
int *iptr;
cptr = (char *) malloc(1024);
write(fd, &buf[12], 16);
Function declarations
---------------------
* Use newline before function name
☞
static int
value_ok(int val)
{
return (val >= 0);
}
Braces
------
* Opening brace is always on a separate line
* Align braces with the line preceding the opening brace
☞
struct stream
{
int flags;
char *data;
};
void
process_data(struct stream *s)
{
if (stream == NULL)
{
return;
}
}
`if` statements
---------------
* Always use braces
* Put both braces on separate lines
☞
if (val <= 0xff)
{
out_uint8(s, val);
}
else if (val <= 0xffff)
{
out_uint16_le(s, val);
}
else
{
out_uint32_le(s, val);
}
`for` statements
----------------
* Always use braces
* Put both braces on separate lines
☞
for (i = 0; i < 10; i++)
{
printf("i = %d\n", i);
}
`while` and `do while` statements
---------------------------------
* Always use braces
* `while` after the closing brace is on the same line
☞
while (cptr)
{
cptr—;
}
do
{
cptr--;
} while (cptr);
`switch` statements
-------------------
* Indent `case` once
* Indent statements under `case` one more time
* Put both braces on separate lines
☞
switch (cmd)
{
case READ:
read(fd, buf, 1024);
break;
default:
printf("bad cmd\n");
}
Comments
--------
Use /* */ for comments
Don't use //
================================================
FILE: common/Makefile.am
================================================
if XRDP_PIXMAN
PIXMAN_SOURCES =
else
PIXMAN_SOURCES = pixman-region16.c pixman-region.h
endif
EXTRA_DIST = pixman-region.c
include_HEADERS = \
ms-erref.h \
ms-fscc.h \
ms-rdpbcgr.h \
ms-rdpeclip.h \
ms-rdpefs.h \
ms-rdpegdi.h \
ms-rdpele.h \
ms-rdperp.h \
ms-rdpedisp.h \
ms-smb2.h \
xup_client_info.h \
xrdp_client_info.h \
xrdp_constants.h \
xrdp_rail.h \
xrdp_scancode_defs.h \
xrdp_sockets.h
AM_CPPFLAGS = \
-DXRDP_CFG_PATH=\"${sysconfdir}/${sysconfsubdir}\" \
-DXRDP_SBIN_PATH=\"${sbindir}\" \
-DXRDP_SHARE_PATH=\"${datadir}/xrdp\" \
-DXRDP_PID_PATH=\"${localstatedir}/run\" \
-DXRDP_LOG_PATH=\"${localstatedir}/log\"
if XRDP_NVENC
AM_CPPFLAGS += -DXRDP_NVENC
endif
# -no-suppress is an automake-specific flag which is needed
# to prevent us missing compiler errors in some circumstances
# (see https://github.com/neutrinolabs/xrdp/pull/1843 )
AM_CFLAGS = -no-suppress $(OPENSSL_CFLAGS)
module_LTLIBRARIES = \
libcommon.la
libcommon_la_SOURCES = \
arch.h \
base64.h \
base64.c \
channel_defs.h \
defines.h \
fifo.c \
fifo.h \
file.c \
file.h \
guid.c \
guid.h \
list.c \
list.h \
list16.c \
list16.h \
log.c \
log.h \
os_calls.c \
os_calls.h \
parse.c \
parse.h \
rail.h \
scancode.c \
scancode.h \
set_int.c \
set_int.h \
ssl_calls.c \
ssl_calls.h \
string_calls.c \
string_calls.h \
thread_calls.c \
thread_calls.h \
timers.c \
timers.h \
trans.c \
trans.h \
unicode_defines.h \
$(PIXMAN_SOURCES)
libcommon_la_LIBADD = \
-lpthread \
$(OPENSSL_LIBS) \
$(DLOPEN_LIBS)
================================================
FILE: common/arch.h
================================================
/**
* xrdp: A Remote Desktop Protocol server.
*
* Copyright (C) Jay Sorg 2004-2014
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#if !defined(ARCH_H)
#define ARCH_H
#include <stdlib.h>
#include <string.h>
#if defined(HAVE_STDINT_H)
#include <stdint.h>
#else
typedef signed char int8_t;
typedef unsigned char uint8_t;
typedef signed short int16_t;
typedef unsigned short uint16_t;
typedef signed int int32_t;
typedef unsigned int uint32_t;
#if defined(_WIN64)
typedef signed __int64 int64_t;
typedef unsigned __int64 uint64_t;
typedef signed __int64 intptr_t;
typedef unsigned __int64 uintptr_t;
#else
typedef signed long long int64_t;
typedef unsigned long long uint64_t;
typedef signed long intptr_t;
typedef unsigned long uintptr_t;
#endif
#endif
typedef int bool_t;
// Define Unicode character types
#if defined(HAVE_UCHAR_H)
#include <uchar.h>
#elif defined (__APPLE__) && defined(__cplusplus)
// char16_t and char32_t are in stdint.h (C++ only)
#elif defined(HAVE_STDINT_H)
typedef uint_least16_t char16_t;
typedef uint_least32_t char32_t;
#else
typedef uint16_t char16_t;
typedef uint32_t char32_t;
#endif
/* you can define L_ENDIAN or B_ENDIAN and NEED_ALIGN or NO_NEED_ALIGN
in the makefile to override */
/* check endianness */
#if !(defined(L_ENDIAN) || defined(B_ENDIAN))
#if !defined(__BYTE_ORDER) && defined(__linux__)
#include <endian.h>
#endif
#if defined(BYTE_ORDER)
#if BYTE_ORDER == BIG_ENDIAN
#define B_ENDIAN
#else
#define L_ENDIAN
#endif
#endif
#if !(defined(L_ENDIAN) || defined(B_ENDIAN))
#if defined(__sparc__) || \
defined(__s390__) || defined (__s390x__) || \
defined(__hppa__) || defined (__m68k__) || \
(defined(__PPC__) && defined(__BIG_ENDIAN__)) || \
(defined(__ppc__) && defined(__BIG_ENDIAN__))
#define B_ENDIAN
#else
#define L_ENDIAN
#endif
#endif
#endif
/* check if we need to align data */
#if !(defined(NEED_ALIGN) || defined(NO_NEED_ALIGN))
#if defined(__sparc__) || defined(__alpha__) || defined(__hppa__) || \
defined(__AIX__) || defined(__m68k__) || defined(__mips__) || \
defined(__ia64__) || defined(__arm__) || defined(__sh__) || \
(defined(__PPC__) && defined(__BIG_ENDIAN__)) || \
(defined(__ppc__) && defined(__BIG_ENDIAN__)) || \
defined(__loongarch__) || defined(__e2k__)
#define NEED_ALIGN
#elif defined(__x86__) || defined(__x86_64__) || \
defined(__AMD64__) || defined(_M_IX86) || defined (_M_AMD64) || \
defined(__i386__) || defined(__aarch64__) || \
defined(__PPC__) || defined(__LITTLE_ENDIAN__) || \
defined(__s390__) || defined (__s390x__) || \
defined(__riscv)
#define NO_NEED_ALIGN
#else
#warning unknown arch
#endif
#endif
/* defines for thread creation factory functions */
#if defined(_WIN32)
#define THREAD_RV unsigned long
#define THREAD_CC __stdcall
#else
#define THREAD_RV void*
#define THREAD_CC
#endif
#if defined(_WIN32)
#if defined(__BORLANDC__)
#define EXPORT_CC _export __cdecl
#else
#define EXPORT_CC
#endif
#else
#define EXPORT_CC
#endif
#ifndef DEFINED_Ts
#define DEFINED_Ts
typedef int8_t ti8;
typedef uint8_t tui8;
typedef int8_t tsi8;
typedef int16_t ti16;
typedef uint16_t tui16;
typedef int16_t tsi16;
typedef int32_t ti32;
typedef uint32_t tui32;
typedef int32_t tsi32;
typedef int64_t ti64;
typedef uint64_t tui64;
typedef int64_t tsi64;
typedef bool_t tbool;
typedef intptr_t tbus;
typedef intptr_t tintptr;
/* socket */
#if defined(_WIN32)
typedef unsigned int tsock;
#else
typedef int tsock;
#endif
#endif /* DEFINED_Ts */
/* format string verification */
#if defined(HAVE_FUNC_ATTRIBUTE_FORMAT)
#define printflike(arg_format, arg_first_check) \
__attribute__((__format__(__printf__, arg_format, arg_first_check)))
#else
#define printflike(arg_format, arg_first_check)
#endif
/* module interface */
#ifdef __cplusplus
extern "C" {
#endif
tintptr mod_init(void);
int mod_exit(tintptr);
#ifdef __cplusplus
}
#endif
#endif
================================================
FILE: common/base64.c
================================================
/**
* Copyright (C) 2022 Matt Burt, all xrdp contributors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/
/**
* @file common/base64.c
* @brief Base64 encoder / decoder
*/
#if defined(HAVE_CONFIG_H)
#include <config_ac.h>
#endif
#include "string_calls.h"
#include "base64.h"
/*
* Values for invalid and padding characters, used in the charmap
* for converting base64 to binary
*
* These values are specially chosen to make it easy to detect padding or
* invalid characters by or-ing together the values looked up in
* a base64 quantum */
#define E_INVALID 0x40
#define E_PAD 0x80
/* Determine the character set on this platform */
#if ('a' == 0x61 && 'z' == 0x7a ) && \
('A' == 0x41 && 'Z' == 0x5a ) && \
('0' == 0x30 && '9' == 0x39 )
# define PLATFORM_IS_ASCII 1
#else
# error "Unrecognised character set on this platform"
#endif /* character set check */
/*
* Define a table to map the base64 character values to bit values.
*/
#ifdef PLATFORM_IS_ASCII
#define CHARMAP_BASE 0x28
#define E_IV E_INVALID /* For table alignment */
const unsigned char charmap[] =
{
/* 0x28 */ E_IV, E_IV, E_IV, 0x3e, E_IV, E_IV, E_IV, 0x3f,
/* 0x30 */ 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b,
/* 0x38 */ 0x3c, 0x3d, E_IV, E_IV, E_IV, E_PAD, E_IV, E_IV,
/* 0x40 */ E_IV, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06,
/* 0x48 */ 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e,
/* 0x50 */ 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16,
/* 0x58 */ 0x17, 0x18, 0x19, E_IV, E_IV, E_IV, E_IV, E_IV,
/* 0x60 */ E_IV, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20,
/* 0x68 */ 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28,
/* 0x70 */ 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30,
/* 0x78 */ 0x31, 0x32, 0x33
};
#undef E_IV
#endif /* PLATFORM_IS_ASCII */
/**
* Lookup a value in the charmap
*
* @param x - byte to lookup. Only referenced once so can safely have
* side effects.
* @param dest - destination to assign result to.
*/
#define CM_LOOKUP(x,dest) \
{ \
unsigned int t = (unsigned int)(x) - CHARMAP_BASE;\
dest = (t < sizeof(charmap)) ? charmap[t] : E_INVALID; \
}
/*****************************************************************************/
int
base64_decode(const char *src, char *dst, size_t dst_len, size_t *actual_len)
{
*actual_len = 0;
size_t src_len;
size_t src_i = 0;
size_t dst_i = 0;
unsigned int a; /* Four characters of base64 quantum */
unsigned int b;
unsigned int c;
unsigned int d;
unsigned int v;
#define OUTPUT_CHAR(x) \
{ \
if (dst_i < dst_len) \
{ \
dst[dst_i] = (x);\
} \
++dst_i; \
}
src_len = g_strlen(src);
while (src_i < src_len)
{
if ((src_len - src_i) >= 4)
{
/* Usual case - full quantum */
CM_LOOKUP(src[src_i++], a);
CM_LOOKUP(src[src_i++], b);
CM_LOOKUP(src[src_i++], c);
CM_LOOKUP(src[src_i++], d);
}
else
{
/* Add padding on the end to make up the full quantum */
CM_LOOKUP(src[src_i++], a);
b = E_PAD;
c = E_PAD;
d = E_PAD;
if ((src_len - src_i) > 0)
{
CM_LOOKUP(src[src_i++], b);
}
if ((src_len - src_i) > 0)
{
CM_LOOKUP(src[src_i++], c);
}
}
/*
* Bitwise-or the translated quantum values together, so that
* any invalid or padding characters can be detected with a
* single test */
v = a | b | c | d;
if ((v & E_INVALID) != 0)
{
return -1; /* At least one invalid character */
}
if ((v & E_PAD) == 0)
{
/* No padding - a full quantum */
v = (a << 18) | (b << 12) | (c << 6) | d;
OUTPUT_CHAR(v >> 16);
OUTPUT_CHAR((v >> 8) & 0xff);
OUTPUT_CHAR(v & 0xff);
}
else if (((a | b | c) & E_PAD) == 0)
{
/* No padding in the first 3 chars, so the padding must
* be at the end */
v = (a << 10) | (b << 4) | (c >> 2);
OUTPUT_CHAR(v >> 8);
OUTPUT_CHAR(v & 0xff);
}
else if (((a | b) & E_PAD) == 0 && c == d)
{
/* No padding in first two chars, so if the last two chars are
* equal, they must both be padding */
v = (a << 2) | (b >> 4);
OUTPUT_CHAR(v);
}
else
{
/* Illegal padding */
return -1;
}
}
*actual_len = dst_i;
return 0;
#undef OUTPUT_CHAR
}
/*****************************************************************************/
size_t
base64_encode(const char *src, size_t src_len, char *dst, size_t dst_len)
{
char *p = dst;
size_t src_i = 0;
size_t max_src_len;
unsigned int v;
static const char *b64chr =
"ABCDEFGHIJKLMNOPQRSTUVWXYZ"
"abcdefghijklmnopqrstuvwxyz"
"0123456789+/=";
/* Each three octets of the source results in four bytes at the output,
* plus we need a terminator. So we can work out the maximum number of
* source octets we can process */
if (dst_len == 0)
{
max_src_len = 0;
}
else
{
max_src_len = (dst_len - 1) / 4 * 3;
}
if (src_len > max_src_len)
{
src_len = max_src_len;
}
while (src_i < src_len)
{
switch (src_len - src_i)
{
case 1:
v = (unsigned int)(unsigned char)src[src_i++] << 4;
*p++ = b64chr[v >> 6];
*p++ = b64chr[v & 0x3f];
*p++ = b64chr[64];
*p++ = b64chr[64];
break;
case 2:
v = (unsigned int)(unsigned char)src[src_i++] << 10;
v |= (unsigned int)(unsigned char)src[src_i++] << 2;
*p++ = b64chr[v >> 12];
*p++ = b64chr[(v >> 6) & 0x3f];
*p++ = b64chr[v & 0x3f];
*p++ = b64chr[64];
break;
default:
v = (unsigned int)(unsigned char)src[src_i++] << 16;
v |= (unsigned int)(unsigned char)src[src_i++] << 8;
v |= (unsigned int)(unsigned char)src[src_i++];
*p++ = b64chr[v >> 18];
*p++ = b64chr[(v >> 12) & 0x3f];
*p++ = b64chr[(v >> 6) & 0x3f];
*p++ = b64chr[v & 0x3f];
break;
}
}
*p = '\0';
return src_len;
}
================================================
FILE: common/base64.h
================================================
/**
* Copyright (C) 2021 Koichiro Iwao, all xrdp contributors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/**
* @file common/base64.h
* @brief Base64 encoder / decoder
*
* Base-64 is described in RFC4648. The following notes apply to this
* implementation:-
* - The only supported characters are [A-Za-z0-9+/=]. At present,
* embedded linefeeds and URL encodings are not supported.
*
*/
#if !defined(BASE64_CALLS_H)
#define BASE64_CALLS_H
#include "arch.h"
/*
* Decodes a base64 string
*
* @param src Pointer to null-terminated source
* @param dst Pointer to output buffer
* @param dst_len Length of above. No more than this is written to the
* output buffer
* @param actual_len Pointer to value to receive actual length of decoded data
* @return 0 for success, 1 for an invalid input string
*
* The following notes apply to this implementation:-
* - Embedded padding is supported, provided it only occurs at the end
* of a quantum as described in RFC4648(4). This allows concatenated
* encodings to be fed into the decoder.
* - Padding of the last quantum is assumed if not provided.
* - Excess padding of the last quantum is ignored.
*
* Only dst_len bytes at most are written to the output. The length
* returned in actual_len however represents how much buffer is needed for
* a correct result. This may be more than dst_len, and enables the caller
* to detect a potential buffer overflow
*/
int
base64_decode(const char *src, char *dst, size_t dst_len, size_t *actual_len);
/*
* Encodes a buffer as base64
*
* @param src Pointer to source
* @param src_len Length of above.
* @param dst Pointer to output buffer for null-terminated string
* @param dst_len Length of above. No more than this is written to the
* output buffer
* @return Number of source characters processed
*
* The following notes apply to this implementation:-
* - Padding of the last quantum is always written if the number of
* source bytes is not divisible by 3.
*
* The number of source characters processed is always returned. If
* the destination buffer is too small for all the output plus a
* terminator, the returned value from this procedure will be less than
* src_len. In this case no padding characters will have been written,
* and the remaining characters can be converted with more calls to
* this procedure.
*/
size_t
base64_encode(const char *src, size_t src_len, char *dst, size_t dst_len);
#endif /* BASE64_CALLS_H */
================================================
FILE: common/channel_defs.h
================================================
/**
* Copyright (C) 2024 Matt Burt, all xrdp contributors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/**
* @file common/channel_defs.h
* @brief Private xrdp channel definitions
*/
#if !defined(CHANNEL_DEFS_H)
#define CHANNEL_DEFS_H
#include <stdint.h>
/**
* Channel IDs assigned to xrdp private channels. These are chosen to avoid conflicts with
* channel IDs returned by other servers.
*/
enum
{
CHAN_ID_XRDP_BASE = (('x' << 24) | ('r' << 16) | ('d' << 8) | 'p'),
CHAN_ID_XRDP_SESSION_INFO = CHAN_ID_XRDP_BASE,
// Add further IDs here
CHAN_ID_XRDP_MAX
};
// Max length of a DVC name. This is taken from the specification of
// WTSVirtualChannelOpenEx() which limits the length of a virtual channel
// to Windows MAX_PATH
#define MAX_DVC_NAME_LEN 260
/**
* Information to connect to a channel using xrdpapi
*/
#define XRDPAPI_CONNECT_PDU_LEN 384 // Connect PDU is always this length
#define XRDPAPI_CONNECT_PDU_VERSION 1 // Current connnect PDU version
struct xrdp_chan_connect
{
uint32_t version;
uint32_t private_chan; // 0 for a standard channel
uint32_t flags;
char name[MAX_DVC_NAME_LEN + 1]; // null-terminated
};
// Events received on the CHAN_ID_XRDP_SESSION_INFO channel
// Update on all the session state data held by chansrv
//
// If more information is needed to be exported by xrdpapi, it can be
// added to this event
struct xrdp_chan_session_state
{
uint32_t is_connected; // Is the session connected?
};
#endif /* CHANNEL_DEFS_H */
================================================
FILE: common/defines.h
================================================
/**
* xrdp: A Remote Desktop Protocol server.
*
* Copyright (C) Jay Sorg 2004-2014
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
* main define/macro file
*/
#ifndef DEFINES_H
#define DEFINES_H
/* other macros */
#undef MIN
#define MIN(x1, x2) ((x1) < (x2) ? (x1) : (x2))
#undef MAX
#define MAX(x1, x2) ((x1) > (x2) ? (x1) : (x2))
#undef HIWORD
#define HIWORD(in) (((in) & 0xffff0000) >> 16)
#undef LOWORD
#define LOWORD(in) ((in) & 0x0000ffff)
#undef MAKELONG
#define MAKELONG(lo, hi) ((((hi) & 0xffff) << 16) | ((lo) & 0xffff))
#define UNUSED_VAR(x) ((void) (x))
/* graphics macros */
#define MAKERECT(r, x, y, cx, cy) \
{ (r).left = x; (r).top = y; (r).right = (x) + (cx); (r).bottom = (y) + (cy); }
#define ISRECTEMPTY(r) (((r).right <= (r).left) || ((r).bottom <= (r).top))
#define RECTOFFSET(r, dx, dy) \
{ (r).left += dx; (r).top += dy; (r).right += dx; (r).bottom += dy; }
#define GETPIXEL8(d, x, y, w) (*(((unsigned char*)d) + ((y) * (w) + (x))))
#define GETPIXEL16(d, x, y, w) (*(((unsigned short*)d) + ((y) * (w) + (x))))
#define GETPIXEL32(d, x, y, w) (*(((unsigned int*)d) + ((y) * (w) + (x))))
#define SETPIXEL8(d, x, y, w, v) \
(*(((unsigned char*)d) + ((y) * (w) + (x))) = (v))
#define SETPIXEL16(d, x, y, w, v) \
(*(((unsigned short*)d) + ((y) * (w) + (x))) = (v))
#define SETPIXEL32(d, x, y, w, v) \
(*(((unsigned int*)d) + ((y) * (w) + (x))) = (v))
#define COLOR8(r, g, b) \
( \
(((r) >> 5) << 0) | \
(((g) >> 5) << 3) | \
(((b) >> 6) << 6) \
)
#define COLOR15(r, g, b) ((((r) >> 3) << 10) | (((g) >> 3) << 5) | ((b) >> 3))
#define COLOR16(r, g, b) ((((r) >> 3) << 11) | (((g) >> 2) << 5) | ((b) >> 3))
#define COLOR24RGB(r, g, b) (((r) << 16) | ((g) << 8) | (b))
#define COLOR24BGR(r, g, b) (((b) << 16) | ((g) << 8) | (r))
#define HRED(c) ((c & 0xff0000) >> 16)
#define HGREEN(c) ((c & 0x00ff00) >> 8)
#define HBLUE(c) ((c & 0x0000ff))
#define HCOLOR(bpp,c) \
( \
(bpp==8?COLOR8(HRED(c),HGREEN(c),HBLUE(c)): \
(bpp==15?COLOR15(HRED(c),HGREEN(c),HBLUE(c)): \
(bpp==16?COLOR16(HRED(c),HGREEN(c),HBLUE(c)): \
(bpp>=24?COLOR24BGR(HRED(c),HGREEN(c),HBLUE(c)):c) \
) \
) \
) \
)
#define SPLITCOLOR15(r, g, b, c) \
{ \
r = (((c) >> 7) & 0xf8) | (((c) >> 12) & 0x7); \
g = (((c) >> 2) & 0xf8) | (((c) >> 8) & 0x7); \
b = (((c) << 3) & 0xf8) | (((c) >> 2) & 0x7); \
}
#define SPLITCOLOR16(r, g, b, c) \
{ \
r = (((c) >> 8) & 0xf8) | (((c) >> 13) & 0x7); \
g = (((c) >> 3) & 0xfc) | (((c) >> 9) & 0x3); \
b = (((c) << 3) & 0xf8) | (((c) >> 2) & 0x7); \
}
#define SPLITCOLOR32(r, g, b, c) \
{ \
r = ((c) >> 16) & 0xff; \
g = ((c) >> 8) & 0xff; \
b = (c) & 0xff; \
}
/* font macros */
#define FONT_DATASIZE_FROM_GEOMETRY(width,height) \
((((height) * (((width) + 7) / 8)) + 3) & ~3)
#define FONT_DATASIZE(f) FONT_DATASIZE_FROM_GEOMETRY((f->width), (f->height))
/* use crc for bitmap cache lookups */
#define USE_CRC
#define XR_RGB2BGR(a_ulColor) \
(a_ulColor & 0xFF000000) | \
((a_ulColor & 0x00FF0000) >> 16) | \
(a_ulColor & 0x0000FF00) | \
((a_ulColor & 0x000000FF) << 16)
#endif
================================================
FILE: common/fifo.c
================================================
/**
* xrdp: A Remote Desktop Protocol server.
*
* Copyright (C) Matt Burt 2023
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/**
* @file common/fifo.c
* @brief Fifo for storing generic pointers
*
* Defines an unbounded FIFO-queue for void * pointers
*
* The stored pointers are called 'items' below.
*
* Items are stored in groups called 'chunks'. Chunks are linked together
* in a chain:-
*
* +-------------+ +--------+ +--------+ +--------+
* | first_chunk |--->| next |--->| next |--->| NULL |<-+
* | last_chunk |-+ +--------+ +--------+ +--------+ |
* | . . . | | | item.0 | | item.0 | | item.0 | |
* +-------------+ | | ... | | ... | | ... | |
* | | item.n | | item.n | | item.n | |
* | +--------+ +--------+ +--------+ |
* | |
* +------------------------------------------+
*
* This allows items to be added to the FIFO by allocating blocks
* as each one fills up.
*
* The code to read from the FIFO de-allocates blocks as each one is
* consumed.
*
* There is always at least one chunk in the FIFO.
*/
#if defined(HAVE_CONFIG_H)
#include <config_ac.h>
#endif
#include <stdlib.h>
#include "fifo.h"
#define ITEMS_PER_CHUNK 31
struct chunk
{
struct chunk *next;
void *items[ITEMS_PER_CHUNK];
};
struct fifo
{
struct chunk *first_chunk;
struct chunk *last_chunk;
/** Next address to write in 'last_chunk' */
unsigned short writer;
/** Next address to read in 'first_chunk' */
unsigned short reader;
/** Item destructor function, or NULL */
fifo_item_destructor item_destructor;
};
/*****************************************************************************/
struct fifo *
fifo_create(fifo_item_destructor item_destructor)
{
struct fifo *result = NULL;
struct chunk *cptr = (struct chunk *)malloc(sizeof(struct chunk));
if (cptr != NULL)
{
/* 'next' pointer in last block is always NULL */
cptr->next = NULL;
result = (struct fifo *)malloc(sizeof(struct fifo));
if (result == NULL)
{
free(cptr);
}
else
{
result->first_chunk = cptr;
result->last_chunk = cptr;
result->writer = 0;
result->reader = 0;
result->item_destructor = item_destructor;
}
}
return result;
}
/*****************************************************************************/
/**
* Internal function to call the destructor function on all items in the fifo
*
* @param self fifo. Can't be NULL
* @param closure Additional argument to destructor function
*/
static void
call_item_destructor(struct fifo *self, void *closure)
{
if (self->item_destructor != NULL)
{
struct chunk *cptr = self->first_chunk;
unsigned int i = self->reader;
// Process all the chunks up to the last one
while (cptr != self->last_chunk)
{
(*self->item_destructor)(cptr->items[i++], closure);
if (i == ITEMS_PER_CHUNK)
{
cptr = cptr->next;
i = 0;
}
}
// Process all the items in the last chunk
while (i < self->writer)
{
(*self->item_destructor)(cptr->items[i++], closure);
}
}
}
/*****************************************************************************/
void
fifo_delete(struct fifo *self, void *closure)
{
if (self != NULL)
{
call_item_destructor(self, closure);
// Now free all the chunks
struct chunk *cptr = self->first_chunk;
while (cptr != NULL)
{
struct chunk *next = cptr->next;
free(cptr);
cptr = next;
}
free(self);
}
}
/*****************************************************************************/
void
fifo_clear(struct fifo *self, void *closure)
{
if (self != NULL)
{
call_item_destructor(self, closure);
// Now free all the chunks except the last one
struct chunk *cptr = self->first_chunk;
while (cptr->next != NULL)
{
struct chunk *next = cptr->next;
free(cptr);
cptr = next;
}
// Re-initialise fifo fields
self->first_chunk = cptr;
self->last_chunk = cptr;
self->reader = 0;
self->writer = 0;
}
}
/*****************************************************************************/
int
fifo_add_item(struct fifo *self, void *item)
{
int rv = 0;
if (self != NULL && item != NULL)
{
if (self->writer == ITEMS_PER_CHUNK)
{
// Add another chunk to the chain
struct chunk *cptr;
cptr = (struct chunk *)malloc(sizeof(struct chunk));
if (cptr == NULL)
{
return 0;
}
cptr->next = NULL;
self->last_chunk->next = cptr;
self->last_chunk = cptr;
self->writer = 0;
}
self->last_chunk->items[self->writer++] = item;
rv = 1;
}
return rv;
}
/*****************************************************************************/
void *
fifo_remove_item(struct fifo *self)
{
void *item = NULL;
if (self != NULL)
{
// More than one chunk in the fifo?
if (self->first_chunk != self->last_chunk)
{
/* We're not reading the last chunk. There
* must be something in the fifo */
item = self->first_chunk->items[self->reader++];
/* At the end of this chunk? */
if (self->reader == ITEMS_PER_CHUNK)
{
struct chunk *old_chunk = self->first_chunk;
self->first_chunk = old_chunk->next;
free(old_chunk);
self->reader = 0;
}
}
else if (self->reader < self->writer)
{
/* We're reading the last chunk */
item = self->first_chunk->items[self->reader++];
if (self->reader == self->writer)
{
// fifo is now empty. We can reset the pointers
// to prevent unnecessary allocations in the future.
self->reader = 0;
self->writer = 0;
}
}
}
return item;
}
/*****************************************************************************/
int
fifo_is_empty(struct fifo *self)
{
return (self == NULL ||
(self->first_chunk == self->last_chunk &&
self->reader == self->writer));
}
================================================
FILE: common/fifo.h
================================================
/**
* xrdp: A Remote Desktop Protocol server.
*
* Copyright (C) Laxmikant Rashinkar 2004-2014
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/**
* @file common/fifo.h
* @brief Fifo for storing generic pointers
*
* Declares an unbounded FIFO-queue for void * pointers
*/
#ifndef _FIFO_H
#define _FIFO_H
struct fifo;
/**
* Function used by fifo_clear()/fifo_delete() to destroy items
*
* @param item Item being deleted
* @param closure Additional argument to function
*
* Use this function to free any allocated storage (e.g. if the items
* are dynamically allocated)
*/
typedef void (*fifo_item_destructor)(void *item, void *closure);
/**
* Create new fifo
*
* @param item_destructor Destructor for fifo items, or NULL for none
* @return fifo, or NULL if no memory
*/
struct fifo *
fifo_create(fifo_item_destructor item_destructor);
/**
* Delete an existing fifo
*
* Any existing entries on the fifo are passed in order to the
* item destructor specified when the fifo was created.
*
* @param self fifo to delete (may be NULL)
* @param closure Additional parameter for fifo item destructor
*/
void
fifo_delete(struct fifo *self, void *closure);
/**
* Clear(empty) an existing fifo
*
* Any existing entries on the fifo are passed in order to the
* item destructor specified when the fifo was created.
*
* @param self fifo to clear (may be NULL)
* @param closure Additional parameter for fifo item destructor
*/
void
fifo_clear(struct fifo *self, void *closure);
/** Add an item to a fifo
* @param self fifo
* @param item Item to add
* @return 1 if successful, 0 for no memory, or tried to add NULL
*/
int
fifo_add_item(struct fifo *self, void *item);
/** Remove an item from a fifo
* @param self fifo
* @return item if successful, NULL for no items in FIFO
*/
void *
fifo_remove_item(struct fifo *self);
/** Is fifo empty?
*
* @param self fifo
* @return 1 if fifo is empty, 0 if not
*/
int
fifo_is_empty(struct fifo *self);
#endif
================================================
FILE: common/file.c
================================================
/**
* xrdp: A Remote Desktop Protocol server.
*
* Copyright (C) Jay Sorg 2004-2014
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
* read a config file
*/
#if defined(HAVE_CONFIG_H)
#include <config_ac.h>
#endif
#include "arch.h"
#include "os_calls.h"
#include "string_calls.h"
#include "list.h"
#include "file.h"
#include "parse.h"
#define FILE_MAX_LINE_BYTES 2048
static int
file_read_ini_line(struct stream *s, char *text, int text_bytes);
/*****************************************************************************/
/* look up for a section name within str (i.e. pattern [section_name])
* if a section name is found, this function return 1 and copy the section
* inplace of str. */
static int
line_lookup_for_section_name(char *str, int str_bytes)
{
int name_index_start;
int index;
char c;
name_index_start = -1;
index = 0;
while ((c = str[index]) != 0)
{
if (c == '[')
{
name_index_start = index + 1;
}
else if (c == ']' && name_index_start > 0)
{
if (name_index_start + index >= str_bytes)
{
return 0;
}
for (index = index - name_index_start; index > 0; index--)
{
str[0] = str[name_index_start];
str++;
}
str[0] = 0;
return 1;
}
++index;
}
return 0;
}
/*****************************************************************************/
/* returns error
returns 0 if everything is ok
returns 1 if problem reading file */
static int
l_file_read_sections(int fd, int max_file_size, struct list *names)
{
struct stream *s;
char text[FILE_MAX_LINE_BYTES];
int len;
int rv;
rv = 0;
g_file_seek(fd, 0);
g_memset(text, 0, FILE_MAX_LINE_BYTES);
list_clear(names);
make_stream(s);
init_stream(s, max_file_size);
len = g_file_read(fd, s->data, max_file_size);
if (len > 0)
{
s->end = s->p + len;
while (file_read_ini_line(s, text, FILE_MAX_LINE_BYTES) == 0)
{
if (line_lookup_for_section_name(text, FILE_MAX_LINE_BYTES) != 0)
{
list_add_strdup(names, text);
}
}
}
else if (len < 0)
{
rv = 1;
}
free_stream(s);
return rv;
}
/*****************************************************************************/
/* Read a line in the stream 's', removing comments.
* returns error
* returns 0 if everything is ok
* returns 1 if problem reading file */
static int
file_read_ini_line(struct stream *s, char *text, int text_bytes)
{
int i;
int skip_to_end;
int at_end;
char c;
skip_to_end = 0;
if (!s_check_rem(s, 1))
{
return 1;
}
i = 0;
in_uint8(s, c);
while (c != 10 && c != 13)
{
/* these mean skip the rest of the line */
if (c == '#' || c == ';')
{
skip_to_end = 1;
}
if (!skip_to_end)
{
text[i] = c;
i++;
if (i >= text_bytes)
{
return 1;
}
}
if (s_check_rem(s, 1))
{
in_uint8(s, c);
}
else
{
c = 0;
break;
}
}
if (c == 10 || c == 13)
{
at_end = 0;
while (c == 10 || c == 13)
{
if (s_check_rem(s, 1))
{
in_uint8(s, c);
}
else
{
at_end = 1;
break;
}
}
if (!at_end)
{
s->p--;
}
}
text[i] = 0;
return 0;
}
/*****************************************************************************/
/* returns error */
static int
file_split_name_value(char *text, char *name, char *value)
{
int len;
int i;
int value_index;
int name_index;
int on_to;
value_index = 0;
name_index = 0;
on_to = 0;
name[0] = 0;
value[0] = 0;
len = g_strlen(text);
for (i = 0; i < len; i++)
{
if (text[i] == '=' && !on_to)
{
on_to = 1;
}
else if (on_to)
{
value[value_index] = text[i];
value_index++;
value[value_index] = 0;
}
else
{
name[name_index] = text[i];
name_index++;
name[name_index] = 0;
}
}
g_strtrim(name, 3); /* trim both right and left */
g_strtrim(value, 3); /* trim both right and left */
return 0;
}
/*****************************************************************************/
/* return error */
static int
l_file_read_section(int fd, int max_file_size, const char *section,
struct list *names, struct list *values)
{
struct stream *s;
char *data;
char *text;
char *name;
char *value;
char *lvalue;
int len;
int file_size;
data = (char *) g_malloc(FILE_MAX_LINE_BYTES * 3, 0);
text = data;
name = text + FILE_MAX_LINE_BYTES;
value = name + FILE_MAX_LINE_BYTES;
file_size = 32 * 1024; /* 32 K file size limit */
g_file_seek(fd, 0);
g_memset(text, 0, FILE_MAX_LINE_BYTES);
list_clear(names);
list_clear(values);
make_stream(s);
init_stream(s, file_size);
len = g_file_read(fd, s->data, file_size);
if (len > 0)
{
s->end = s->p + len;
while (file_read_ini_line(s, text, FILE_MAX_LINE_BYTES) == 0)
{
if (line_lookup_for_section_name(text, FILE_MAX_LINE_BYTES) != 0)
{
if (g_strcasecmp(section, text) == 0)
{
while (file_read_ini_line(s, text,
FILE_MAX_LINE_BYTES) == 0)
{
if (line_lookup_for_section_name(text, FILE_MAX_LINE_BYTES) != 0)
{
break;
}
if (g_strlen(text) > 0)
{
file_split_name_value(text, name, value);
list_add_strdup(names, name);
if (value[0] == '$')
{
lvalue = g_getenv(value + 1);
if (lvalue != 0)
{
list_add_strdup(values, lvalue);
}
else
{
list_add_strdup(values, "");
}
}
else
{
list_add_strdup(values, value);
}
}
}
free_stream(s);
g_free(data);
return 0;
}
}
}
}
free_stream(s);
g_free(data);
return 1;
}
/*****************************************************************************/
/* returns error
returns 0 if everything is ok
returns 1 if problem reading file */
/* 32 K file size limit */
int
file_read_sections(int fd, struct list *names)
{
return l_file_read_sections(fd, 32 * 1024, names);
}
/*****************************************************************************/
/* return error */
/* this function should be preferred over file_read_sections because it can
read any file size */
int
file_by_name_read_sections(const char *file_name, struct list *names)
{
int fd;
int file_size;
int rv;
file_size = g_file_get_size(file_name);
if (file_size < 1)
{
return 1;
}
fd = g_file_open_ro(file_name);
if (fd < 0)
{
return 1;
}
rv = l_file_read_sections(fd, file_size, names);
g_file_close(fd);
return rv;
}
/*****************************************************************************/
/* return error */
/* 32 K file size limit */
int
file_read_section(int fd, const char *section,
struct list *names, struct list *values)
{
return l_file_read_section(fd, 32 * 1024, section, names, values);
}
/*****************************************************************************/
/* return error */
/* this function should be preferred over file_read_section because it can
read any file size */
int
file_by_name_read_section(const char *file_name, const char *section,
struct list *names, struct list *values)
{
int fd;
int file_size;
int rv;
file_size = g_file_get_size(file_name);
if (file_size < 1)
{
return 1;
}
fd = g_file_open_ro(file_name);
if (fd < 0)
{
return 1;
}
rv = l_file_read_section(fd, file_size, section, names, values);
g_file_close(fd);
return rv;
}
================================================
FILE: common/file.h
================================================
/**
* xrdp: A Remote Desktop Protocol server.
*
* Copyright (C) Jay Sorg 2004-2014
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
* read a config file
*/
#if !defined(FILE_H)
#define FILE_H
#include "arch.h"
int
file_read_sections(int fd, struct list *names);
int
file_by_name_read_sections(const char *file_name, struct list *names);
int
file_read_section(int fd, const char *section,
struct list *names, struct list *values);
int
file_by_name_read_section(const char *file_name, const char *section,
struct list *names, struct list *values);
#endif
================================================
FILE: common/guid.c
================================================
/**
* xrdp: A Remote Desktop Protocol server.
*
* Copyright (C) 2021 Matt Burt, all xrdp contributors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/
/**
* @file common/guid.c
* @brief GUID manipulation definitions
*/
#if defined(HAVE_CONFIG_H)
#include <config_ac.h>
#endif
#include "guid.h"
#include "os_calls.h"
#include "string_calls.h"
enum
{
/* Field offsets in the UUID */
E_CLOCK_SEQ_HI_AND_RESERVED = 8,
E_TIME_HI_AND_VERSION_MSB = 7,
/* UUID versions from RFC4122 section 4.1.3 */
E_UUID_VERSION_RANDOM = 4
};
struct guid
guid_new(void)
{
struct guid guid = {0};
g_random(guid.g, sizeof(guid.g));
/* Show this UUID as conforming to RFC4122 (section 4.1.1) */
guid.g[E_CLOCK_SEQ_HI_AND_RESERVED] &= ~0x40; /* Clear bit 6 */
guid.g[E_CLOCK_SEQ_HI_AND_RESERVED] |= (char)0x80; /* Set bit 7 */
guid.g[E_TIME_HI_AND_VERSION_MSB] &= ~0xf0;
guid.g[E_TIME_HI_AND_VERSION_MSB] |= (E_UUID_VERSION_RANDOM << 4);
return guid;
}
void
guid_clear(struct guid *guid)
{
g_memset(&guid->g, '\x00', GUID_SIZE);
}
int
guid_is_set(const struct guid *guid)
{
unsigned int i;
int rv = 0;
if (guid != NULL)
{
for (i = 0 ; i < GUID_SIZE; ++i)
{
if (guid->g[i] != '\x00')
{
rv = 1;
break;
}
}
}
return rv;
}
const char *guid_to_str(const struct guid *src, char *dest)
{
const unsigned char *guid = (const unsigned char *)src->g;
/*
* Flipping integers into little-endian
* See also: https://devblogs.microsoft.com/oldnewthing/20220928-00/?p=107221
*/
g_sprintf(dest, "%02X%02X%02X%02X-%02X%02X-%02X%02X-%02X%02X-%02X%02X%02X%02X%02X%02X",
guid[3], guid[2], guid[1], guid[0],
guid[5], guid[4],
guid[7], guid[6],
guid[8], guid[9],
guid[10], guid[11], guid[12], guid[13], guid[14], guid[15]);
return dest;
}
================================================
FILE: common/guid.h
================================================
/**
* xrdp: A Remote Desktop Protocol server.
*
* Copyright (C) Jay Sorg 2004-2021
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/
/**
* @file common/guid.h
* @brief GUID manipulation declarations
*/
#ifndef GUID_H
#define GUID_H
#include "arch.h"
#define GUID_SIZE 16 /* bytes */
#define GUID_STR_SIZE (GUID_SIZE * 2 + 4 + 1) /* w/ 4 hyphens + null terminator */
#define GUID_ARE_EQUAL(g1,g2) (memcmp((g1)->g, (g2)->g, GUID_SIZE) == 0)
/**
* Use a struct for the guid so we can easily copy by assignment.
* We use an array of char so that
* we can compare GUIDs with a straight memcmp()
*
* Some fields of the GUID are in little-endian-order as specified by
* [MS-DTYP]. This is at odds with RFC4122 which specifies big-endian
* order for all fields.
*
* Octets RFC4122 field
* ------ -------------
* 0-3 time_low (little-endian)
* 4-5 time_mid (little-endian)
* 6-7 time_hi_and_version (little-endian)
* 8 clock_seq_hi_and_reserved
* 9 clock_seq_low (in order)
* 10-15 node
*/
struct guid
{
char g[GUID_SIZE];
};
/**
* Get an initialised GUID
*
* The GUID is compatible with RFC4122 section 4.4.
*
* @return new GUID
*/
struct guid guid_new(void);
/**
* Clears an initialised GUID, so guid_is_set() returns true
*
* @param guid GUID to clear
*/
void
guid_clear(struct guid *guid);
/**
* Checks if a GUID is initialised
*
* @param guid GUID to check (can be NULL)
* @return non-zero if GUID is set
*/
int
guid_is_set(const struct guid *guid);
/**
* Converts a GUID to a string representation
*
* @param guid GUID to represent
* @param dest destionation pointer to at least GUID_STR_SIZE
* bytes to store the representation
* @return dest is returned for convenience
*/
const char *guid_to_str(const struct guid *guid, char *dest);
#endif
================================================
FILE: common/list.c
================================================
/**
* xrdp: A Remote Desktop Protocol server.
*
* Copyright (C) Jay Sorg 2004-2014
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
* simple list
*/
#if defined(HAVE_CONFIG_H)
#include <config_ac.h>
#endif
#include <stdlib.h>
#include <stdarg.h>
#include "arch.h"
#include "os_calls.h"
#include "string_calls.h"
#include "list.h"
#include "log.h"
enum
{
DEFAULT_LIST_SIZE = 10,
DEFAULT_GROW_BY_SIZE = 10
};
/******************************************************************************/
struct list *
list_create_sized(unsigned int size)
{
struct list *self;
if (size < DEFAULT_LIST_SIZE)
{
size = DEFAULT_LIST_SIZE;
}
self = (struct list *)calloc(1, sizeof(struct list));
if (self != NULL)
{
self->items = (tbus *)malloc(sizeof(tbus) * size);
if (self->items == NULL)
{
free(self);
self = NULL;
}
else
{
self->grow_by = DEFAULT_GROW_BY_SIZE;
self->alloc_size = size;
}
}
return self;
}
/******************************************************************************/
struct list *
list_create(void)
{
return list_create_sized(DEFAULT_LIST_SIZE);
}
/******************************************************************************/
void
list_delete(struct list *self)
{
int i;
if (self == 0)
{
return;
}
if (self->auto_free)
{
for (i = 0; i < self->count; i++)
{
free((void *)self->items[i]);
self->items[i] = 0;
}
}
free(self->items);
free(self);
}
/******************************************************************************/
static int
grow_list(struct list *self)
{
int rv = 1;
unsigned int new_alloc_size = self->alloc_size + self->grow_by;
tbus *p = (tbus *)realloc(self->items, sizeof(tbus) * new_alloc_size);
if (p == NULL)
{
rv = 0;
}
else
{
self->alloc_size = new_alloc_size;
self->items = p;
}
return rv;
}
/*****************************************************************************/
int
list_add_item(struct list *self, tbus item)
{
if (self->count == self->alloc_size && !grow_list(self))
{
return 0;
}
self->items[self->count] = item;
self->count++;
return 1;
}
/******************************************************************************/
tbus
list_get_item(const struct list *self, int index)
{
if (index < 0 || index >= self->count)
{
return 0;
}
return self->items[index];
}
/******************************************************************************/
void
list_clear(struct list *self)
{
int i;
if (self->auto_free)
{
for (i = 0; i < self->count; i++)
{
free((void *)self->items[i]);
self->items[i] = 0;
}
}
self->count = 0;
self->grow_by = DEFAULT_GROW_BY_SIZE;
self->alloc_size = DEFAULT_LIST_SIZE;
self->items = (tbus *)realloc(self->items, sizeof(tbus) * self->alloc_size);
}
/******************************************************************************/
int
list_index_of(struct list *self, tbus item)
{
int i;
for (i = 0; i < self->count; i++)
{
if (self->items[i] == item)
{
return i;
}
}
return -1;
}
/******************************************************************************/
void
list_remove_item(struct list *self, int index)
{
int i;
if (index >= 0 && index < self->count)
{
if (self->auto_free)
{
free((void *)self->items[index]);
self->items[index] = 0;
}
for (i = index; i < (self->count - 1); i++)
{
self->items[i] = self->items[i + 1];
}
self->count--;
}
}
int
list_insert_item(struct list *self, int index, tbus item)
{
int i;
if (index > self->count)
{
index = self->count;
}
else if (index < 0)
{
index = 0;
}
if (self->count == self->alloc_size && !grow_list(self))
{
return 0;
}
// Move all the items above this location up one
for (i = self->count ; i > index ; --i)
{
self->items[i] = self->items[i - 1];
}
self->count++;
self->items[index] = item;
return 1;
}
/******************************************************************************/
int
list_add_strdup(struct list *self, const char *str)
{
int rv;
char *dup;
if (str == NULL)
{
rv = list_add_item(self, (tintptr)str);
}
else if ((dup = g_strdup(str)) == NULL)
{
rv = 0;
}
else
{
rv = list_add_item(self, (tintptr)dup);
if (!rv)
{
g_free(dup);
}
}
return rv;
}
/******************************************************************************/
int
list_add_strdup_multi(struct list *self, ...)
{
va_list ap;
int entry_count = self->count;
const char *s;
int rv = 1;
va_start(ap, self);
while ((s = va_arg(ap, const char *)) != LIST_ADD_STRDUP_TERM)
{
if (!list_add_strdup(self, s))
{
rv = 0;
break;
}
}
va_end(ap);
if (rv == 0)
{
// Remove the additional items we added
while (self->count > entry_count)
{
list_remove_item(self, self->count - 1);
}
}
return rv;
}
/******************************************************************************/
/* append one list to another using strdup for each item in the list */
/* begins copy at start_index, a zero based index on the source list */
int
list_append_list_strdup(struct list *self, struct list *dest, int start_index)
{
int index;
int rv = 1;
int entry_dest_count = dest->count;
for (index = start_index; index < self->count; index++)
{
const char *item = (const char *)list_get_item(self, index);
if (!list_add_strdup(dest, item))
{
rv = 0;
break;
}
}
if (rv == 0)
{
// Remove the additional items we added
while (dest->count > entry_dest_count)
{
list_remove_item(dest, dest->count - 1);
}
}
return rv;
}
/******************************************************************************/
void
list_dump_items(struct list *self)
{
int index;
if (self->count == 0)
{
LOG_DEVEL(LOG_LEVEL_TRACE, "List is empty");
}
for (index = 0; index < self->count; index++)
{
LOG_DEVEL(LOG_LEVEL_TRACE, "%d: %p", index, (void *) list_get_item(self, index));
}
}
int
split_string_append_fragment(const char **start, const char *end,
struct list *list)
{
unsigned int len = end - *start;
// Check for an unexpected terminator in the string
const char *term = (const char *)memchr(*start, '\0', len);
if (term != NULL)
{
end = term;
len = end - *start;
}
char *copy = (char *)malloc(len + 1);
if (copy == NULL)
{
list_delete(list);
return 0;
}
g_memcpy(copy, *start, len);
copy[len] = '\0';
if (!list_add_item(list, (tintptr)copy))
{
g_free(copy);
list_delete(list);
return 0;
}
*start = end + 1;
return 1;
}
/******************************************************************************/
struct list *
split_string_into_list(const char *str, char character)
{
struct list *result = list_create();
if (result == NULL)
{
return result;
}
result->auto_free = 1;
if (str == NULL)
{
return result;
}
const char *p;
while ((p = g_strchr(str, character)) != NULL)
{
if (!split_string_append_fragment(&str, p, result))
{
return NULL;
}
}
if (*str != '\0')
{
if (!split_string_append_fragment(&str, str + g_strlen(str), result))
{
return NULL;
}
}
return result;
}
================================================
FILE: common/list.h
================================================
/**
* xrdp: A Remote Desktop Protocol server.
*
* Copyright (C) Jay Sorg 2004-2014
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
* simple list
*/
#if !defined(LIST_H)
#define LIST_H
#include "arch.h"
/* list */
struct list
{
tintptr *items;
int count;
int alloc_size;
int grow_by;
int auto_free;
};
struct list *
list_create(void);
/**
* Creates a list with at least the specified number of items
* reserved
* @param size Number of items to reserve
* @return list, or NULL if no memory
*/
struct list *
list_create_sized(unsigned int size);
void
list_delete(struct list *self);
/**
* Adds an item to a list
* @param self The list
* @param item The item to add
* @result 0 if a memory allocation failure occurred. In this
* case the item is not added
*
* Memory allocation failures will not occur if the list is
* sized appropriately when created.
*/
int
list_add_item(struct list *self, tintptr item);
tintptr
list_get_item(const struct list *self, int index);
void
list_clear(struct list *self);
int
list_index_of(struct list *self, tintptr item);
void
list_remove_item(struct list *self, int index);
/**
* Inserts an item into a list
* @param self The list
* @param index The location to insert the item before
* @param item The item to add
* @result 0 if a memory allocation failure occurred. In this
* case the item is not added
*
* Memory allocation failures will not occur if the list is
* sized appropriately when created.
*/
int
list_insert_item(struct list *self, int index, tintptr item);
/**
* Adds strings to a list from another list
* @param self The source list
* @param dest Destination list
* @param start_index Index to start on the source list (zero based)
*
* @result 0 if a memory allocation failure occurred. In this
* case the destination list is unaltered.
*
* Strings from the source list are copied with strdup()
* The dest list should have auto_free set, or memory leaks will occur
*/
int
list_append_list_strdup(struct list *self, struct list *dest, int start_index);
void
list_dump_items(struct list *self);
/**
* Appends a string fragment to a list
* @param[in,out] start Pointer to start of fragment (by reference)
* @param end Pointer to one past end of fragment
* @param list List to append to
* @result 1 for success
*
* In the event of a memory failure, 0 is returned and the list is deleted.
*/
int
split_string_append_fragment(const char **start, const char *end,
struct list *list);
/**
* Splits a string on a separation character and then returns a list of
* the string split by the character, without the character contained within
* the pieces.
*
* The list must be disposed of by the caller.
*
* @param str String to split.
* @param character Character used as the delimiter between strings.
*
* @result 0 if a memory allocation failure occurred.
*
* String fragments in the list are created with strdup()
*/
struct list *
split_string_into_list(const char *str, char character);
/**
* As list_add_item() but for a C string
*
* This is a convenience function for a common operation
* @param self List to append to
* @param str String to append
*
* The passed-in string is strdup'd onto the list, so if auto_free
* isn't set, memory leaks will occur.
*
* A NULL pointer will be added as a NULL entry.
*
* @result 0 if any memory allocation failure occurred. In this case
* the list is unchanged.
*/
int
list_add_strdup(struct list *self, const char *str);
/**
* Add multiple strings to a list
*
* This is a convenience function for a common operation
* @param self List to append to
* @param ... Strings to append. Terminate the list with LIST_ADD_STRDUP_TERM
*
* @result 0 if any memory allocation failure occurred. In this case
* the list is unchanged.
*/
/*
* We need a typed terminator to guarantee the stack object is the
* correct size (cf C99 std 6.2.5(12) for static checkers */
#define LIST_ADD_STRDUP_TERM ((const char *)0)
int
list_add_strdup_multi(struct list *self, ...);
#endif
================================================
FILE: common/list16.c
================================================
/**
* xrdp: A Remote Desktop Protocol server.
*
* Copyright (C) Jay Sorg 2004-2014
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
* simple list
*/
#if defined(HAVE_CONFIG_H)
#include <config_ac.h>
#endif
#include "arch.h"
#include "os_calls.h"
#include "list16.h"
/*****************************************************************************/
struct list16 *
list16_create(void)
{
struct list16 *self;
self = (struct list16 *)g_malloc(sizeof(struct list16), 0);
list16_init(self);
return self;
}
/*****************************************************************************/
void
list16_delete(struct list16 *self)
{
if (self == 0)
{
return;
}
list16_deinit(self);
g_free(self);
}
/*****************************************************************************/
void
list16_init(struct list16 *self)
{
g_memset(self, 0, sizeof(struct list16));
self->max_count = 4;
self->items = self->mitems;
}
/*****************************************************************************/
void
list16_deinit(struct list16 *self)
{
if (self->items != self->mitems)
{
g_free(self->items);
self->items = self->mitems; // Prevent double=free
}
}
/*****************************************************************************/
/**
* Makes the data array larger
*
* @param self The list
* @return 1 for success, 0 for failure
*
* On failure, the data array is unchanged
*/
static int
expand_array(struct list16 *self)
{
tui16 *p;
int i;
int new_max_count = self->max_count + 4;
if (self->items == self->mitems)
{
/* Previous allocation is static. Make a new dynamic allocation */
p = (tui16 *)malloc(sizeof(tui16) * new_max_count);
if (p == NULL)
{
return 0;
}
g_memcpy(p, self->items, sizeof(tui16) * self->max_count);
}
else
{
/* Try to reallocate the existing array */
p = (tui16 *)realloc(self->items, sizeof(tui16) * new_max_count);
if (p == NULL)
{
return 0;
}
}
/* Clear the new elements */
for (i = self->max_count; i < new_max_count; ++i)
{
p[i] = 0;
}
self->max_count = new_max_count;
self->items = p;
return 1;
}
/*****************************************************************************/
int
list16_add_item(struct list16 *self, tui16 item)
{
if (self->count >= self->max_count && !expand_array(self))
{
return 0;
}
self->items[self->count] = item;
self->count++;
return 1;
}
/*****************************************************************************/
tui16
list16_get_item(struct list16 *self, int index)
{
if (index < 0 || index >= self->count)
{
return 0;
}
return self->items[index];
}
/*****************************************************************************/
void
list16_clear(struct list16 *self)
{
if (self->items != self->mitems)
{
g_free(self->items);
}
self->count = 0;
self->max_count = 4;
self->items = self->mitems;
}
/*****************************************************************************/
int
list16_index_of(struct list16 *self, tui16 item)
{
int i;
for (i = 0; i < self->count; i++)
{
if (self->items[i] == item)
{
return i;
}
}
return -1;
}
/*****************************************************************************/
void
list16_remove_item(struct list16 *self, int index)
{
int i;
if (index >= 0 && index < self->count)
{
for (i = index; i < (self->count - 1); i++)
{
self->items[i] = self->items[i + 1];
}
self->count--;
}
}
/*****************************************************************************/
int
list16_insert_item(struct list16 *self, int index, tui16 item)
{
/* Make sure there's at least one free element in the array */
if (self->count >= self->max_count && !expand_array(self))
{
return 0;
}
if (index < self->count)
{
memmove(&self->items[index + 1], &self->items[index],
(self->count - index) * sizeof(tui16));
}
self->items[index] = item;
self->count++;
return 1;
}
================================================
FILE: common/list16.h
================================================
/**
* xrdp: A Remote Desktop Protocol server.
*
* Copyright (C) Jay Sorg 2004-2014
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
* simple list
*/
#if !defined(LIST16_H)
#define LIST16_H
#include "arch.h"
/* list */
struct list16
{
tui16 *items;
int count;
int max_count;
tui16 mitems[4];
};
struct list16 *
list16_create(void);
void
list16_delete(struct list16 *self);
/* Initialise a stack-based list16 */
void
list16_init(struct list16 *self);
/* Free any memory allocated to a list16.
* After this call, list16_init() must be called again to re-use the list */
void
list16_deinit(struct list16 *self);
/* Returns != 0 if item added successfully */
int
list16_add_item(struct list16 *self, tui16 item);
tui16
list16_get_item(struct list16 *self, int index);
void
list16_clear(struct list16 *self);
int
list16_index_of(struct list16 *self, tui16 item);
void
list16_remove_item(struct list16 *self, int index);
/* Returns != 0 if item added successfully */
int
list16_insert_item(struct list16 *self, int index, tui16 item);
#endif
================================================
FILE: common/log.c
================================================
/**
* xrdp: A Remote Desktop Protocol server.
*
* Copyright (C) Jay Sorg 2004-2014
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#if defined(HAVE_CONFIG_H)
#include <config_ac.h>
#endif
#include <sys/time.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <syslog.h>
#include <stdarg.h>
#include <stdio.h>
#include <time.h>
#include <unistd.h>
#include "list.h"
#include "file.h"
#include "os_calls.h"
#include "thread_calls.h"
#include "string_calls.h"
/* Add a define here so that the log.h will hold more information
* when compiled from this C file.
* When compiled normally the log.h file only contain the public parts
* of the operators in this file. */
#define LOGINTERNALSTUFF
#include "log.h"
/* Here we store the current state and configuration of the log */
static struct log_config *g_staticLogConfig = NULL;
/* This file first start with all private functions.
In the end of the file the public functions is defined */
/**
*
* @brief Opens log file
* @param fname log file name
* @return see open(2) return values
*
*/
static int
internal_log_file_open(const char *fname)
{
int ret = -1;
if (fname != NULL)
{
if (g_strcmp(fname, "<stdout>") != 0)
{
ret = open(fname, O_WRONLY | O_CREAT | O_APPEND | O_SYNC,
S_IRUSR | S_IWUSR);
}
else
{
ret = dup(1);
}
}
if (ret != -1)
{
g_file_set_cloexec(ret, 1);
}
return ret;
}
/**
*
* @brief Converts xrdp log level to syslog logging level
* @param lvl logging level
* @return syslog equivalent logging level
*
*/
static int
internal_log_xrdp2syslog(const enum logLevels lvl)
{
switch (lvl)
{
case LOG_LEVEL_ALWAYS:
return LOG_CRIT;
case LOG_LEVEL_ERROR:
return LOG_ERR;
case LOG_LEVEL_WARNING:
return LOG_WARNING;
case LOG_LEVEL_INFO:
return LOG_INFO;
case LOG_LEVEL_DEBUG:
case LOG_LEVEL_TRACE:
return LOG_DEBUG;
default:
g_writeln("Undefined log level - programming error");
return LOG_DEBUG;
}
}
/**
* @brief Converts xrdp log levels to textual logging levels
* @param lvl logging level
* @param str pointer to a string, must be allocated before
*
*/
void
internal_log_lvl2str(const enum logLevels lvl, char *str)
{
switch (lvl)
{
case LOG_LEVEL_ALWAYS:
snprintf(str, 9, "%s", "[CORE ] ");
break;
case LOG_LEVEL_ERROR:
snprintf(str, 9, "%s", "[ERROR] ");
break;
case LOG_LEVEL_WARNING:
snprintf(str, 9, "%s", "[WARN ] ");
break;
case LOG_LEVEL_INFO:
snprintf(str, 9, "%s", "[INFO ] ");
break;
case LOG_LEVEL_DEBUG:
snprintf(str, 9, "%s", "[DEBUG] ");
break;
case LOG_LEVEL_TRACE:
snprintf(str, 9, "%s", "[TRACE] ");
break;
default:
snprintf(str, 9, "%s", "PRG ERR!");
g_writeln("Programming error - undefined log level!!!");
}
}
/******************************************************************************/
enum logReturns
internal_log_start(struct log_config *l_cfg)
{
enum logReturns ret = LOG_GENERAL_ERROR;
if (0 == l_cfg)
{
ret = LOG_ERROR_MALLOC;
return ret;
}
/* if progname is NULL, we return error */
if (0 == l_cfg->program_name)
{
g_writeln("program_name not properly assigned");
return ret;
}
if (l_cfg->dump_on_start)
{
internal_log_config_dump(l_cfg);
}
/* open file */
if (l_cfg->log_file != NULL)
{
l_cfg->fd = internal_log_file_open(l_cfg->log_file);
if (-1 == l_cfg->fd)
{
return LOG_ERROR_FILE_OPEN;
}
}
/* if syslog is enabled, open it */
if (l_cfg->enable_syslog)
{
openlog(l_cfg->program_name, LOG_CONS | LOG_PID, LOG_DAEMON);
}
#ifdef LOG_ENABLE_THREAD
pthread_mutexattr_init(&(l_cfg->log_lock_attr));
pthread_mutex_init(&(l_cfg->log_lock), &(l_cfg->log_lock_attr));
#endif
return LOG_STARTUP_OK;
}
/******************************************************************************/
enum logReturns
internal_log_end(struct log_config *l_cfg)
{
enum logReturns ret = LOG_GENERAL_ERROR;
/* if log is closed, quit silently */
if (0 == l_cfg)
{
return ret;
}
if (-1 != l_cfg->fd)
{
/* closing logfile... */
g_file_close(l_cfg->fd);
}
/* if syslog is enabled, close it */
if (l_cfg->enable_syslog)
{
closelog();
}
/* freeing allocated memory */
if (0 != l_cfg->log_file)
{
g_free(l_cfg->log_file);
l_cfg->log_file = 0;
}
ret = LOG_STARTUP_OK;
return ret;
}
/**
* Converts a string representing the log level to a value
*/
enum logLevels
internal_log_text2level(const char *buf)
{
if (0 == g_strcasecmp(buf, "0") ||
0 == g_strcasecmp(buf, "core"))
{
return LOG_LEVEL_ALWAYS;
}
else if (0 == g_strcasecmp(buf, "1") ||
0 == g_strcasecmp(buf, "error"))
{
return LOG_LEVEL_ERROR;
}
else if (0 == g_strcasecmp(buf, "2") ||
0 == g_strcasecmp(buf, "warn") ||
0 == g_strcasecmp(buf, "warning"))
{
return LOG_LEVEL_WARNING;
}
else if (0 == g_strcasecmp(buf, "3") ||
0 == g_strcasecmp(buf, "info"))
{
return LOG_LEVEL_INFO;
}
else if (0 == g_strcasecmp(buf, "4") ||
0 == g_strcasecmp(buf, "debug"))
{
return LOG_LEVEL_DEBUG;
}
else if (0 == g_strcasecmp(buf, "5") ||
0 == g_strcasecmp(buf, "trace"))
{
return LOG_LEVEL_TRACE;
}
g_writeln("Your configured log level is corrupt - we use debug log level");
return LOG_LEVEL_DEBUG;
}
/******************************************************************************/
static struct log_config *
internal_config_read_logging(int file,
const char *applicationName,
const char *section_prefix)
{
int i;
char *buf;
char *temp_buf;
char section_name[512];
struct log_config *lc;
struct list *param_n;
struct list *param_v;
lc = internalInitAndAllocStruct();
if (lc == NULL)
{
return NULL;
}
param_n = list_create();
param_n->auto_free = 1;
param_v = list_create();
param_v->auto_free = 1;
list_clear(param_v);
list_clear(param_n);
/* setting defaults */
lc->program_name = applicationName;
lc->log_file = 0;
lc->fd = -1;
lc->log_level = LOG_LEVEL_INFO;
lc->enable_console = 0;
lc->console_level = LOG_LEVEL_INFO;
lc->enable_syslog = 0;
lc->syslog_level = LOG_LEVEL_INFO;
lc->dump_on_start = 0;
lc->enable_pid = 0;
g_snprintf(section_name, 511, "%s%s", section_prefix, SESMAN_CFG_LOGGING);
file_read_section(file, section_name, param_n, param_v);
for (i = 0; i < param_n->count; i++)
{
buf = (char *)list_get_item(param_n, i);
if (0 == g_strcasecmp(buf, SESMAN_CFG_LOG_FILE))
{
lc->log_file = g_strdup((char *)list_get_item(param_v, i));
if (lc->log_file != NULL)
{
if (lc->log_file[0] != '/' && g_strcmp(lc->log_file, "<stdout>") != 0)
{
temp_buf = (char *)g_malloc(512, 0);
g_snprintf(temp_buf, 511, "%s/%s", XRDP_LOG_PATH, lc->log_file);
g_free(lc->log_file);
lc->log_file = temp_buf;
}
}
}
if (0 == g_strcasecmp(buf, SESMAN_CFG_LOG_LEVEL))
{
lc->log_level = internal_log_text2level((char *)list_get_item(param_v, i));
}
if (0 == g_strcasecmp(buf, SESMAN_CFG_LOG_ENABLE_SYSLOG))
{
lc->enable_syslog = g_text2bool((char *)list_get_item(param_v, i));
}
if (0 == g_strcasecmp(buf, SESMAN_CFG_LOG_SYSLOG_LEVEL))
{
lc->syslog_level = internal_log_text2level((char *)list_get_item(param_v, i));
}
if (0 == g_strcasecmp(buf, SESMAN_CFG_LOG_ENABLE_CONSOLE))
{
lc->enable_console = g_text2bool((char *)list_get_item(param_v, i));
}
if (0 == g_strcasecmp(buf, SESMAN_CFG_LOG_CONSOLE_LEVEL))
{
lc->console_level = internal_log_text2level((char *)list_get_item(param_v, i));
}
if (0 == g_strcasecmp(buf, SESMAN_CFG_LOG_ENABLE_PID))
{
lc->enable_pid = g_text2bool((char *)list_get_item(param_v, i));
}
}
if (0 == lc->log_file)
{
lc->log_file = g_strdup("./sesman.log");
}
/* try to create path if not exist */
g_create_path(lc->log_file);
#ifdef LOG_PER_LOGGER_LEVEL
int len;
struct log_logger_level *logger;
list_clear(param_v);
list_clear(param_n);
g_snprintf(section_name, 511, "%s%s", section_prefix, SESMAN_CFG_LOGGING_LOGGER);
file_read_section(file, section_name, param_n, param_v);
for (i = 0; i < param_n->count; i++)
{
logger = (struct log_logger_level *)g_malloc(sizeof(struct log_logger_level), 1);
list_add_item(lc->per_logger_level, (tbus) logger);
logger->log_level = internal_log_text2level((char *)list_get_item(param_v, i));
g_strncpy(logger->logger_name, (char *)list_get_item(param_n, i), LOGGER_NAME_SIZE);
logger->logger_name[LOGGER_NAME_SIZE] = '\0';
len = g_strlen(logger->logger_name);
if (len >= 2
&& logger->logger_name[len - 2] == '('
&& logger->logger_name[len - 1] == ')' )
{
logger->logger_type = LOG_TYPE_FUNCTION;
logger->logger_name[len - 2] = '\0';
}
else
{
logger->logger_type = LOG_TYPE_FILE;
}
}
#endif
list_delete(param_v);
list_delete(param_n);
return lc;
}
void
internal_log_config_dump(struct log_config *config)
{
char str_level[20];
#ifdef LOG_PER_LOGGER_LEVEL
struct log_logger_level *logger;
int i;
#endif
g_printf("logging configuration:\r\n");
if (config->log_file)
{
internal_log_lvl2str(config->log_level, str_level);
g_printf("\tLogFile: %s\r\n", config->log_file);
g_printf("\tLogLevel: %s\r\n", str_level);
}
else
{
g_printf("\tLogFile: %s\r\n", "<disabled>");
}
if (config->enable_console)
{
internal_log_lvl2str(config->console_level, str_level);
}
else
{
g_strcpy(str_level, "<disabled>");
}
g_printf("\tConsoleLevel: %s\r\n", str_level);
if (config->enable_syslog)
{
internal_log_lvl2str(config->syslog_level, str_level);
}
else
{
g_strcpy(str_level, "<disabled>");
}
g_printf("\tSyslogLevel: %s\r\n", str_level);
#ifdef LOG_PER_LOGGER_LEVEL
g_printf("per logger configuration:\r\n");
for (i = 0; i < config->per_logger_level->count; i++)
{
logger = (struct log_logger_level *)list_get_item(config->per_logger_level, i);
internal_log_lvl2str(logger->log_level, str_level);
g_printf("\t%-*s: %s\r\n", LOGGER_NAME_SIZE, logger->logger_name, str_level);
}
if (config->per_logger_level->count == 0)
{
g_printf("\tNone\r\n");
}
#endif
}
struct log_config *
internalInitAndAllocStruct(void)
{
struct log_config *ret = g_new0(struct log_config, 1);
if (ret != NULL)
{
ret->fd = -1;
ret->enable_syslog = 0;
#ifdef LOG_PER_LOGGER_LEVEL
ret->per_logger_level = list_create();
if (ret->per_logger_level != NULL)
{
ret->per_logger_level->auto_free = 1;
}
else
{
g_writeln("could not allocate memory for log struct");
g_free(ret);
ret = NULL;
}
#endif
}
else
{
g_writeln("could not allocate memory for log struct");
}
return ret;
}
/**
* Copies logging levels only from one log_config structure to another
**/
static void
internal_log_config_copy_levels(struct log_config *dest,
const struct log_config *src)
{
dest->log_level = src->log_level;
dest->enable_syslog = src->enable_syslog;
dest->syslog_level = src->syslog_level;
dest->enable_console = src->enable_console;
dest->console_level = src->console_level;
#ifdef LOG_PER_LOGGER_LEVEL
if (dest->per_logger_level == NULL)
{
dest->per_logger_level = list_create();
if (dest->per_logger_level == NULL)
{
return;
}
dest->per_logger_level->auto_free = 1;
}
else
{
list_clear(dest->per_logger_level);
}
if (src->per_logger_level == NULL)
{
return;
}
int i;
for (i = 0; i < src->per_logger_level->count; ++i)
{
struct log_logger_level *dst_logger =
(struct log_logger_level *)g_malloc(sizeof(struct log_logger_level), 1);
*dst_logger = *(struct log_logger_level *) list_get_item(src->per_logger_level, i),
list_add_item(dest->per_logger_level, (tbus) dst_logger);
}
#endif
}
static void
internal_log_config_copy(struct log_config *dest, const struct log_config *src)
{
if (src != NULL && dest != NULL)
{
dest->fd = src->fd;
g_free(dest->log_file);
dest->log_file = g_strdup(src->log_file);
#ifdef LOG_ENABLE_THREAD
dest->log_lock = src->log_lock;
dest->log_lock_attr = src->log_lock_attr;
#endif
dest->program_name = src->program_name;
dest->enable_pid = src->enable_pid;
dest->dump_on_start = src->dump_on_start;
internal_log_config_copy_levels(dest, src);
}
}
bool_t
internal_log_is_enabled_for_level(const enum logLevels log_level,
const bool_t override_destination_level,
const enum logLevels override_log_level)
{
/* Is log initialized? */
if (g_staticLogConfig == NULL)
{
return 0;
}
else if (g_staticLogConfig->fd < 0
&& !g_staticLogConfig->enable_syslog
&& !g_staticLogConfig->enable_console)
{
/* all logging outputs are disabled */
return 0;
}
else if (override_destination_level)
{
/* Override is enabled - should the message should be logged? */
return log_level <= override_log_level;
}
/* Override is disabled - Is there at least one log destination
* which will accept the message based on the log level? */
else if (g_staticLogConfig->fd >= 0
&& log_level <= g_staticLogConfig->log_level)
{
return 1;
}
else if (g_staticLogConfig->enable_syslog
&& log_level <= g_staticLogConfig->syslog_level)
{
return 1;
}
else if (g_staticLogConfig->enable_console
&& log_level <= g_staticLogConfig->console_level)
{
return 1;
}
else
{
return 0;
}
}
bool_t
internal_log_location_overrides_level(const char *function_name,
const char *file_name,
enum logLevels *log_level_return)
{
#ifdef LOG_PER_LOGGER_LEVEL
struct log_logger_level *logger = NULL;
int i;
if (g_staticLogConfig == NULL)
{
return 0;
}
for (i = 0; i < g_staticLogConfig->per_logger_level->count; i++)
{
logger = (struct log_logger_level *)list_get_item(g_staticLogConfig->per_logger_level, i);
if ((logger->logger_type == LOG_TYPE_FILE
&& 0 == g_strncmp(logger->logger_name, file_name, LOGGER_NAME_SIZE))
|| (logger->logger_type == LOG_TYPE_FUNCTION
&& 0 == g_strncmp(logger->logger_name, function_name, LOGGER_NAME_SIZE)))
{
*log_level_return = logger->log_level;
return 1;
}
}
#endif
return 0;
}
/*
* Here below the public functions
*/
struct log_config *
log_config_init_for_console(enum logLevels lvl, const char *override_name)
{
struct log_config *config = internalInitAndAllocStruct();
if (config != NULL)
{
config->program_name = "<null>";
config->enable_console = 1;
if (override_name != NULL && override_name[0] != '\0')
{
config->console_level = internal_log_text2level(override_name);
}
else
{
config->console_level = lvl;
}
}
return config;
}
struct log_config *
log_config_init_from_config(const char *iniFilename,
const char *applicationName,
const char *section_prefix)
{
int fd;
struct log_config *config;
if (applicationName == NULL)
{
g_writeln("Programming error your application name cannot be null");
return NULL;
}
if (iniFilename == NULL)
{
g_writeln("The inifile is null to log_config_init_from_config!");
return NULL;
}
fd = g_file_open_ro(iniFilename);
if (-1 == fd)
{
g_writeln("We could not open the configuration file to read log parameters");
return NULL;
}
/* read logging config */
config = internal_config_read_logging(fd, applicationName, section_prefix);
/* cleanup */
g_file_close(fd);
return config;
}
enum logReturns
log_config_free(struct log_config *config)
{
if (config != NULL)
{
#ifdef LOG_PER_LOGGER_LEVEL
if (config->per_logger_level != NULL)
{
list_delete(config->per_logger_level);
config->per_logger_level = NULL;
}
#endif
if (0 != config->log_file)
{
g_free(config->log_file);
config->log_file = 0;
}
g_free(config);
}
return LOG_STARTUP_OK;
}
/**
* Restarts the logging.
*
* The logging file is never changed, as it is common in xrdp to share a
* log file between parents and children. The end result would be
* confusing for the user.
*/
static enum logReturns
log_restart_from_param(const struct log_config *lc)
{
enum logReturns rv = LOG_GENERAL_ERROR;
if (g_staticLogConfig == NULL)
{
log_message(LOG_LEVEL_ALWAYS, "Log not already initialized");
}
else if (lc == NULL)
{
g_writeln("lc to log_start_from_param is NULL");
}
else
{
if (g_staticLogConfig->fd >= 0 &&
g_strcmp(g_staticLogConfig->log_file, lc->log_file) != 0)
{
log_message(LOG_LEVEL_WARNING,
"Unable to change log file name from %s to %s",
g_staticLogConfig->log_file,
lc->log_file);
}
/* Reconfigure syslog logging, allowing for a program_name change */
if (g_staticLogConfig->enable_syslog)
{
closelog();
}
if (lc->enable_syslog)
{
openlog(lc->program_name, LOG_CONS | LOG_PID, LOG_DAEMON);
}
/* Copy over simple values... */
#ifdef LOG_ENABLE_THREAD
g_staticLogConfig->log_lock = lc->log_lock;
g_staticLogConfig->log_lock_attr = lc->log_lock_attr;
#endif
g_staticLogConfig->program_name = lc->program_name;
g_staticLogConfig->enable_pid = lc->enable_pid;
g_staticLogConfig->dump_on_start = lc->dump_on_start;
/* ... and the log levels */
internal_log_config_copy_levels(g_staticLogConfig, lc);
rv = LOG_STARTUP_OK;
}
return rv;
}
enum logReturns
log_start_from_param(const struct log_config *src_log_config)
{
enum logReturns ret = LOG_GENERAL_ERROR;
if (g_staticLogConfig != NULL)
{
log_message(LOG_LEVEL_ALWAYS, "Log already initialized");
return ret;
}
if (src_log_config == NULL)
{
g_writeln("src_log_config to log_start_from_param is NULL");
return ret;
}
else
{
g_staticLogConfig = internalInitAndAllocStruct();
if (g_staticLogConfig == NULL)
{
g_writeln("internalInitAndAllocStruct failed");
return LOG_ERROR_MALLOC;
}
internal_log_config_copy(g_staticLogConfig, src_log_config);
ret = internal_log_start(g_staticLogConfig);
if (ret != LOG_STARTUP_OK)
{
g_writeln("Could not start log");
log_config_free(g_staticLogConfig);
g_staticLogConfig = NULL;
}
}
return ret;
}
/**
* This function initialize the log facilities according to the configuration
* file, that is described by the in parameter.
* @param applicationName the name that is used in the log for the running application
* @return 0 on success
*/
enum logReturns
log_start(const char *iniFile, const char *applicationName,
unsigned int flags)
{
enum logReturns ret = LOG_GENERAL_ERROR;
struct log_config *config;
config = log_config_init_from_config(iniFile, applicationName, "");
if (config != NULL)
{
config->dump_on_start = (flags & LOG_START_DUMP_CONFIG) ? 1 : 0;
if (flags & LOG_START_RESTART)
{
ret = log_restart_from_param(config);
if (ret != LOG_STARTUP_OK)
{
g_writeln("Could not restart log");
}
}
else
{
ret = log_start_from_param(config);
if (ret != LOG_STARTUP_OK)
{
g_writeln("Could not start log");
}
}
log_config_free(config);
}
else
{
g_writeln("Error reading configuration for log based on config: %s",
iniFile);
}
return ret;
}
/**
* Function that terminates all logging
*/
enum logReturns
log_end(void)
{
enum logReturns ret = LOG_GENERAL_ERROR;
ret = internal_log_end(g_staticLogConfig);
log_config_free(g_staticLogConfig);
g_staticLogConfig = NULL;
return ret;
}
/*****************************************************************************/
/* log a hex dump */
enum logReturns
log_hexdump(const enum logLevels log_level,
const char *message,
const char *src,
int len)
{
return log_hexdump_with_location("", "", 0, log_level, message, src, len);
}
/*****************************************************************************/
/* log a hex dump */
enum logReturns
log_hexdump_with_location(const char *function_name,
const char *file_name,
const int line_number,
const enum logLevels log_level,
const char *message,
const char *src,
int len)
{
char *dump_buffer;
enum logReturns rv = LOG_STARTUP_OK;
enum logLevels override_log_level = LOG_LEVEL_NEVER;
bool_t override_destination_level = 0;
override_destination_level = internal_log_location_overrides_level(
function_name,
file_name,
&override_log_level);
if (!internal_log_is_enabled_for_level(log_level, override_destination_level, override_log_level))
{
return LOG_STARTUP_OK;
}
/* Start the dump on a new line so that the first line of the dump is
aligned to the first column instead of to after the log message
preamble (eg. time, log level, ...)
*/
#ifdef _WIN32
#define HEX_DUMP_HEADER ("Hex Dump:\r\n")
#else
#ifdef _MACOS
#define HEX_DUMP_HEADER ("Hex Dump:\r")
#else
#define HEX_DUMP_HEADER ("Hex Dump:\n")
#endif
#endif
dump_buffer = g_bytes_to_hexdump(src, len);
if (dump_buffer != NULL)
{
if (g_strlen(file_name) > 0)
{
rv = log_message_with_location(function_name, file_name, line_number,
log_level, "%s %s%s",
message, HEX_DUMP_HEADER, dump_buffer);
}
else
{
rv = log_message(log_level, "%s %s%s",
message, HEX_DUMP_HEADER, dump_buffer);
}
g_free(dump_buffer);
}
return rv;
}
enum logReturns
log_message_with_location(const char *function_name,
const char *file_name,
const int line_number,
const enum logLevels level,
const char *msg,
...)
{
va_list ap;
enum logReturns rv;
char buff[LOG_BUFFER_SIZE];
enum logLevels override_log_level = LOG_LEVEL_NEVER;
bool_t override_destination_level = 0;
if (g_staticLogConfig == NULL)
{
g_writeln("The log reference is NULL - log not initialized properly "
"when called from [%s(%s:%d)]",
(function_name != NULL ? function_name : "unknown_function"),
(file_name != NULL ? file_name : "unknown_file"),
line_number);
return LOG_ERROR_NO_CFG;
}
override_destination_level = internal_log_location_overrides_level(
function_name,
file_name,
&override_log_level);
if (!internal_log_is_enabled_for_level(level, override_destination_level, override_log_level))
{
return LOG_STARTUP_OK;
}
g_snprintf(buff, LOG_BUFFER_SIZE, "[%s(%s:%d)] %s",
function_name, file_name, line_number, msg);
va_start(ap, msg);
rv = internal_log_message(level, override_destination_level, override_log_level, buff, ap);
va_end(ap);
return rv;
}
enum logReturns
log_message(const enum logLevels lvl, const char *msg, ...)
{
va_list ap;
enum logReturns rv;
va_start(ap, msg);
rv = internal_log_message(lvl, 0, LOG_LEVEL_NEVER, msg, ap);
va_end(ap);
return rv;
}
enum logReturns
internal_log_message(const enum logLevels lvl,
const bool_t override_destination_level,
const enum logLevels override_log_level,
const char *msg,
va_list ap)
{
char buff[LOG_BUFFER_SIZE + 43]; /* 31 ("[2022-10-07T19:58:33.065+0900] ") + 8 (log level) + 4 (space+cr+lf+\0) */
int len = 0;
enum logReturns rv = LOG_STARTUP_OK;
int writereply;
if (g_staticLogConfig == NULL)
{
g_writeln("The log reference is NULL - log not initialized properly");
return LOG_ERROR_NO_CFG;
}
if (0 > g_staticLogConfig->fd
&& g_staticLogConfig->enable_syslog == 0
&& g_staticLogConfig->enable_console == 0)
{
return LOG_ERROR_FILE_NOT_OPEN;
}
if (!internal_log_is_enabled_for_level(lvl, override_destination_level, override_log_level))
{
return LOG_STARTUP_OK;
}
getFormattedDateTime(buff, 32);
internal_log_lvl2str(lvl, buff + 31);
if (g_staticLogConfig->enable_pid)
{
/* 31 (datetime) + 8 (log level) = 39 */
g_snprintf(buff + 39, LOG_BUFFER_SIZE, "[pid:%d tid:%lld] ",
g_getpid(), (long long) tc_get_threadid());
len = g_strlen(buff + 39);
}
len += vsnprintf(buff + 39 + len, LOG_BUFFER_SIZE - len, msg, ap);
/* checking for truncated messages */
if (len > LOG_BUFFER_SIZE)
{
log_message(LOG_LEVEL_WARNING, "next message will be truncated");
len = LOG_BUFFER_SIZE;
}
/* forcing the end of message string */
/* 31 (datetime) + 8 (log level) = 39 */
#ifdef _WIN32
buff[len + 39] = '\r';
buff[len + 40] = '\n';
buff[len + 41] = '\0';
#else
#ifdef _MACOS
buff[len + 39] = '\r';
buff[len + 40] = '\0';
#else
buff[len + 39] = '\n';
buff[len + 40] = '\0';
#endif
#endif
if (g_staticLogConfig->enable_syslog
&& ((override_destination_level && lvl <= override_log_level)
|| (!override_destination_level && lvl <= g_staticLogConfig->syslog_level)))
{
/* log to syslog*/
/* %s fix compiler warning 'not a string literal' */
syslog(internal_log_xrdp2syslog(lvl), "%s", buff + 31);
}
if (g_staticLogConfig->enable_console
&& ((override_destination_level && lvl <= override_log_level)
|| (!override_destination_level && lvl <= g_staticLogConfig->console_level)))
{
/* log to console */
g_printf("%s", buff);
}
if ((override_destination_level && lvl <= override_log_level)
|| (!override_destination_level && lvl <= g_staticLogConfig->log_level))
{
/* log to application logfile */
if (g_staticLogConfig->fd >= 0)
{
#ifdef LOG_ENABLE_THREAD
pthread_mutex_lock(&(g_staticLogConfig->log_lock));
#endif
writereply = g_file_write(g_staticLogConfig->fd, buff, g_strlen(buff));
if (writereply <= 0)
{
rv = LOG_ERROR_NULL_FILE;
}
#ifdef LOG_ENABLE_THREAD
pthread_mutex_unlock(&(g_staticLogConfig->log_lock));
#endif
}
}
return rv;
}
/**
* Return the configured log file name
*/
char *
getLogFile(char *replybuf, int bufsize)
{
if (g_staticLogConfig)
{
if (g_staticLogConfig->log_file)
{
g_strncpy(replybuf, g_staticLogConfig->log_file, bufsize);
}
else
{
g_sprintf(replybuf, "The log_file name is NULL");
}
}
else
{
g_snprintf(replybuf, bufsize, "The log is not properly started");
}
return replybuf;
}
/**
* Returns formatted datetime for log
*/
char *
getFormattedDateTime(char *replybuf, int bufsize)
{
char buf_datetime[21]; /* 2022-10-07T16:36:04 + . */
char buf_millisec[4]; /* 357 */
char buf_timezone[6]; /* +0900 */
struct tm *now;
struct timeval tv;
int millisec;
gettimeofday(&tv, NULL);
now = localtime(&tv.tv_sec);
millisec = (tv.tv_usec + 500 / 1000);
g_snprintf(buf_millisec, sizeof(buf_millisec), "%03d", millisec);
strftime(buf_datetime, sizeof(buf_datetime), "%FT%T.", now);
strftime(buf_timezone, sizeof(buf_timezone), "%z", now);
g_snprintf(replybuf, bufsize, "[%s%s%s] ", buf_datetime, buf_millisec, buf_timezone);
return replybuf;
}
/*****************************************************************************/
#ifdef USE_DEVEL_LOGGING
void
log_devel_leaking_fds(const char *exe, int min, int max)
{
struct list *fd_list = g_get_open_fds(min, max);
if (fd_list != NULL)
{
int i;
for (i = 0 ; i < fd_list->count ; ++i)
{
int fd = (int)fd_list->items[i];
if (g_file_get_cloexec(fd) == 0)
{
LOG_DEVEL(LOG_LEVEL_WARNING,
"File descriptor %d is not CLOEXEC when running %s",
fd, exe);
}
}
}
}
#endif // USE_DEVEL_LOGGING
================================================
FILE: common/log.h
================================================
/**
* xrdp: A Remote Desktop Protocol server.
*
* Copyright (C) Jay Sorg 2004-2014
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#ifndef LOG_H
#define LOG_H
#include <pthread.h>
#include "arch.h"
#include "defines.h"
#include "list.h"
/* Check the config_ac.h file is included so we know whether to enable the
* development macros
*/
#ifndef CONFIG_AC_H
# error config_ac.h not visible in log.h
#endif
/* logging buffer size */
#define LOG_BUFFER_SIZE 8192
#define LOGGER_NAME_SIZE 50
/* logging levels */
enum logLevels
{
LOG_LEVEL_ALWAYS = 0,
LOG_LEVEL_ERROR, /* for describing non-recoverable error states in a request or method */
LOG_LEVEL_WARNING, /* for describing recoverable error states in a request or method */
LOG_LEVEL_INFO, /* for low verbosity and high level descriptions of normal operations */
LOG_LEVEL_DEBUG, /* for medium verbosity and low level descriptions of normal operations */
LOG_LEVEL_TRACE, /* for high verbosity and low level descriptions of normal operations (eg. method or wire tracing) */
LOG_LEVEL_NEVER,
};
/* startup return values */
enum logReturns
{
LOG_STARTUP_OK = 0,
LOG_ERROR_MALLOC,
LOG_ERROR_NULL_FILE,
LOG_ERROR_FILE_OPEN,
LOG_ERROR_NO_CFG,
LOG_ERROR_FILE_NOT_OPEN,
LOG_GENERAL_ERROR
};
#define SESMAN_CFG_LOGGING "Logging"
#define SESMAN_CFG_LOGGING_LOGGER "LoggingPerLogger"
#define SESMAN_CFG_LOG_FILE "LogFile"
#define SESMAN_CFG_LOG_LEVEL "LogLevel"
#define SESMAN_CFG_LOG_ENABLE_CONSOLE "EnableConsole"
#define SESMAN_CFG_LOG_CONSOLE_LEVEL "ConsoleLevel"
#define SESMAN_CFG_LOG_ENABLE_SYSLOG "EnableSyslog"
#define SESMAN_CFG_LOG_SYSLOG_LEVEL "SyslogLevel"
#define SESMAN_CFG_LOG_ENABLE_PID "EnableProcessId"
/* enable threading */
/*#define LOG_ENABLE_THREAD*/
#ifdef USE_DEVEL_LOGGING
#define LOG_PER_LOGGER_LEVEL
/**
* @brief Logging macro for messages that are for an XRDP developer to
* understand and debug XRDP code.
*
* Note: all log levels are relevant to help a developer understand XRDP at
* different levels of granularity.
*
* Note: the logging function calls are removed when USE_DEVEL_LOGGING is
* NOT defined.
*
* Note: when the build is configured with --enable-devel-logging, then
* the log level can be configured per the source file name or method name
* (with the suffix "()") in the [LoggingPerLogger]
* section of the configuration file.
*
* For example:
* ```
* [LoggingPerLogger]
* xrdp.c=DEBUG
* main()=WARNING
* ```
*
* @param lvl, the log level
* @param msg, the log text as a printf format c-string
* @param ... the arguments for the printf format c-string
*/
#define LOG_DEVEL(log_level, args...) \
log_message_with_location(__func__, __FILE__, __LINE__, log_level, args)
/**
* @brief Logging macro for messages that are for a system administrator to
* configure and run XRDP on their machine.
*
* Note: the logging function calls contain additional code location info when
* USE_DEVEL_LOGGING is defined.
*
* @param lvl, the log level
* @param msg, the log text as a printf format c-string
* @param ... the arguments for the printf format c-string
*/
#define LOG(log_level, args...) \
log_message_with_location(__func__, __FILE__, __LINE__, log_level, args)
/**
* @brief Logging macro for logging the contents of a byte array using a hex
* dump format.
*
* Note: the logging function calls are removed when USE_DEVEL_LOGGING is
* NOT defined.
*
* @param log_level, the log level
* @param message, a message prefix for the hex dump. Note: no printf like
* formatting is done to this message.
* @param buffer, a pointer to the byte array to log as a hex dump
* @param length, the length of the byte array to log
*/
#define LOG_DEVEL_HEXDUMP(log_level, message, buffer, length) \
log_hexdump_with_location(__func__, __FILE__, __LINE__, log_level, message, buffer, length)
/**
* @brief Logging macro for logging the contents of a byte array using a hex
* dump format.
*
* @param log_level, the log level
* @param message, a message prefix for the hex dump. Note: no printf like
* formatting is done to this message.
* @param buffer, a pointer to the byte array to log as a hex dump
* @param length, the length of the byte array to log
*/
#define LOG_HEXDUMP(log_level, message, buffer, length) \
log_hexdump_with_location(__func__, __FILE__, __LINE__, log_level, message, buffer, length)
#define LOG_DEVEL_LEAKING_FDS(exe,min,max) log_devel_leaking_fds(exe,min,max)
#else
#define LOG(log_level, args...) log_message(log_level, args)
#define LOG_HEXDUMP(log_level, message, buffer, length) \
log_hexdump(log_level, message, buffer, length)
/* Since log_message() returns a value ensure that the elided versions of
* LOG_DEVEL and LOG_DEVEL_HEXDUMP also "fake" returning the success value
*/
#define LOG_DEVEL(log_level, args...) UNUSED_VAR(LOG_STARTUP_OK)
#define LOG_DEVEL_HEXDUMP(log_level, message, buffer, length) UNUSED_VAR(LOG_STARTUP_OK)
#define LOG_DEVEL_LEAKING_FDS(exe,min,max)
#endif
/* Flags values for log_start() */
/**
* Dump the log config on startup
*/
#define LOG_START_DUMP_CONFIG (1<<0)
/**
* Restart the logging system.
*
* On a restart, existing files are not closed. This is because the
* files may be shared by sub-processes, and the result will not be what the
* user expects
*/
#define LOG_START_RESTART (1<<1)
#ifdef LOG_PER_LOGGER_LEVEL
enum log_logger_type
{
LOG_TYPE_FILE = 0,
LOG_TYPE_FUNCTION,
};
struct log_logger_level
{
enum logLevels log_level;
enum log_logger_type logger_type;
char logger_name[LOGGER_NAME_SIZE + 1];
};
#endif
struct log_config
{
const char *program_name; /* Pointer to static storage */
char *log_file; /* Dynamically allocated */
int fd;
enum logLevels log_level;
int enable_console;
enum logLevels console_level;
int enable_syslog;
enum logLevels syslog_level;
#ifdef LOG_PER_LOGGER_LEVEL
struct list *per_logger_level;
#endif
int dump_on_start;
int enable_pid;
#ifdef LOG_ENABLE_THREAD
pthread_mutex_t log_lock;
pthread_mutexattr_t log_lock_attr;
#endif
};
/* internal functions, only used in log.c if this ifdef is defined.*/
#ifdef LOGINTERNALSTUFF
/**
*
* @brief Starts the logging subsystem
* @param l_cfg logging system configuration
*
*/
enum logReturns
internal_log_start(struct log_config *l_cfg);
/**
*
* @brief Shuts down the logging subsystem
* @param l_cfg pointer to the logging subsystem to stop
*
*/
enum logReturns
internal_log_end(struct log_config *l_cfg);
/**
* Converts a log level to a string
* @param lvl the loglevel
* @param str pointer where the string will be stored.
*/
void
internal_log_lvl2str(const enum logLevels lvl, char *str);
/**
*
* @brief Converts a string to a log level
* @param buf The string to convert
* @return The corresponding level or LOG_LEVEL_DEBUG if error
*
*/
enum logLevels
internal_log_text2level(const char *buf);
/**
* A function that init our struct that holds all state and
* also init its content.
* @return LOG_STARTUP_OK or LOG_ERROR_MALLOC
*/
struct log_config *
internalInitAndAllocStruct(void);
/**
* Print the contents of the logging config to stdout.
*/
void
internal_log_config_dump(struct log_config *config);
/**
* the log function that all files use to log an event.
* @param lvl the loglevel
* @param override_destination_level if true then the destination log level is not used
* @param override_log_level the loglevel instead of the destination log level if override_destination_level is true
* @param msg the logtext.
* @param ap the values for the message format arguments
*/
enum logReturns
internal_log_message(const enum logLevels lvl,
const bool_t override_destination_level,
const enum logLevels override_log_level,
const char *msg,
va_list ap);
/**
* @param log_level the log level
* @param override_destination_level if true then the destination log level is ignored.
* @param override_log_level the log level to use instead of the destination log level
* if override_destination_level is true
* @return true if at least one log destination will accept a message logged at the given level.
*/
bool_t
internal_log_is_enabled_for_level(const enum logLevels log_level,
const bool_t override_destination_level,
const enum logLevels override_log_level);
/**
* @param function_name the function name (typically the __func__ macro)
* @param file_name the file name (typically the __FILE__ macro)
* @param[out] log_level_return the log level to use instead of the destination log level
* @return true if the logger location overrides the destination log levels
*/
bool_t
internal_log_location_overrides_level(const char *function_name,
const char *file_name,
enum logLevels *log_level_return);
/*End of internal functions*/
#endif
/**
* This function initialize the log facilities according to the configuration
* file, that is described by the in parameter.
* @param applicationName the name that is used in the log for the running
* application
* @param flags Flags to affect the operation of the call
* @return LOG_STARTUP_OK on success
*/
enum logReturns
log_start(const char *iniFile, const char *applicationName,
unsigned int flags);
/**
* An alternative log_start where the caller gives the params directly.
*
* @post to avoid memory leaks, the config argument must be free'ed using
* `log_config_free()`
*/
enum logReturns
log_start_from_param(const struct log_config *src_log_config);
/**
* Sets up a suitable log config for writing to the console only
* (i.e. for a utility)
*
* The config can be customised by the caller before calling
* log_start_from_param()
*
* @param lvl log level
* @param override_name level name, or NULL. This can be used to provide an
* override to the default log level, by environment variable or
* argument.
*
* @return pointer to struct log_config.
*/
struct log_config *
log_config_init_for_console(enum logLevels lvl, const char *override_name);
/**
* Read configuration from a file and store the values in the returned
* log_config.
* @param applicationName the application name used in the log events.
* @param section_prefix prefix for the logging sections to parse
*/
struct log_config *
log_config_init_from_config(const char *iniFilename,
const char *applicationName,
const char *section_prefix);
/**
* Free the memory for the log_config struct.
*/
enum logReturns
log_config_free(struct log_config *config);
/**
* Function that terminates all logging
*/
enum logReturns
log_end(void);
/**
* the log function that all files use to log an event.
*
* Please prefer to use the LOG and LOG_DEVEL macros instead of this function directly.
*
* @param lvl the loglevel
* @param msg the logtext.
*/
enum logReturns
log_message(const enum logLevels lvl, const char *msg, ...) printflike(2, 3);
enum logReturns
log_hexdump(const enum logLevels log_level,
const char *msg,
const char *p,
int len);
/**
* the log function that all files use to log an event,
* with the function name and file line.
*
* Please prefer to use the LOG and LOG_DEVEL macros instead of this function directly.
*
* @param function_name the function name (typically the __func__ macro)
* @param file_name the file name (typically the __FILE__ macro)
* @param line_number the line number in the file (typically the __LINE__ macro)
* @param lvl the loglevel
* @param msg the logtext.
*/
enum logReturns
log_message_with_location(const char *function_name,
const char *file_name,
const int line_number,
const enum logLevels lvl,
const char *msg,
...) printflike(5, 6);
enum logReturns
log_hexdump_with_location(const char *function_name,
const char *file_name,
const int line_number,
const enum logLevels log_level,
const char *msg,
const char *p,
int len);
/**
* This function returns the configured file name for the logfile
* @param replybuf the buffer where the reply is stored
* @param bufsize how big is the reply buffer.
*/
char *getLogFile(char *replybuf, int bufsize);
/**
* Returns formatted datetime for log
*/
char *getFormattedDateTime(char *replybuf, int bufsize);
#ifdef USE_DEVEL_LOGGING
/**
* Log open file descriptors not cloexec before execing another program
*
* Used to ensure file descriptors aren't leaking when running
* non-privileged executables
*
* Use the LOG_DEVEL_LEAKING_FDS() macro to invoke this function
*
* @param exe Executable we're about to launch
* @param min Minimum FD to consider
* @param max Maximum FD to consider + 1, or -1 for no upper FD
*/
void
log_devel_leaking_fds(const char *exe, int min, int max);
#endif
#endif
================================================
FILE: common/ms-erref.h
================================================
/**
* xrdp: A Remote Desktop Protocol server.
*
* MS-ERREF : Definitions from [MS-ERREF]
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
* References to MS-ERREF are currently correct for v20180912 of that
* document
*/
#if !defined(MS_ERREF_H)
#define MS_ERREF_H
/*
* NTSTATUS codes (section 2.3)
*/
enum NTSTATUS
{
STATUS_SUCCESS = 0x00000000,
STATUS_NO_MORE_FILES = 0x80000006,
STATUS_UNSUCCESSFUL = 0xc0000001,
STATUS_INFO_LENGTH_MISMATCH = 0xc0000004,
STATUS_NO_SUCH_FILE = 0xc000000f,
STATUS_ACCESS_DENIED = 0xc0000022,
STATUS_OBJECT_NAME_INVALID = 0xc0000033,
STATUS_OBJECT_NAME_NOT_FOUND = 0xc0000034,
STATUS_SHARING_VIOLATION = 0xc0000043,
STATUS_NOT_SUPPORTED = 0xc00000bb
};
#endif /* MS_ERREF_H */
================================================
FILE: common/ms-fscc.h
================================================
/**
* xrdp: A Remote Desktop Protocol server.
*
* MS-FSCC : Definitions from [MS-FSCC]
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
* References to MS-FSCC are currently correct for v20190923 of that
* document
*/
#if !defined(MS_FSCC_H)
#define MS_FSCC_H
/*
* File system ioctl codes (section 2.3)
*/
#define FSCTL_DELETE_OBJECT_ID 0x900a0
/*
* File information classes (section 2.4)
*/
enum FILE_INFORMATION_CLASS
{
FileAllocationInformation = 19, /* Set */
FileBasicInformation = 4, /* Query, Set */
FileBothDirectoryInformation = 3, /* Query */
FileDirectoryInformation = 1, /* Query */
FileDispositionInformation = 13, /* Set */
FileEndOfFileInformation = 20, /* Set */
FileFullDirectoryInformation = 2, /* Query */
FileNamesInformation = 12, /* Query */
FileRenameInformation = 10, /* Set */
FileStandardInformation = 5 /* Query */
};
/*
* Size of structs above without trailing RESERVED fields (MS-RDPEFS
* 2.2.3.3.8)
*/
#define FILE_BASIC_INFORMATION_SIZE 36
#define FILE_STD_INFORMATION_SIZE 22
#define FILE_END_OF_FILE_INFORMATION_SIZE 8
/*
* File System information classes (section 2.5)
*/
enum FILE_SYSTEM_INFORMATION_CLASS
{
FileFsVolumeInformation = 1,
FileFsSizeInformation = 3,
FileFsDeviceInformation = 4,
FileFsAttributeInformation = 5,
FileFsFullSizeInformation = 7
};
/*
* Size of structs above without trailing RESERVED fields (MS-RDPEFS
* 2.2.3.3.6)
*/
#define FILE_FS_SIZE_INFORMATION_SIZE 24
#define FILE_FS_DEVICE_INFORMATION_SIZE 8
#define FILE_FS_FULL_SIZE_INFORMATION_SIZE 32
/* Windows file attributes (section 2.6) */
#define W_FILE_ATTRIBUTE_DIRECTORY 0x00000010
#define W_FILE_ATTRIBUTE_READONLY 0x00000001
#define W_FILE_ATTRIBUTE_SYSTEM 0x00000004
#define W_FILE_ATTRIBUTE_NORMAL 0x00000080
#endif /* MS_FSCC_H */
================================================
FILE: common/ms-rdpbcgr.h
================================================
/**
* xrdp: A Remote Desktop Protocol server.
*
* MS-RDPBCGR : Definitions from [MS-RDPBCGR]
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
* References to MS-RDPBCGR are currently correct for v20190923 of that
* document
*/
#if !defined(MS_RDPBCGR_H)
#define MS_RDPBCGR_H
/* RDP Security Negotiation codes */
#define RDP_NEG_REQ 0x01 /* MS-RDPBCGR 2.2.1.1.1 */
#define RDP_NEG_RSP 0x02 /* MS-RDPBCGR 2.2.1.2.1 */
#define RDP_NEG_FAILURE 0x03 /* MS-RDPBCGR 2.2.1.2.2 */
#define RDP_CORRELATION_INFO 0x06 /* MS-RDPBCGR 2.2.1.1.2 */
/* Protocol types codes (2.2.1.1.1, 2.2.1.2.1) */
#define PROTOCOL_RDP 0x00000000
#define PROTOCOL_SSL 0x00000001
#define PROTOCOL_HYBRID 0x00000002
#define PROTOCOL_RDSTLS 0x00000004
#define PROTOCOL_HYBRID_EX 0x00000008
/* Negotiation request packet flags (2.2.1.1.1) */
#define RESTRICTED_ADMIN_MODE_REQUIRED 0x00000001
#define REDIRECTED_AUTHENTICATION_MODE_REQUIRED 0x00000002
#define CORRELATION_INFO_PRESENT 0x00000008
/* Negotiation response packet flags (2.2.1.2.1) */
#define EXTENDED_CLIENT_DATA_SUPPORTED 0x01
#define DYNVC_GFX_PROTOCOL_SUPPORTED 0x02
#define NEGRSP_RESERVED 0x04
#define RESTRICTED_ADMIN_MODE_SUPPORTED 0x08
#define REDIRECTED_AUTHENTICATION_MODE_SUPPORTED 0x10
/* RDP Negotiation Failure Codes (2.2.1.2.2) */
#define SSL_REQUIRED_BY_SERVER 0x00000001
#define SSL_NOT_ALLOWED_BY_SERVER 0x00000002
#define SSL_CERT_NOT_ON_SERVER 0x00000003
#define INCONSISTENT_FLAGS 0x00000004
#define HYBRID_REQUIRED_BY_SERVER 0x00000005
#define SSL_WITH_USER_AUTH_REQUIRED_BY_SERVER 0x00000006
/* TS_UD_HEADER: type ((2.2.1.3.1) */
/* TODO: to be renamed */
#define SEC_TAG_CLI_INFO 0xc001 /* CS_CORE? */
#define SEC_TAG_CLI_CRYPT 0xc002 /* CS_SECURITY? */
#define SEC_TAG_CLI_CHANNELS 0xc003 /* CS_CHANNELS? */
#define SEC_TAG_CLI_4 0xc004 /* CS_CLUSTER? */
#define SEC_TAG_CLI_MONITOR 0xc005 /* CS_MONITOR */
#define SEC_TAG_CLI_MONITOR_EX 0xc008 /* CS_MONITOR_EX */
#define SEC_TAG_SRV_INFO 0x0c01 /* SC_CORE */
#define SEC_TAG_SRV_CRYPT 0x0c02 /* SC_SECURITY */
#define SEC_TAG_SRV_CHANNELS 0x0c03 /* SC_NET? */
/* Client Core Data: colorDepth, postBeta2ColorDepth (2.2.1.3.2) */
#define RNS_UD_COLOR_4BPP 0xCA00
#define RNS_UD_COLOR_8BPP 0xCA01
#define RNS_UD_COLOR_16BPP_555 0xCA02
#define RNS_UD_COLOR_16BPP_565 0xCA03
#define RNS_UD_COLOR_24BPP 0xCA04
/* Client Core Data: supportedColorDepths (2.2.1.3.2) */
#define RNS_UD_24BPP_SUPPORT 0x0001
#define RNS_UD_16BPP_SUPPORT 0x0002
#define RNS_UD_15BPP_SUPPORT 0x0004
#define RNS_UD_32BPP_SUPPORT 0x0008
/* Client Core Data: earlyCapabilityFlags (2.2.1.3.2) */
#define RNS_UD_CS_SUPPORT_ERRINFO_PDU 0x0001
#define RNS_UD_CS_WANT_32BPP_SESSION 0x0002
#define RNS_UD_CS_SUPPORT_MONITOR_LAYOUT_PDU 0x0040
#define RNS_UD_CS_SUPPORT_DYNVC_GFX_PROTOCOL 0x0100
#define RNS_UD_CS_SUPPORT_SKIP_CHANNELJOIN 0x0800
/* Client Core Data: connectionType (2.2.1.3.2) */
#define CONNECTION_TYPE_MODEM 0x01
#define CONNECTION_TYPE_BROADBAND_LOW 0x02
#define CONNECTION_TYPE_SATELLITE 0x03
#define CONNECTION_TYPE_BROADBAND_HIGH 0x04
#define CONNECTION_TYPE_WAN 0x05
#define CONNECTION_TYPE_LAN 0x06
#define CONNECTION_TYPE_AUTODETECT 0x07
/* TS_UD_CS_NET (2.2.1.3.4) */
/* This isn't explicitly named in MS-RDPBCGR */
#define MAX_STATIC_CHANNELS 31
/* Channel definition structure CHANNEL_DEF (2.2.1.3.4.1) */
#define CHANNEL_NAME_LEN 7
/* These names are also not explicitly defined in MS-RDPBCGR */
#define CLIPRDR_SVC_CHANNEL_NAME "cliprdr"
#define DRDYNVC_SVC_CHANNEL_NAME "drdynvc"
#define RAIL_SVC_CHANNEL_NAME "rail"
#define RDPSND_SVC_CHANNEL_NAME "rdpsnd"
#define RDPDR_SVC_CHANNEL_NAME "rdpdr"
/* 2.2.1.3.6 Client Monitor Data */
/* monitorCount (4 bytes): A 32-bit, unsigned integer. The number of display */
/* monitor definitions in the monitorDefArray field (the maximum allowed is 16). */
#define CLIENT_MONITOR_DATA_MAXIMUM_MONITORS 16
/* 2.2.1.3.6 Client Monitor Data */
/* The maximum width of the virtual desktop resulting from the union of the monitors */
/* contained in the monitorDefArray field MUST NOT exceed 32,766 pixels. Similarly, */
/* the maximum height of the virtual desktop resulting from the union of the monitors */
/* contained in the monitorDefArray field MUST NOT exceed 32,766 pixels. */
/* The minimum permitted size of the virtual desktop is 200 x 200 pixels. */
#define CLIENT_MONITOR_DATA_MINIMUM_VIRTUAL_DESKTOP_WIDTH 0xC8 // 200
#define CLIENT_MONITOR_DATA_MINIMUM_VIRTUAL_DESKTOP_HEIGHT 0xC8 // 200
#define CLIENT_MONITOR_DATA_MAXIMUM_VIRTUAL_DESKTOP_WIDTH 0x7FFE // 32766
#define CLIENT_MONITOR_DATA_M
gitextract_vzhdixoe/
├── .cirrus.yml
├── .github/
│ ├── FUNDING.yml
│ ├── ISSUE_TEMPLATE/
│ │ ├── bug_report.yml
│ │ └── config.yml
│ └── workflows/
│ ├── build.yml
│ ├── coverity.yml
│ └── release-tarball.yml
├── .gitignore
├── .gitmodules
├── COPYING
├── Makefile.am
├── NEWS.md
├── README.md
├── SECURITY.md
├── astyle_config.as
├── bootstrap
├── coding_style.md
├── common/
│ ├── Makefile.am
│ ├── arch.h
│ ├── base64.c
│ ├── base64.h
│ ├── channel_defs.h
│ ├── defines.h
│ ├── fifo.c
│ ├── fifo.h
│ ├── file.c
│ ├── file.h
│ ├── guid.c
│ ├── guid.h
│ ├── list.c
│ ├── list.h
│ ├── list16.c
│ ├── list16.h
│ ├── log.c
│ ├── log.h
│ ├── ms-erref.h
│ ├── ms-fscc.h
│ ├── ms-rdpbcgr.h
│ ├── ms-rdpeclip.h
│ ├── ms-rdpedisp.h
│ ├── ms-rdpefs.h
│ ├── ms-rdpegdi.h
│ ├── ms-rdpele.h
│ ├── ms-rdperp.h
│ ├── ms-smb2.h
│ ├── os_calls.c
│ ├── os_calls.h
│ ├── parse.c
│ ├── parse.h
│ ├── pixman-region.c
│ ├── pixman-region.h
│ ├── pixman-region16.c
│ ├── rail.h
│ ├── scancode.c
│ ├── scancode.h
│ ├── set_int.c
│ ├── set_int.h
│ ├── ssl_calls.c
│ ├── ssl_calls.h
│ ├── string_calls.c
│ ├── string_calls.h
│ ├── thread_calls.c
│ ├── thread_calls.h
│ ├── timers.c
│ ├── timers.h
│ ├── trans.c
│ ├── trans.h
│ ├── unicode_defines.h
│ ├── xrdp_client_info.h
│ ├── xrdp_constants.h
│ ├── xrdp_rail.h
│ ├── xrdp_scancode_defs.h
│ ├── xrdp_sockets.h
│ └── xup_client_info.h
├── configure.ac
├── docs/
│ ├── Makefile.am
│ └── man/
│ ├── .gitignore
│ ├── Makefile.am
│ ├── gfx.toml.5.in
│ ├── sesman.ini.5.in
│ ├── xrdp-chansrv.8.in
│ ├── xrdp-dis.1.in
│ ├── xrdp-dumpfv1.8.in
│ ├── xrdp-genkeymap.8.in
│ ├── xrdp-keygen.8.in
│ ├── xrdp-km.toml.5.in
│ ├── xrdp-mkfv1.8.in
│ ├── xrdp-sesadmin.8.in
│ ├── xrdp-sesman.8.in
│ ├── xrdp-sesrun.8.in
│ ├── xrdp.8.in
│ └── xrdp.ini.5.in
├── fontutils/
│ ├── Makefile.am
│ ├── README_fv1.txt
│ ├── dumpfv1.c
│ ├── fv1.c
│ ├── fv1.h
│ ├── mkfv1.c
│ └── windows/
│ ├── .gitignore
│ ├── Makefile
│ └── fontdump.c
├── genkeymap/
│ ├── Makefile.am
│ ├── dump-keymaps.sh
│ ├── genkeymap.c
│ └── readme.txt
├── instfiles/
│ ├── Makefile.am
│ ├── default/
│ │ ├── Makefile.am
│ │ └── xrdp
│ ├── init.d/
│ │ ├── Makefile.am
│ │ └── xrdp
│ ├── keymap-names.txt
│ ├── km-00000405.toml
│ ├── km-00000406.toml
│ ├── km-00000407.ini
│ ├── km-00000407.toml
│ ├── km-00000409.toml
│ ├── km-0000040a.toml
│ ├── km-0000040b.toml
│ ├── km-0000040c.toml
│ ├── km-0000040e.toml
│ ├── km-00000410.ini
│ ├── km-00000410.toml
│ ├── km-00000411.ini
│ ├── km-00000411.toml
│ ├── km-00000412.toml
│ ├── km-00000414.toml
│ ├── km-00000415.ini
│ ├── km-00000415.toml
│ ├── km-00000416.toml
│ ├── km-00000419.ini
│ ├── km-00000419.toml
│ ├── km-0000041d.ini
│ ├── km-0000041d.toml
│ ├── km-00000424.toml
│ ├── km-00000426.toml
│ ├── km-00000807.toml
│ ├── km-00000809.ini
│ ├── km-00000809.toml
│ ├── km-0000080a.toml
│ ├── km-0000080c.toml
│ ├── km-00000813.toml
│ ├── km-00000816.ini
│ ├── km-00000816.toml
│ ├── km-0000100c.toml
│ ├── km-00010409.ini
│ ├── km-00010409.toml
│ ├── km-00010426.toml
│ ├── km-00060409.toml
│ ├── km-19360409.ini
│ ├── km-19360409.toml
│ ├── pam.d/
│ │ ├── Makefile.am
│ │ ├── mkpamrules
│ │ ├── xrdp-sesman.arch
│ │ ├── xrdp-sesman.debian
│ │ ├── xrdp-sesman.freebsd
│ │ ├── xrdp-sesman.macos
│ │ ├── xrdp-sesman.redhat
│ │ ├── xrdp-sesman.suse
│ │ ├── xrdp-sesman.system
│ │ └── xrdp-sesman.unix
│ ├── pulse/
│ │ ├── Makefile.am
│ │ └── default.pa
│ ├── rc.d/
│ │ ├── Makefile.am
│ │ ├── xrdp
│ │ └── xrdp-sesman
│ ├── xrdp-sesman.service.in
│ └── xrdp.service.in
├── keygen/
│ ├── Makefile.am
│ ├── keygen.c
│ └── openssl.conf
├── libipm/
│ ├── Doxyfile
│ ├── Makefile.am
│ ├── ccp.c
│ ├── ccp.h
│ ├── ccp_application_types.c
│ ├── ccp_application_types.h
│ ├── eicp.c
│ ├── eicp.h
│ ├── ercp.c
│ ├── ercp.h
│ ├── libipm.c
│ ├── libipm.h
│ ├── libipm_facilities.h
│ ├── libipm_private.h
│ ├── libipm_recv.c
│ ├── libipm_send.c
│ ├── scp.c
│ ├── scp.h
│ ├── scp_application_types.c
│ ├── scp_application_types.h
│ ├── scp_sync.c
│ └── scp_sync.h
├── libxrdp/
│ ├── Makefile.am
│ ├── libxrdp.c
│ ├── libxrdp.h
│ ├── libxrdpinc.h
│ ├── xrdp_bitmap32_compress.c
│ ├── xrdp_bitmap_compress.c
│ ├── xrdp_caps.c
│ ├── xrdp_channel.c
│ ├── xrdp_channel.h
│ ├── xrdp_fastpath.c
│ ├── xrdp_iso.c
│ ├── xrdp_jpeg_compress.c
│ ├── xrdp_mcs.c
│ ├── xrdp_mppc_enc.c
│ ├── xrdp_orders.c
│ ├── xrdp_orders_rail.c
│ ├── xrdp_orders_rail.h
│ ├── xrdp_rdp.c
│ ├── xrdp_sec.c
│ └── xrdp_surface.c
├── m4/
│ ├── .gitignore
│ ├── ax_append_compile_flags.m4
│ ├── ax_append_flag.m4
│ ├── ax_cflags_warn_all.m4
│ ├── ax_check_compile_flag.m4
│ ├── ax_gcc_func_attribute.m4
│ ├── ax_require_defined.m4
│ ├── ax_type_socklen_t.m4
│ ├── axrdp.m4
│ └── pkg.m4
├── mc/
│ ├── Makefile.am
│ ├── mc.c
│ └── mc.h
├── neutrinordp/
│ ├── Makefile.am
│ ├── xrdp-color.c
│ ├── xrdp-color.h
│ ├── xrdp-neutrinordp.c
│ └── xrdp-neutrinordp.h
├── pkgconfig/
│ ├── .gitignore
│ ├── Makefile.am
│ ├── xrdp-uninstalled.pc.in
│ └── xrdp.pc.in
├── scripts/
│ ├── install_astyle.sh
│ ├── install_astyle_dependencies_with_apt.sh
│ ├── install_cppcheck.sh
│ ├── install_cppcheck_dependencies_with_apt.sh
│ ├── install_xrdp_build_dependencies_with_apt.sh
│ ├── run_astyle.sh
│ └── run_cppcheck.sh
├── sesman/
│ ├── Doxyfile
│ ├── Makefile.am
│ ├── chansrv/
│ │ ├── Makefile.am
│ │ ├── audin.c
│ │ ├── audin.h
│ │ ├── chansrv.c
│ │ ├── chansrv.h
│ │ ├── chansrv_common.c
│ │ ├── chansrv_common.h
│ │ ├── chansrv_config.c
│ │ ├── chansrv_config.h
│ │ ├── chansrv_fuse.c
│ │ ├── chansrv_fuse.h
│ │ ├── chansrv_xfs.c
│ │ ├── chansrv_xfs.h
│ │ ├── clipboard-notes.txt
│ │ ├── clipboard.c
│ │ ├── clipboard.h
│ │ ├── clipboard_common.h
│ │ ├── clipboard_file.c
│ │ ├── clipboard_file.h
│ │ ├── devredir.c
│ │ ├── devredir.h
│ │ ├── input.h
│ │ ├── input_ibus.c
│ │ ├── irp.c
│ │ ├── irp.h
│ │ ├── pcsc/
│ │ │ ├── .gitignore
│ │ │ ├── Makefile
│ │ │ ├── dumps/
│ │ │ │ ├── scard-begin-tranaction.txt
│ │ │ │ ├── scard-connect.txt
│ │ │ │ ├── scard-control.txt
│ │ │ │ ├── scard-disconnect.txt
│ │ │ │ ├── scard-end-tranaction.txt
│ │ │ │ ├── scard-establish-context.txt
│ │ │ │ ├── scard-get-status-change.txt
│ │ │ │ ├── scard-list-readers.txt
│ │ │ │ ├── scard-release-context.txt
│ │ │ │ ├── scard-status.txt
│ │ │ │ └── scard-transmit.txt
│ │ │ ├── wrapper/
│ │ │ │ ├── Makefile
│ │ │ │ ├── winscard-func-names.txt
│ │ │ │ ├── winscard-funcs.h
│ │ │ │ ├── winscard.c
│ │ │ │ └── winscard.def
│ │ │ └── xrdp_pcsc.c
│ │ ├── rail.c
│ │ ├── rail.h
│ │ ├── smartcard.c
│ │ ├── smartcard.h
│ │ ├── smartcard_dummy.c
│ │ ├── smartcard_internal.h
│ │ ├── smartcard_pcsc.c
│ │ ├── smartcard_pcsc.h
│ │ ├── sound.c
│ │ ├── sound.h
│ │ ├── wave-format-server.txt
│ │ ├── xcommon.c
│ │ └── xcommon.h
│ ├── display_utils.c
│ ├── display_utils.h
│ ├── eicp_process.c
│ ├── eicp_process.h
│ ├── ercp_process.c
│ ├── ercp_process.h
│ ├── libsesman/
│ │ ├── Makefile.am
│ │ ├── sesman_access.c
│ │ ├── sesman_access.h
│ │ ├── sesman_auth.h
│ │ ├── sesman_clip_restrict.c
│ │ ├── sesman_clip_restrict.h
│ │ ├── sesman_config.c
│ │ ├── sesman_config.h
│ │ ├── verify_user.c
│ │ ├── verify_user_bsd.c
│ │ ├── verify_user_kerberos.c
│ │ ├── verify_user_pam.c
│ │ └── verify_user_pam_userpass.c
│ ├── lock_uds.c
│ ├── lock_uds.h
│ ├── notes.txt
│ ├── reconnectwm.sh
│ ├── scp_list.c
│ ├── scp_list.h
│ ├── scp_process.c
│ ├── scp_process.h
│ ├── sesexec/
│ │ ├── Makefile.am
│ │ ├── ccp_server.c
│ │ ├── ccp_server.h
│ │ ├── eicp_server.c
│ │ ├── eicp_server.h
│ │ ├── env.c
│ │ ├── env.h
│ │ ├── ercp_server.c
│ │ ├── ercp_server.h
│ │ ├── login_info.c
│ │ ├── login_info.h
│ │ ├── sesexec.c
│ │ ├── sesexec.h
│ │ ├── sesexec_discover.c
│ │ ├── sesexec_discover.h
│ │ ├── session.c
│ │ ├── session.h
│ │ ├── sessionrecord.c
│ │ ├── sessionrecord.h
│ │ ├── xauth.c
│ │ ├── xauth.h
│ │ ├── xwait.c
│ │ └── xwait.h
│ ├── sesexec_control.c
│ ├── sesexec_control.h
│ ├── sesman.c
│ ├── sesman.h
│ ├── sesman.ini.in
│ ├── sesman_restart.c
│ ├── sesman_restart.h
│ ├── session_list.c
│ ├── session_list.h
│ ├── sig.c
│ ├── sig.h
│ ├── startwm.sh
│ └── tools/
│ ├── Makefile.am
│ ├── authmod.c
│ ├── authtest.c
│ ├── dis.c
│ ├── sesadmin.c
│ ├── sesrun.c
│ └── xcon.c
├── tests/
│ ├── Makefile.am
│ ├── common/
│ │ ├── Makefile.am
│ │ ├── UTF-8-test.txt
│ │ ├── test_base64.c
│ │ ├── test_common.h
│ │ ├── test_common_main.c
│ │ ├── test_fifo_calls.c
│ │ ├── test_guid.c
│ │ ├── test_list16_calls.c
│ │ ├── test_list_calls.c
│ │ ├── test_os_calls.c
│ │ ├── test_os_calls_signals.c
│ │ ├── test_parse.c
│ │ ├── test_scancode.c
│ │ ├── test_set_int.c
│ │ ├── test_ssl_calls.c
│ │ ├── test_string_calls.c
│ │ ├── test_string_calls_unicode.c
│ │ └── test_timers.c
│ ├── libipm/
│ │ ├── Makefile.am
│ │ ├── test_libipm.h
│ │ ├── test_libipm_main.c
│ │ ├── test_libipm_recv_calls.c
│ │ └── test_libipm_send_calls.c
│ ├── libxrdp/
│ │ ├── Makefile.am
│ │ ├── test_libxrdp.h
│ │ ├── test_libxrdp_main.c
│ │ ├── test_libxrdp_process_monitor_stream.c
│ │ └── test_xrdp_sec_process_mcs_data_monitors.c
│ ├── memtest/
│ │ ├── Makefile.am
│ │ ├── libmem.c
│ │ ├── libmem.h
│ │ └── memtest.c
│ ├── readme.txt
│ └── xrdp/
│ ├── Makefile.am
│ ├── gfx/
│ │ ├── gfx.toml
│ │ ├── gfx_codec_h264_only.toml
│ │ ├── gfx_codec_h264_preferred.toml
│ │ ├── gfx_codec_order_undefined.toml
│ │ ├── gfx_codec_rfx_only.toml
│ │ ├── gfx_codec_rfx_preferred.toml
│ │ ├── gfx_codec_rfx_preferred_odd.toml
│ │ ├── gfx_h264_encoder_invalid.toml
│ │ ├── gfx_h264_encoder_openh264.toml
│ │ ├── gfx_h264_encoder_undefined.toml
│ │ ├── gfx_h264_encoder_x264.toml
│ │ └── gfx_missing_h264.toml
│ ├── test_bitmap_load.c
│ ├── test_tconfig.c
│ ├── test_xrdp.h
│ ├── test_xrdp_egfx.c
│ ├── test_xrdp_keymap.c
│ ├── test_xrdp_main.c
│ └── test_xrdp_region.c
├── third_party/
│ ├── COPYING-THIRD-PARTY
│ ├── Makefile.am
│ ├── Makefile.copying
│ ├── README.md
│ ├── copying_third_party.h
│ └── tomlc99/
│ ├── .editorconfig
│ ├── .gitignore
│ ├── LICENSE
│ ├── Makefile.am
│ ├── README.md
│ ├── libtoml.pc.sample
│ ├── sample.toml
│ ├── stdex/
│ │ ├── .gitignore
│ │ ├── RUN.sh
│ │ ├── arr1.toml
│ │ ├── arr1.toml.res
│ │ ├── arr2.toml
│ │ ├── arr2.toml.res
│ │ ├── arrtab1.toml
│ │ ├── arrtab1.toml.res
│ │ ├── arrtab2.toml
│ │ ├── arrtab2.toml.res
│ │ ├── arrtab3.toml
│ │ ├── arrtab3.toml.res
│ │ ├── arrtab4.toml
│ │ ├── arrtab4.toml.res
│ │ ├── arrtab5.toml
│ │ ├── arrtab5.toml.res
│ │ ├── arrtab6.toml
│ │ ├── arrtab6.toml.res
│ │ ├── arrtab7.toml
│ │ ├── arrtab7.toml.res
│ │ ├── bool1.toml
│ │ ├── bool1.toml.res
│ │ ├── comment.toml
│ │ ├── comment.toml.res
│ │ ├── float1.toml
│ │ ├── float1.toml.res
│ │ ├── float2.toml
│ │ ├── float2.toml.res
│ │ ├── float3.toml
│ │ ├── float3.toml.res
│ │ ├── float4.toml
│ │ ├── float4.toml.res
│ │ ├── float5.toml
│ │ ├── float5.toml.res
│ │ ├── float6.toml
│ │ ├── float6.toml.res
│ │ ├── inlinetab1.toml
│ │ ├── inlinetab1.toml.res
│ │ ├── inlinetab2.toml
│ │ ├── inlinetab2.toml.res
│ │ ├── inlinetab3.toml
│ │ ├── inlinetab3.toml.res
│ │ ├── int0.toml
│ │ ├── int0.toml.res
│ │ ├── int1.toml
│ │ ├── int1.toml.res
│ │ ├── keys00.toml
│ │ ├── keys00.toml.res
│ │ ├── keys01.toml
│ │ ├── keys01.toml.res
│ │ ├── keys02.toml
│ │ ├── keys02.toml.res
│ │ ├── keys03.toml
│ │ ├── keys03.toml.res
│ │ ├── keys04.toml
│ │ ├── keys04.toml.res
│ │ ├── keys05.toml
│ │ ├── keys05.toml.res
│ │ ├── keys06.toml
│ │ ├── keys06.toml.res
│ │ ├── keys07.toml
│ │ ├── keys07.toml.res
│ │ ├── keys08.toml
│ │ ├── keys08.toml.res
│ │ ├── keys09.toml
│ │ ├── keys09.toml.res
│ │ ├── keys10.toml
│ │ ├── keys10.toml.res
│ │ ├── keys11.toml
│ │ ├── keys11.toml.res
│ │ ├── keys12.toml
│ │ ├── keys12.toml.res
│ │ ├── kvpair0.toml
│ │ ├── kvpair0.toml.res
│ │ ├── kvpair1.toml
│ │ ├── kvpair1.toml.res
│ │ ├── kvpair2.toml
│ │ ├── kvpair2.toml.res
│ │ ├── string0.toml
│ │ ├── string0.toml.res
│ │ ├── string1.toml
│ │ ├── string1.toml.res
│ │ ├── string3.toml
│ │ ├── string3.toml.res
│ │ ├── string4.toml
│ │ ├── string4.toml.res
│ │ ├── string5.toml
│ │ ├── string5.toml.res
│ │ ├── string6.toml
│ │ ├── string6.toml.res
│ │ ├── string7.toml
│ │ ├── string7.toml.res
│ │ ├── string8.toml
│ │ ├── string8.toml.res
│ │ ├── tab01.toml
│ │ ├── tab01.toml.res
│ │ ├── tab02.toml
│ │ ├── tab02.toml.res
│ │ ├── tab03.toml
│ │ ├── tab03.toml.res
│ │ ├── tab04.toml
│ │ ├── tab04.toml.res
│ │ ├── tab05.toml
│ │ ├── tab05.toml.res
│ │ ├── tab06.toml
│ │ ├── tab06.toml.res
│ │ ├── tab07.toml
│ │ ├── tab07.toml.res
│ │ ├── tab08.toml
│ │ ├── tab08.toml.res
│ │ ├── tab09.toml
│ │ ├── tab09.toml.res
│ │ ├── tab10.toml
│ │ ├── tab10.toml.res
│ │ ├── tab11.toml
│ │ ├── tab11.toml.res
│ │ ├── ts1.toml
│ │ ├── ts1.toml.res
│ │ ├── ts2.toml
│ │ ├── ts2.toml.res
│ │ ├── ts3.toml
│ │ ├── ts3.toml.res
│ │ ├── ts4.toml
│ │ ├── ts4.toml.res
│ │ ├── ts5.toml
│ │ └── ts5.toml.res
│ ├── test1/
│ │ ├── .gitignore
│ │ ├── README.md
│ │ ├── build.sh
│ │ ├── extra/
│ │ │ ├── array_of_tables.toml
│ │ │ ├── inline_array.toml
│ │ │ └── inline_table.toml
│ │ └── run.sh
│ ├── test2/
│ │ ├── .gitignore
│ │ ├── Note.txt
│ │ ├── build.sh
│ │ └── run.sh
│ ├── toml.c
│ ├── toml.h
│ ├── toml_cat.c
│ ├── toml_json.c
│ ├── toml_sample.c
│ └── unittest/
│ └── t1.c
├── tools/
│ ├── Makefile.am
│ ├── chkpriv/
│ │ ├── Makefile.am
│ │ ├── xrdp-chkpriv.in
│ │ └── xrdp-droppriv.c
│ └── devel/
│ ├── Makefile.am
│ ├── gtcp_proxy/
│ │ ├── README.txt
│ │ ├── gtcp-proxy.c
│ │ ├── gtcp.c
│ │ ├── gtcp.h
│ │ └── hexdump.c
│ └── tcp_proxy/
│ ├── Makefile.am
│ └── main.c
├── vnc/
│ ├── Makefile.am
│ ├── rfb.c
│ ├── rfb.h
│ ├── vnc.c
│ ├── vnc.h
│ ├── vnc_clip.c
│ └── vnc_clip.h
├── vrplayer/
│ ├── README.txt
│ ├── decoder.cpp
│ ├── decoder.h
│ ├── demuxmedia.cpp
│ ├── demuxmedia.h
│ ├── dlgabout.cpp
│ ├── dlgabout.h
│ ├── dlgabout.ui
│ ├── main.cpp
│ ├── mainwindow.cpp
│ ├── mainwindow.h
│ ├── mainwindow.ui
│ ├── mediapacket.cpp
│ ├── mediapacket.h
│ ├── ourinterface.cpp
│ ├── ourinterface.h
│ ├── playaudio.cpp
│ ├── playaudio.h
│ ├── playvideo.cpp
│ ├── playvideo.h
│ └── vrplayer.pro
├── waitforx/
│ ├── Makefile.am
│ └── waitforx.c
├── xrdp/
│ ├── Makefile.am
│ ├── README.logo
│ ├── cursor0.cur
│ ├── cursor1.cur
│ ├── czech.txt
│ ├── funcs.c
│ ├── gfx.toml
│ ├── lang.c
│ ├── rdp-scan-codes.txt
│ ├── sans-10.fv1
│ ├── sans-18.fv1
│ ├── xrdp.c
│ ├── xrdp.h
│ ├── xrdp.ini.in
│ ├── xrdp_bitmap.c
│ ├── xrdp_bitmap_common.c
│ ├── xrdp_bitmap_load.c
│ ├── xrdp_cache.c
│ ├── xrdp_egfx.c
│ ├── xrdp_egfx.h
│ ├── xrdp_encoder.c
│ ├── xrdp_encoder.h
│ ├── xrdp_encoder_openh264.c
│ ├── xrdp_encoder_openh264.h
│ ├── xrdp_encoder_x264.c
│ ├── xrdp_encoder_x264.h
│ ├── xrdp_font.c
│ ├── xrdp_keyboard.toml
│ ├── xrdp_listen.c
│ ├── xrdp_login_wnd.c
│ ├── xrdp_main_utils.c
│ ├── xrdp_mm.c
│ ├── xrdp_mm.h
│ ├── xrdp_mm_ccp.c
│ ├── xrdp_painter.c
│ ├── xrdp_process.c
│ ├── xrdp_region.c
│ ├── xrdp_tconfig.c
│ ├── xrdp_tconfig.h
│ ├── xrdp_types.h
│ ├── xrdp_wm.c
│ └── xrdpwin.c
├── xrdp_accel_assist/
│ ├── Makefile.am
│ ├── encoder_headers/
│ │ ├── nvEncodeAPI_11_0.h
│ │ └── nvEncodeAPI_11_1.h
│ ├── xrdp_accel_assist.c
│ ├── xrdp_accel_assist.h
│ ├── xrdp_accel_assist_egl.c
│ ├── xrdp_accel_assist_egl.h
│ ├── xrdp_accel_assist_glx.c
│ ├── xrdp_accel_assist_glx.h
│ ├── xrdp_accel_assist_nvenc.c
│ ├── xrdp_accel_assist_nvenc.h
│ ├── xrdp_accel_assist_shaders.c
│ ├── xrdp_accel_assist_x11.c
│ └── xrdp_accel_assist_x11.h
├── xrdpapi/
│ ├── Makefile.am
│ ├── connectmon.c
│ ├── simple.c
│ ├── vrplayer.c
│ ├── vrplayer.mk
│ ├── xrdp-ssh-agent.c
│ ├── xrdpapi.c
│ └── xrdpapi.h
├── xrdpvr/
│ ├── Makefile.am
│ ├── xrdpvr.c
│ ├── xrdpvr.h
│ └── xrdpvr_internal.h
└── xup/
├── Makefile.am
├── xup.c
└── xup.h
Showing preview only (289K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (5165 symbols across 289 files)
FILE: common/arch.h
type bool_t (line 47) | typedef int bool_t;
type uint_least16_t (line 55) | typedef uint_least16_t char16_t;
type uint_least32_t (line 56) | typedef uint_least32_t char32_t;
type ti8 (line 134) | typedef int8_t ti8;
type tui8 (line 135) | typedef uint8_t tui8;
type tsi8 (line 136) | typedef int8_t tsi8;
type ti16 (line 137) | typedef int16_t ti16;
type tui16 (line 138) | typedef uint16_t tui16;
type tsi16 (line 139) | typedef int16_t tsi16;
type ti32 (line 140) | typedef int32_t ti32;
type tui32 (line 141) | typedef uint32_t tui32;
type tsi32 (line 142) | typedef int32_t tsi32;
type ti64 (line 143) | typedef int64_t ti64;
type tui64 (line 144) | typedef uint64_t tui64;
type tsi64 (line 145) | typedef int64_t tsi64;
type bool_t (line 146) | typedef bool_t tbool;
type tbus (line 147) | typedef intptr_t tbus;
type tintptr (line 148) | typedef intptr_t tintptr;
type tsock (line 152) | typedef unsigned int tsock;
type tsock (line 154) | typedef int tsock;
FILE: common/base64.c
function base64_decode (line 90) | int
function base64_encode (line 189) | size_t
FILE: common/channel_defs.h
type xrdp_chan_connect (line 50) | struct xrdp_chan_connect
type xrdp_chan_session_state (line 64) | struct xrdp_chan_session_state
FILE: common/fifo.c
type chunk (line 60) | struct chunk
type fifo (line 66) | struct fifo
type fifo (line 80) | struct fifo
type fifo (line 83) | struct fifo
type chunk (line 84) | struct chunk
type chunk (line 84) | struct chunk
type chunk (line 84) | struct chunk
type fifo (line 89) | struct fifo
type fifo (line 89) | struct fifo
function call_item_destructor (line 113) | static void
function fifo_delete (line 142) | void
function fifo_clear (line 164) | void
function fifo_add_item (line 189) | int
type fifo (line 218) | struct fifo
type chunk (line 233) | struct chunk
function fifo_is_empty (line 257) | int
FILE: common/fifo.h
type fifo (line 29) | struct fifo
type fifo (line 48) | struct fifo
type fifo (line 61) | struct fifo
type fifo (line 73) | struct fifo
type fifo (line 81) | struct fifo
type fifo (line 88) | struct fifo
type fifo (line 96) | struct fifo
FILE: common/file.c
type stream (line 35) | struct stream
function line_lookup_for_section_name (line 41) | static int
function l_file_read_sections (line 80) | static int
function file_read_ini_line (line 121) | static int
function file_split_name_value (line 199) | static int
function l_file_read_section (line 242) | static int
function file_read_sections (line 328) | int
function file_by_name_read_sections (line 338) | int
function file_read_section (line 367) | int
function file_by_name_read_section (line 378) | int
FILE: common/file.h
type list (line 27) | struct list
type list (line 29) | struct list
type list (line 32) | struct list
type list (line 32) | struct list
type list (line 35) | struct list
type list (line 35) | struct list
FILE: common/guid.c
function guid_new (line 42) | struct guid
function guid_clear (line 57) | void
function guid_is_set (line 63) | int
type guid (line 84) | struct guid
FILE: common/guid.h
type guid (line 52) | struct guid
type guid (line 64) | struct guid
type guid (line 72) | struct guid
type guid (line 81) | struct guid
type guid (line 91) | struct guid
FILE: common/list.c
type list (line 41) | struct list
type list (line 44) | struct list
type list (line 50) | struct list
type list (line 50) | struct list
type list (line 69) | struct list
function list_delete (line 76) | void
function grow_list (line 100) | static int
function list_add_item (line 119) | int
function tbus (line 133) | tbus
function list_clear (line 145) | void
function list_index_of (line 166) | int
function list_remove_item (line 183) | void
function list_insert_item (line 205) | int
function list_add_strdup (line 238) | int
function list_add_strdup_multi (line 265) | int
function list_append_list_strdup (line 298) | int
function list_dump_items (line 328) | void
function split_string_append_fragment (line 344) | int
type list (line 375) | struct list
type list (line 378) | struct list
FILE: common/list.h
type list (line 27) | struct list
type list (line 36) | struct list
type list (line 44) | struct list
type list (line 47) | struct list
type list (line 59) | struct list
type list (line 61) | struct list
type list (line 63) | struct list
type list (line 65) | struct list
type list (line 67) | struct list
type list (line 80) | struct list
type list (line 94) | struct list
type list (line 94) | struct list
type list (line 96) | struct list
type list (line 109) | struct list
type list (line 125) | struct list
type list (line 145) | struct list
type list (line 163) | struct list
FILE: common/list16.c
type list16 (line 30) | struct list16
type list16 (line 33) | struct list16
type list16 (line 35) | struct list16
type list16 (line 35) | struct list16
function list16_delete (line 41) | void
function list16_init (line 54) | void
function list16_deinit (line 63) | void
function expand_array (line 82) | static int
function list16_add_item (line 121) | int
function tui16 (line 135) | tui16
function list16_clear (line 147) | void
function list16_index_of (line 160) | int
function list16_remove_item (line 177) | void
function list16_insert_item (line 194) | int
FILE: common/list16.h
type list16 (line 27) | struct list16
type list16 (line 35) | struct list16
type list16 (line 38) | struct list16
type list16 (line 41) | struct list16
type list16 (line 45) | struct list16
type list16 (line 48) | struct list16
type list16 (line 50) | struct list16
type list16 (line 52) | struct list16
type list16 (line 54) | struct list16
type list16 (line 56) | struct list16
type list16 (line 59) | struct list16
FILE: common/log.c
type log_config (line 46) | struct log_config
function internal_log_file_open (line 58) | static int
function internal_log_xrdp2syslog (line 91) | static int
function internal_log_lvl2str (line 119) | void
function internal_log_start (line 149) | enum logReturns
function internal_log_end (line 198) | enum logReturns
function internal_log_text2level (line 235) | enum logLevels
type log_config (line 275) | struct log_config
type log_config (line 284) | struct log_config
type list (line 285) | struct list
type list (line 286) | struct list
type log_logger_level (line 378) | struct log_logger_level
type log_logger_level (line 386) | struct log_logger_level
type log_logger_level (line 386) | struct log_logger_level
function internal_log_config_dump (line 412) | void
type log_config (line 468) | struct log_config
type log_config (line 471) | struct log_config
function internal_log_config_copy_levels (line 503) | static void
function internal_log_config_copy (line 547) | static void
function bool_t (line 567) | bool_t
function bool_t (line 612) | bool_t
type log_config (line 647) | struct log_config
type logLevels (line 648) | enum logLevels
type log_config (line 650) | struct log_config
type log_config (line 669) | struct log_config
type log_config (line 675) | struct log_config
function log_config_free (line 705) | enum logReturns
function log_restart_from_param (line 737) | static enum logReturns
function log_start_from_param (line 786) | enum logReturns
function log_start (line 831) | enum logReturns
function log_end (line 873) | enum logReturns
function log_hexdump (line 886) | enum logReturns
function log_hexdump_with_location (line 897) | enum logReturns
function log_message_with_location (line 954) | enum logReturns
function log_message (line 996) | enum logReturns
function internal_log_message (line 1008) | enum logReturns
type tm (line 1152) | struct tm
type timeval (line 1153) | struct timeval
function log_devel_leaking_fds (line 1171) | void
FILE: common/log.h
type logLevels (line 40) | enum logLevels
type logReturns (line 52) | enum logReturns
type log_logger_type (line 185) | enum log_logger_type
type log_logger_level (line 191) | struct log_logger_level
type log_config (line 199) | struct log_config
type logReturns (line 229) | enum logReturns
type log_config (line 230) | struct log_config
type logReturns (line 238) | enum logReturns
type log_config (line 239) | struct log_config
type logLevels (line 247) | enum logLevels
type logLevels (line 256) | enum logLevels
type log_config (line 264) | struct log_config
type log_config (line 271) | struct log_config
type logReturns (line 281) | enum logReturns
type logLevels (line 282) | enum logLevels
type logLevels (line 284) | enum logLevels
type logLevels (line 296) | enum logLevels
type logLevels (line 298) | enum logLevels
type logLevels (line 309) | enum logLevels
type logReturns (line 322) | enum logReturns
type logReturns (line 332) | enum logReturns
type log_config (line 333) | struct log_config
type log_config (line 349) | struct log_config
type logLevels (line 350) | enum logLevels
type log_config (line 358) | struct log_config
type logReturns (line 366) | enum logReturns
type log_config (line 367) | struct log_config
type logReturns (line 372) | enum logReturns
type logReturns (line 383) | enum logReturns
type logLevels (line 384) | enum logLevels
type logReturns (line 386) | enum logReturns
type logLevels (line 387) | enum logLevels
type logReturns (line 404) | enum logReturns
type logLevels (line 408) | enum logLevels
type logReturns (line 412) | enum logReturns
type logLevels (line 416) | enum logLevels
FILE: common/ms-erref.h
type NTSTATUS (line 28) | enum NTSTATUS
FILE: common/ms-fscc.h
type FILE_INFORMATION_CLASS (line 33) | enum FILE_INFORMATION_CLASS
type FILE_SYSTEM_INFORMATION_CLASS (line 58) | enum FILE_SYSTEM_INFORMATION_CLASS
FILE: common/ms-rdpefs.h
type IRP_MJ (line 98) | enum IRP_MJ
type IRP_MN (line 115) | enum IRP_MN
FILE: common/ms-smb2.h
type CREATE_OPTIONS (line 44) | enum CREATE_OPTIONS
FILE: common/os_calls.c
type sockaddr_hvs (line 50) | struct sockaddr_hvs
type sockaddr (line 135) | struct sockaddr
type sockaddr_in (line 136) | struct sockaddr_in
type sockaddr_in6 (line 138) | struct sockaddr_in6
type sockaddr_un (line 140) | struct sockaddr_un
type sockaddr_vm (line 143) | struct sockaddr_vm
type sockaddr_hvs (line 145) | struct sockaddr_hvs
function g_rm_temp_dir (line 154) | int
function g_init (line 161) | void
function g_deinit (line 202) | void
function g_printf (line 216) | void
function g_sprintf (line 227) | void
function g_snprintf (line 238) | int
function g_writeln (line 252) | void
function g_write (line 268) | void
function g_hexdump (line 280) | void
function g_getchar (line 323) | int
function g_tcp_set_no_delay (line 331) | int
function g_tcp_set_keepalive (line 370) | int
function g_tcp_socket (line 410) | int
function g_sck_set_send_buffer_bytes (line 467) | int
function g_sck_get_send_buffer_bytes (line 485) | int
function g_sck_set_recv_buffer_bytes (line 504) | int
function g_sck_get_recv_buffer_bytes (line 522) | int
function g_sck_set_reuseaddr (line 540) | int
function g_sck_local_socket (line 557) | int
function g_sck_local_socketpair (line 568) | int
function g_sck_vsock_socket (line 579) | int
function g_sck_get_peer_cred (line 601) | int
type sockaddr_in (line 673) | struct sockaddr_in
type sockaddr_in6 (line 692) | struct sockaddr_in6
type sockaddr_vm (line 719) | struct sockaddr_vm
type sockaddr_hvs (line 731) | struct sockaddr_hvs
function g_sck_close (line 750) | void
function connect_loopback (line 795) | static int
function g_tcp_connect (line 856) | int
function g_tcp_connect (line 908) | int
function g_sck_local_connect (line 950) | int
function g_sck_set_non_blocking (line 968) | int
function g_tcp_bind (line 990) | int
function g_tcp_bind (line 1024) | int
function g_sck_local_bind (line 1038) | int
function g_sck_vsock_bind (line 1056) | int
function g_sck_vsock_bind_address (line 1086) | int
function bind_loopback (line 1120) | static int
function getaddrinfo_bind (line 1169) | static int
function g_tcp_bind_address (line 1208) | int
function g_tcp_bind_address (line 1254) | int
function g_sck_listen (line 1273) | int
function g_sck_accept (line 1280) | int
type sockaddr (line 1317) | struct sockaddr
type sockaddr_in (line 1324) | struct sockaddr_in
type sockaddr_in6 (line 1340) | struct sockaddr_in6
type sockaddr (line 1377) | struct sockaddr
function g_sleep (line 1386) | void
function g_pipe (line 1397) | int
function g_sck_last_error_would_block (line 1404) | int
function g_sck_recv (line 1415) | int
function g_sck_send (line 1426) | int
function g_sck_recv_fd_set (line 1437) | int
function g_sck_send_fd_set (line 1542) | int
function g_alloc_shm_map_fd (line 1586) | int
function g_sck_socket_ok (line 1620) | int
function g_sck_can_send (line 1642) | int
function g_sck_can_recv (line 1668) | int
function g_sck_select (line 1693) | int
function g_fd_can_read (line 1736) | static int
function g_set_nonblock (line 1762) | static int
function tintptr (line 1788) | tintptr
function tintptr (line 1825) | tintptr
function g_delete_wait_obj_from_socket (line 1853) | void
function g_set_wait_obj (line 1870) | int
function g_reset_wait_obj (line 1927) | int
function g_is_wait_obj_set (line 1974) | int
function g_delete_wait_obj (line 1998) | int
function g_obj_wait (line 2022) | int
function g_random (line 2131) | void
function g_abs (line 2155) | int
function g_memcmp (line 2162) | int
function g_file_open_rw (line 2170) | int
function g_file_open_ex (line 2184) | int
function g_file_open_ro (line 2222) | int
function g_file_close (line 2230) | int
function g_file_is_open (line 2242) | int
function g_file_read (line 2250) | int
function g_file_write (line 2271) | int
function g_file_seek (line 2292) | int
function g_file_seek_end (line 2316) | int
function g_file_lock (line 2341) | int
function g_file_get_cloexec (line 2365) | int
function g_file_set_cloexec (line 2381) | int
type list (line 2407) | struct list
type list (line 2415) | struct list
type pollfd (line 2433) | struct pollfd
function g_file_map (line 2473) | int
function g_munmap (line 2497) | int
function mode_t (line 2506) | static mode_t
function mode_t_to_hex (line 2530) | static int
function g_file_duplicate_on (line 2556) | int
function g_chmod_hex (line 2572) | int
function g_umask_hex (line 2585) | int
function g_chown (line 2599) | int
function g_mkdir (line 2607) | int
function g_set_current_dir (line 2639) | int
function g_file_exist (line 2660) | int
function g_file_readable (line 2672) | int
function g_directory_exist (line 2684) | int
function g_executable_exist (line 2707) | int
function g_socket_exist (line 2715) | int
function g_create_dir (line 2732) | int
function g_create_path (line 2746) | int
function g_remove_dir (line 2790) | int
function g_file_delete (line 2802) | int
function g_file_get_size (line 2814) | int
function g_file_get_device_number (line 2836) | int
function g_file_get_inode_num (line 2858) | int
function g_load_library (line 2879) | long
function g_free_library (line 2890) | int
function g_system (line 2924) | int
function g_get_errno (line 2947) | int
function g_execvp (line 2962) | int
function g_execvp_list (line 3001) | int
function g_execlp3 (line 3025) | int
function g_set_alarm (line 3056) | unsigned int
function g_signal_child_stop (line 3090) | void
function g_signal_segfault (line 3116) | void
function g_signal_hang_up (line 3141) | void
function g_signal_user_interrupt (line 3166) | void
function g_signal_terminate (line 3191) | void
function g_signal_pipe (line 3216) | void
function g_signal_usr1 (line 3241) | void
function g_fork (line 3266) | int
function g_setgid (line 3289) | int
function g_drop_privileges (line 3302) | int
function g_initgroups (line 3344) | int
function g_getuid (line 3363) | int
function g_getgid (line 3376) | int
function g_setuid (line 3389) | int
function g_setsid (line 3400) | int
function g_getlogin (line 3411) | int
function g_setlogin (line 3422) | int
function g_set_allusercontext (line 3434) | int
function g_waitchild (line 3462) | int
function g_waitpid (line 3512) | int
function g_waitpid_status (line 3539) | struct proc_exit_status
function g_setpgid (line 3581) | int
function g_clearenv (line 3600) | void
function g_setenv (line 3617) | int
function g_setenv_log (line 3630) | void
function g_exit (line 3657) | int
function g_getpid (line 3665) | int
function g_sigterm (line 3677) | int
function g_pid_is_active (line 3688) | int g_pid_is_active(int pid)
function g_sighup (line 3695) | int
function g_getuser_info_by_name (line 3709) | int
function g_getuser_info_by_uid (line 3763) | int
function g_getgroup_info (line 3811) | int
function g_check_user_in_group (line 3837) | int
function g_check_user_in_group (line 3885) | int
function g_get_elapsed_ms (line 3927) | unsigned int
type bmp_magic (line 3946) | struct bmp_magic
type bmp_hdr (line 3951) | struct bmp_hdr
type dib_hdr (line 3959) | struct dib_hdr
function g_save_to_bmp (line 3975) | int
function g_shmdt (line 4114) | int
function g_gethostname (line 4126) | int
function g_mirror_memcpy (line 4170) | int
function g_tcp4_socket (line 4189) | int
function g_tcp4_bind_address (line 4200) | int
function g_tcp6_bind_address (line 4265) | int
function g_no_new_privs (line 4305) | int
function g_fips_mode_enabled (line 4320) | int
function g_qsort (line 4343) | void
type list (line 4351) | struct list
type list (line 4355) | struct list
type dirent (line 4356) | struct dirent
function oom_type (line 4409) | oom_type
function out_of_memory (line 4418) | static void
FILE: common/os_calls.h
type proc_exit_reason (line 26) | enum proc_exit_reason
type proc_exit_status (line 33) | struct proc_exit_status
type list (line 39) | struct list
type list (line 268) | struct list
type list (line 305) | struct list
type proc_exit_status (line 375) | struct proc_exit_status
type proc_exit_status (line 377) | struct proc_exit_status
type list (line 479) | struct list
FILE: common/parse.c
function parser_stream_overflow_check (line 71) | void
function out_utf8_as_utf16_le_proc (line 109) | void
function get_c32_from_stream (line 151) | static char32_t
function in_utf16_le_fixed_as_utf8_proc (line 196) | unsigned int
function in_utf16_le_fixed_as_utf8_length (line 258) | unsigned int
function in_utf16_le_terminated_as_utf8 (line 268) | unsigned int
function in_utf16_le_terminated_as_utf8_length (line 317) | unsigned int
FILE: common/parse.h
type stream (line 45) | struct stream
type stream (line 79) | struct stream
type stream (line 105) | struct stream
type stream (line 131) | struct stream
type stream (line 151) | struct stream
type stream (line 169) | struct stream
type stream (line 186) | struct stream
FILE: common/pixman-region.c
function PIXREGION_SZOF (line 200) | static size_t
function region_data_type_t (line 218) | static region_data_type_t *
function PIXMAN_EXPORT (line 310) | PIXMAN_EXPORT void
function PIXMAN_EXPORT (line 317) | PIXMAN_EXPORT void
function PIXMAN_EXPORT (line 342) | PIXMAN_EXPORT void
function PIXMAN_EXPORT (line 349) | PIXMAN_EXPORT box_type_t *
function pixman_bool_t (line 361) | static pixman_bool_t
function pixman_bool_t (line 372) | static pixman_bool_t
function PIXMAN_EXPORT (line 441) | static PIXMAN_EXPORT pixman_bool_t
function pixman_coalesce (line 505) | static inline int
function pixman_bool_t (line 603) | static inline pixman_bool_t
type pixman_bool_t (line 685) | typedef pixman_bool_t (*overlap_proc_ptr) (region_type_t *region,
function pixman_bool_t (line 693) | static pixman_bool_t
function pixman_set_extents (line 1008) | static void
function pixman_bool_t (line 1075) | static pixman_bool_t
function PIXMAN_EXPORT (line 1126) | PIXMAN_EXPORT pixman_bool_t
function pixman_bool_t (line 1231) | pixman_bool_t
function PIXMAN_EXPORT (line 1298) | PIXMAN_EXPORT pixman_bool_t
function pixman_bool_t (line 1428) | static pixman_bool_t
function PIXMAN_EXPORT (line 1564) | PIXMAN_EXPORT pixman_bool_t
function PIXMAN_EXPORT (line 1618) | PIXMAN_EXPORT int
function PIXMAN_EXPORT (line 1626) | PIXMAN_EXPORT box_type_t *
function PIXMAN_EXPORT (line 1644) | PIXMAN_EXPORT pixman_bool_t
FILE: common/pixman-region.h
type pixman_bool_t (line 24) | typedef int pixman_bool_t;
type pixman_region16_data (line 26) | struct pixman_region16_data
type pixman_box16 (line 32) | struct pixman_box16
type pixman_region16 (line 37) | struct pixman_region16
type _pixman_region_overlap_t (line 43) | enum _pixman_region_overlap_t
type pixman_region_overlap_t (line 50) | typedef enum _pixman_region_overlap_t pixman_region_overlap_t;
type pixman_region16_data_t (line 52) | typedef struct pixman_region16_data pixman_region16_data_t;
type pixman_box16_t (line 53) | typedef struct pixman_box16 pixman_box16_t;
type pixman_region16_t (line 54) | typedef struct pixman_region16 pixman_region16_t;
FILE: common/pixman-region16.c
type pixman_box16_t (line 57) | typedef pixman_box16_t box_type_t;
type pixman_region16_data_t (line 58) | typedef pixman_region16_data_t region_data_type_t;
type pixman_region16_t (line 59) | typedef pixman_region16_t region_type_t;
type overflow_int_t (line 60) | typedef signed int overflow_int_t;
function _pixman_log_error (line 71) | static int _pixman_log_error(const char *func, const char *format, ...)
FILE: common/rail.h
type rail_icon_info (line 73) | struct rail_icon_info
type rail_window_rect (line 86) | struct rail_window_rect
type rail_notify_icon_infotip (line 94) | struct rail_notify_icon_infotip
type rail_window_state_order (line 102) | struct rail_window_state_order
type rail_notify_state_order (line 129) | struct rail_notify_state_order
type rail_monitored_desktop_order (line 140) | struct rail_monitored_desktop_order
FILE: common/scancode.c
type scancode_to_keycode (line 31) | struct scancode_to_keycode
type scancode_to_keycode (line 43) | struct scancode_to_keycode
type scancode_to_keycode (line 179) | struct scancode_to_keycode
type map_settings (line 301) | struct map_settings
type settings_index (line 308) | enum settings_index
type map_settings (line 314) | struct map_settings
type map_settings (line 331) | struct map_settings
function scancode_to_index (line 334) | int
function scancode_from_index (line 367) | unsigned short
function scancode_to_x11_keycode (line 384) | unsigned short
function scancode_get_next (line 427) | unsigned short
function scancode_set_keycode_set (line 441) | int
FILE: common/set_int.c
type word_type (line 39) | typedef unsigned int word_type;
type set_int (line 42) | struct set_int
type set_int (line 55) | struct set_int
type set_int (line 58) | struct set_int
type set_int (line 69) | struct set_int
type set_int (line 70) | struct set_int
function set_int_delete (line 90) | void
function set_int_add (line 97) | void
function set_int_remove (line 109) | void
function set_int_contains (line 121) | int
function set_int_add_all (line 136) | void
function set_int_remove_all (line 146) | void
function set_int_get_next (line 156) | int
FILE: common/set_int.h
type set_int (line 30) | struct set_int
type set_int (line 46) | struct set_int
type set_int (line 55) | struct set_int
type set_int (line 66) | struct set_int
type set_int (line 78) | struct set_int
type set_int (line 90) | struct set_int
type set_int (line 98) | struct set_int
type set_int (line 106) | struct set_int
type set_int (line 119) | struct set_int
FILE: common/ssl_calls.c
type ssl_tls (line 62) | struct ssl_tls
function HMAC_CTX (line 74) | static inline HMAC_CTX *
function HMAC_CTX_free (line 82) | static inline void
function RSA_get0_key (line 89) | static inline void
function DH_set0_pqg (line 97) | static inline int
function dump_error_stack (line 137) | static void
function dump_ssl_error_stack (line 153) | static void
function ssl_init (line 164) | int
function ssl_finish (line 174) | int
function ssl_set_pre_master_secret_logfile (line 198) | int
function log_pre_master_secret (line 252) | static void
type rc4_data (line 285) | struct rc4_data
type rc4_data (line 301) | struct rc4_data
function ssl_rc4_info_delete (line 306) | void
function ssl_rc4_set_key (line 313) | void
function ssl_rc4_crypt (line 340) | void
function ssl_sha1_info_delete (line 414) | void
function ssl_sha1_clear (line 425) | void
function ssl_sha1_transform (line 439) | void
function ssl_sha1_complete (line 453) | void
function ssl_md5_info_delete (line 494) | void
function ssl_md5_clear (line 505) | void
function ssl_md5_transform (line 519) | void
function ssl_md5_complete (line 533) | void
function ssl_des3_info_delete (line 621) | void
function ssl_des3_encrypt (line 634) | int
function ssl_des3_decrypt (line 654) | int
function ssl_hmac_info_delete (line 695) | void
function ssl_hmac_sha1_init (line 712) | void
function ssl_hmac_transform (line 738) | void
function ssl_hmac_complete (line 757) | void
function ssl_reverse_it (line 778) | static void
function ssl_mod_exp (line 799) | int
function ssl_gen_key_xrdp1 (line 861) | int
function DH (line 981) | static DH *ssl_get_dh2236()
type ssl_tls (line 1045) | struct ssl_tls
type trans (line 1046) | struct trans
type ssl_tls (line 1048) | struct ssl_tls
type ssl_tls (line 1052) | struct ssl_tls
type ssl_tls (line 1052) | struct ssl_tls
function ssl_tls_log_error (line 1066) | static int
function log_encrypted_file_unsupported (line 1110) | static int
function ssl_tls_accept (line 1120) | int
function ssl_tls_disconnect (line 1333) | int
function ssl_tls_delete (line 1367) | void
function ssl_tls_read (line 1389) | int
function ssl_tls_write (line 1443) | int
function ssl_tls_can_recv (line 1493) | int
type ssl_tls (line 1506) | struct ssl_tls
type ssl_tls (line 1513) | struct ssl_tls
function tintptr (line 1519) | tintptr
function ssl_get_protocols_from_string (line 1526) | int
FILE: common/ssl_calls.h
type ssl_tls (line 26) | struct ssl_tls
type trans (line 27) | struct trans
type ssl_tls (line 97) | struct ssl_tls
type trans (line 98) | struct trans
type ssl_tls (line 100) | struct ssl_tls
type ssl_tls (line 104) | struct ssl_tls
type ssl_tls (line 106) | struct ssl_tls
type ssl_tls (line 108) | struct ssl_tls
type ssl_tls (line 110) | struct ssl_tls
type ssl_tls (line 112) | struct ssl_tls
type ssl_tls (line 114) | struct ssl_tls
type ssl_tls (line 116) | struct ssl_tls
type ssl_tls (line 122) | struct ssl_tls
FILE: common/string_calls.c
function g_format_info_string (line 53) | unsigned int
function g_text2bool (line 151) | int
function get_display_num_from_display (line 165) | static int
function g_get_display_string_from_x11_display (line 195) | int
function g_get_x11_display_from_display_string (line 205) | int
function g_get_display_string (line 223) | int
function g_strlen (line 267) | int
function g_strcmp (line 444) | int
function g_strncmp (line 451) | int
function g_strncmp_d (line 459) | int
function g_strcasecmp (line 481) | int
function g_strncasecmp (line 492) | int
function g_atoi (line 503) | int
function g_atoix (line 516) | int
function strlcpy (line 541) | size_t strlcpy(char *dst, const char *src, size_t dsize)
function g_htoi (line 576) | unsigned int
function g_bytes_to_hexstr (line 609) | int
function g_pos (line 759) | int
function g_strtrim (line 790) | int
function g_bitmask_to_str (line 895) | int
function g_str_to_bitmask (line 962) | int
function g_bitmask_to_charstr (line 1031) | int
function g_charstr_to_bitmask (line 1075) | int
type sig_to_name_type (line 1123) | typedef struct
function utf8_get_next_char (line 1262) | char32_t
function utf_char32_to_utf8 (line 1389) | unsigned int
function utf8_char_count (line 1451) | unsigned int
function utf8_as_utf16_word_count (line 1469) | unsigned int
function utf8_add_char_at (line 1485) | int
function utf8_remove_char_at (line 1529) | char32_t
FILE: common/string_calls.h
type info_string_tag (line 32) | struct info_string_tag
type bitmask_string (line 47) | struct bitmask_string
type bitmask_char (line 62) | struct bitmask_char
type info_string_tag (line 121) | struct info_string_tag
type bitmask_string (line 244) | struct bitmask_string
type bitmask_string (line 261) | struct bitmask_string
type bitmask_char (line 285) | struct bitmask_char
type bitmask_char (line 301) | struct bitmask_char
FILE: common/thread_calls.c
function tc_thread_create (line 44) | int
function tc_thread_create (line 58) | int
function tbus (line 79) | tbus
function tc_threadid_equal (line 91) | int
function tbus (line 102) | tbus
function tc_mutex_delete (line 117) | void
function tc_mutex_lock (line 135) | int
function tc_mutex_unlock (line 154) | int
function tbus (line 172) | tbus
function tc_sem_delete (line 193) | void
function tc_sem_dec (line 210) | int
function tc_sem_inc (line 226) | int
FILE: common/timers.c
type timers_oneshot (line 33) | struct timers_oneshot
type timers_oneshot (line 40) | struct timers_oneshot
type timers_oneshot (line 43) | struct timers_oneshot
type timers_oneshot (line 43) | struct timers_oneshot
function timers_oneshot_get_remaining (line 53) | int
function timers_oneshot_update_poll (line 82) | void
FILE: common/timers.h
type timers_oneshot (line 31) | struct timers_oneshot
type timers_oneshot (line 42) | struct timers_oneshot
type timers_oneshot (line 58) | struct timers_oneshot
type timers_oneshot (line 71) | struct timers_oneshot
FILE: common/trans.c
function trans_tls_recv (line 43) | static int
function trans_tls_send (line 54) | static int
function trans_tls_can_recv (line 65) | static int
function trans_tcp_recv (line 76) | static int
function trans_tcp_send (line 83) | static int
function trans_tcp_can_recv (line 90) | static int
type trans (line 97) | struct trans
type trans (line 100) | struct trans
type trans (line 100) | struct trans
type trans (line 102) | struct trans
type trans (line 102) | struct trans
function trans_delete (line 123) | void
function trans_delete_from_child (line 162) | void
function trans_get_wait_objs (line 180) | int
function trans_get_wait_objs_rw (line 205) | int
function trans_send_waiting (line 240) | static int
function trans_check_wait_objs (line 308) | int
function trans_force_read_s (line 468) | int
function trans_force_read (line 523) | int
function trans_force_write_s (line 530) | int
function trans_force_write (line 591) | int
function trans_write_copy_s (line 598) | int
function trans_write_copy (line 680) | int
function local_connect_shim (line 691) | static int
function poll_for_async_connect (line 707) | static int
function trans_connect (line 747) | int
function trans_listen_address (line 876) | int
function trans_listen (line 999) | int
type stream (line 1006) | struct stream
type trans (line 1007) | struct trans
type stream (line 1009) | struct stream
type stream (line 1009) | struct stream
type stream (line 1013) | struct stream
type stream (line 1024) | struct stream
type trans (line 1025) | struct trans
type stream (line 1027) | struct stream
type stream (line 1027) | struct stream
type stream (line 1031) | struct stream
function trans_set_tls_mode (line 1044) | int
function trans_shutdown_tls_mode (line 1075) | int
FILE: common/trans.h
type trans (line 40) | struct trans
type xrdp_tls (line 41) | struct xrdp_tls
type trans (line 43) | struct trans
type trans (line 44) | struct trans
type trans (line 45) | struct trans
type trans (line 47) | struct trans
type trans (line 48) | struct trans
type trans (line 49) | struct trans
type xrdp_source (line 53) | enum xrdp_source
type source_info (line 88) | struct source_info
type trans (line 94) | struct trans
type trans (line 124) | struct trans
type trans (line 127) | struct trans
type trans (line 129) | struct trans
type trans (line 131) | struct trans
type trans (line 133) | struct trans
type trans (line 137) | struct trans
type trans (line 139) | struct trans
type stream (line 139) | struct stream
type trans (line 141) | struct trans
type stream (line 141) | struct stream
type trans (line 143) | struct trans
type trans (line 145) | struct trans
type trans (line 147) | struct trans
type trans (line 149) | struct trans
type stream (line 149) | struct stream
type trans (line 168) | struct trans
type trans (line 171) | struct trans
type trans (line 173) | struct trans
type stream (line 174) | struct stream
type trans (line 175) | struct trans
type stream (line 176) | struct stream
type trans (line 177) | struct trans
type trans (line 179) | struct trans
type trans (line 182) | struct trans
type trans (line 184) | struct trans
type stream (line 184) | struct stream
FILE: common/xrdp_client_info.h
type monitor_info (line 32) | struct monitor_info
type xrdp_keyboard_overrides (line 54) | struct xrdp_keyboard_overrides
type display_size_description (line 61) | struct display_size_description
type client_resize_mode (line 76) | enum client_resize_mode
type xrdp_capture_code (line 83) | enum xrdp_capture_code
type unicode_input_state (line 96) | enum unicode_input_state
type xrdp_encoder_flags (line 103) | enum xrdp_encoder_flags
type xrdp_client_info (line 128) | struct xrdp_client_info
FILE: common/xrdp_rail.h
type rail_icon_info (line 73) | struct rail_icon_info
type rail_window_rect (line 86) | struct rail_window_rect
type rail_notify_icon_infotip (line 94) | struct rail_notify_icon_infotip
type rail_window_state_order (line 102) | struct rail_window_state_order
type rail_notify_state_order (line 129) | struct rail_notify_state_order
type rail_monitored_desktop_order (line 140) | struct rail_monitored_desktop_order
FILE: common/xup_client_info.h
type xup_client_info (line 38) | struct xup_client_info
FILE: fontutils/dumpfv1.c
type program_mode (line 38) | enum program_mode
type program_args (line 49) | struct program_args
function parse_program_args (line 64) | static int
function display_font_file_info (line 159) | static void
function display_glyph_info_table (line 265) | static void
function row_to_str (line 292) | static void
function display_glyph_info (line 315) | static void
function main (line 353) | int
FILE: fontutils/fv1.c
type fv1_glyph (line 39) | struct fv1_glyph
type fv1_glyph (line 45) | struct fv1_glyph
type fv1_glyph (line 65) | struct fv1_glyph
type fv1_glyph (line 66) | struct fv1_glyph
type fv1_file (line 83) | struct fv1_file
type fv1_file (line 86) | struct fv1_file
type fv1_file (line 86) | struct fv1_file
function add_glyphs_from_stream (line 101) | static void
type fv1_file (line 150) | struct fv1_file
type fv1_file (line 153) | struct fv1_file
type stream (line 169) | struct stream
function fv1_file_free (line 223) | void
function write_stream (line 234) | static int
function fv1_file_save (line 255) | int
FILE: fontutils/fv1.h
type list (line 26) | struct list
type fv1_glyph (line 38) | struct fv1_glyph
type fv1_file (line 53) | struct fv1_file
type fv1_file (line 77) | struct fv1_file
type fv1_file (line 81) | struct fv1_file
type fv1_file (line 83) | struct fv1_file
type fv1_glyph (line 86) | struct fv1_glyph
type fv1_realloc_mode (line 91) | enum fv1_realloc_mode
type fv1_file (line 98) | struct fv1_file
FILE: fontutils/mkfv1.c
type sans10_compat (line 60) | enum sans10_compat
type program_args (line 70) | struct program_args
type x_dimensions (line 82) | struct x_dimensions
type x_dimensions (line 92) | struct x_dimensions
function parse_ucode_name (line 167) | static unsigned int
function parse_program_args (line 198) | static int
function is_blank_glyph_row (line 286) | static int
function get_ft_error (line 319) | static void
function implement_sans10_compatibility (line 357) | static void
type fv1_glyph (line 403) | struct fv1_glyph
type program_args (line 405) | struct program_args
type fv1_glyph (line 409) | struct fv1_glyph
function main (line 474) | int
FILE: fontutils/windows/fontdump.c
function check_messages (line 42) | int
function msg (line 58) | static int
function show_last_error (line 72) | static int
function font_dump (line 91) | static int
function LRESULT (line 413) | static LRESULT CALLBACK
function create_window (line 464) | static int
function main_loop (line 514) | static int
function WinMain (line 529) | int WINAPI
FILE: genkeymap/genkeymap.c
type kbd_info (line 74) | struct kbd_info
function usage (line 90) | static void
function free_kbd_info (line 105) | static void
type kbd_info (line 129) | struct kbd_info
type kbd_info (line 132) | struct kbd_info
type kbd_info (line 137) | struct kbd_info
function output_setxkbmap_comment (line 197) | static void
function output_file_section (line 245) | static void
function is_caps_lock_supported (line 328) | static int
function main (line 355) | int main(int argc, char **argv)
FILE: keygen/keygen.c
function out_params (line 200) | static int
function sign_key (line 213) | static int
function write_out_line (line 289) | static int
function save_all (line 341) | static int
function key_gen (line 404) | static int
function key_gen_auto (line 468) | static int
function key_test512 (line 475) | static int
function key_test2048 (line 518) | static int
function main (line 561) | int
FILE: libipm/ccp.c
type ccp_msg_code (line 48) | enum ccp_msg_code
function ccp_trans_from_scp_trans (line 65) | void
function ccp_msg_in_check_available (line 76) | int
function ccp_msg_in_get_msgno (line 83) | enum ccp_msg_code
function ccp_msg_in_reset (line 90) | void
function ccp_send_close_connection_request (line 97) | int
function ccp_get_close_connection_request (line 108) | int
FILE: libipm/ccp.h
type ccp_msg_code (line 43) | enum ccp_msg_code
type ccp_msg_code (line 59) | enum ccp_msg_code
type trans (line 74) | struct trans
type trans (line 87) | struct trans
type ccp_msg_code (line 98) | enum ccp_msg_code
type trans (line 99) | struct trans
type trans (line 107) | struct trans
type trans (line 120) | struct trans
type ccp_close_reason_type (line 121) | enum ccp_close_reason_type
type trans (line 133) | struct trans
type ccp_close_reason_type (line 134) | enum ccp_close_reason_type
FILE: libipm/ccp_application_types.c
type ccp_close_reason_type (line 36) | enum ccp_close_reason_type
FILE: libipm/ccp_application_types.h
type ccp_close_reason_type (line 34) | enum ccp_close_reason_type
type ccp_close_reason_type (line 50) | enum ccp_close_reason_type
FILE: libipm/eicp.c
type eicp_msg_code (line 54) | enum eicp_msg_code
function eicp_init_trans (line 71) | int
type trans (line 78) | struct trans
type trans (line 81) | struct trans
function eicp_msg_in_check_available (line 111) | int
function eicp_msg_in_wait_available (line 119) | int
function eicp_msg_in_get_msgno (line 127) | enum eicp_msg_code
function eicp_msg_in_reset (line 135) | void
function eicp_send_sys_login_request (line 142) | int
function eicp_get_sys_login_request (line 168) | int
function eicp_send_sys_login_response (line 184) | int
function eicp_get_sys_login_response (line 213) | int
function eicp_send_uds_login_request (line 249) | int
function eicp_get_uds_login_request (line 258) | int
function eicp_send_logout_request (line 266) | int
function eicp_send_create_session_request (line 274) | int
function eicp_get_create_session_request (line 301) | int
function eicp_send_create_session_response (line 345) | int
function eicp_get_create_session_response (line 359) | int
FILE: libipm/eicp.h
type trans (line 39) | struct trans
type guid (line 40) | struct guid
type eicp_msg_code (line 43) | enum eicp_msg_code
type eicp_msg_code (line 68) | enum eicp_msg_code
type trans (line 79) | struct trans
type trans (line 90) | struct trans
type trans (line 103) | struct trans
type trans (line 120) | struct trans
type eicp_msg_code (line 132) | enum eicp_msg_code
type trans (line 133) | struct trans
type trans (line 141) | struct trans
type trans (line 166) | struct trans
type trans (line 183) | struct trans
type trans (line 204) | struct trans
type trans (line 222) | struct trans
type trans (line 242) | struct trans
type trans (line 254) | struct trans
type trans (line 267) | struct trans
type trans (line 295) | struct trans
type scp_session_type (line 297) | enum scp_session_type
type trans (line 324) | struct trans
type scp_session_type (line 326) | enum scp_session_type
type trans (line 349) | struct trans
type scp_screate_status (line 350) | enum scp_screate_status
type guid (line 352) | struct guid
type trans (line 370) | struct trans
type scp_screate_status (line 371) | enum scp_screate_status
type guid (line 373) | struct guid
FILE: libipm/ercp.c
type ercp_msg_code (line 54) | enum ercp_msg_code
function ercp_init_trans (line 71) | int
function ercp_trans_from_eicp_trans (line 78) | void
type trans (line 90) | struct trans
type trans (line 93) | struct trans
function ercp_msg_in_check_available (line 116) | int
function ercp_msg_in_wait_available (line 124) | int
function ercp_msg_in_get_msgno (line 132) | enum ercp_msg_code
function ercp_msg_in_reset (line 140) | void
function ercp_send_session_announce_event (line 148) | int
function ercp_get_session_announce_event (line 181) | int
function ercp_send_session_finished_event (line 237) | int
function ercp_send_connect_session_request (line 246) | int
function ercp_get_connect_session_request (line 259) | int
function ercp_send_client_connect_event (line 281) | int
function ercp_get_client_connect_event (line 294) | int
function ercp_send_client_disconnect_event (line 315) | int
function ercp_get_client_disconnect_event (line 326) | int
FILE: libipm/ercp.h
type guid (line 42) | struct guid
type ercp_msg_code (line 45) | enum ercp_msg_code
type ercp_msg_code (line 69) | enum ercp_msg_code
type trans (line 80) | struct trans
type trans (line 93) | struct trans
type trans (line 104) | struct trans
type trans (line 117) | struct trans
type trans (line 134) | struct trans
type ercp_msg_code (line 146) | enum ercp_msg_code
type trans (line 147) | struct trans
type trans (line 155) | struct trans
type trans (line 179) | struct trans
type scp_session_type (line 182) | enum scp_session_type
type guid (line 186) | struct guid
type trans (line 211) | struct trans
type scp_session_type (line 214) | enum scp_session_type
type guid (line 218) | struct guid
type trans (line 236) | struct trans
type trans (line 256) | struct trans
type trans (line 280) | struct trans
type trans (line 300) | struct trans
type trans (line 319) | struct trans
type trans (line 336) | struct trans
type trans (line 351) | struct trans
FILE: libipm/libipm.c
function libipm_msg_in_close_file_descriptors (line 36) | void
function libipm_trans_send_proc (line 60) | static int
function libipm_trans_recv_proc (line 88) | static int
function libipm_trans_destructor (line 132) | static void
function libipm_init_trans (line 155) | enum libipm_status
function libipm_set_flags (line 196) | void
function libipm_clear_flags (line 209) | void
function libipm_change_facility (line 222) | void
FILE: libipm/libipm.h
type trans (line 32) | struct trans
type libipm_fsb (line 42) | struct libipm_fsb
type libipm_status (line 57) | enum libipm_status
type libipm_status (line 96) | enum libipm_status
type trans (line 97) | struct trans
type libipm_facility (line 98) | enum libipm_facility
type trans (line 107) | struct trans
type trans (line 116) | struct trans
type trans (line 133) | struct trans
type libipm_facility (line 134) | enum libipm_facility
type libipm_facility (line 135) | enum libipm_facility
type libipm_status (line 148) | enum libipm_status
type trans (line 149) | struct trans
type libipm_status (line 195) | enum libipm_status
type trans (line 196) | struct trans
type trans (line 204) | struct trans
type libipm_status (line 221) | enum libipm_status
type trans (line 222) | struct trans
type trans (line 233) | struct trans
type libipm_status (line 249) | enum libipm_status
type trans (line 250) | struct trans
type libipm_status (line 269) | enum libipm_status
type trans (line 270) | struct trans
type trans (line 284) | struct trans
type trans (line 295) | struct trans
type libipm_status (line 343) | enum libipm_status
type trans (line 344) | struct trans
type trans (line 358) | struct trans
FILE: libipm/libipm_facilities.h
type libipm_facility (line 28) | enum libipm_facility
FILE: libipm/libipm_private.h
type libipm_priv (line 53) | struct libipm_priv
type trans (line 88) | struct trans
FILE: libipm/libipm_recv.c
function validate_msg_header (line 40) | static enum libipm_status
function libipm_msg_in_check_available (line 87) | enum libipm_status
function libipm_msg_in_wait_available (line 135) | enum libipm_status
function libipm_msg_in_get_msgno (line 189) | unsigned short
function libipm_msg_in_peek_type (line 199) | char
function log_parse_error (line 231) | static void
function extract_bool_type (line 281) | static enum libipm_status
function extract_int8_type (line 318) | static enum libipm_status
function extract_int16_type (line 346) | static enum libipm_status
function extract_int32_type (line 377) | static enum libipm_status
function extract_int64_type (line 408) | static enum libipm_status
function extract_char_ptr_type (line 439) | static enum libipm_status
function extract_fd_type (line 472) | static enum libipm_status
function extract_fsb_type (line 501) | static enum libipm_status
function libipm_msg_in_parsev (line 552) | static enum libipm_status
function libipm_msg_in_parse (line 644) | enum libipm_status
function libipm_msg_in_reset (line 668) | void
FILE: libipm/libipm_send.c
function log_append_error (line 43) | static void
function append_bool_type (line 96) | static enum libipm_status
function append_int8_type (line 131) | static enum libipm_status
function append_int16_type (line 166) | static enum libipm_status
function append_int32_type (line 202) | static enum libipm_status
function append_int64_type (line 248) | static enum libipm_status
function append_char_ptr_type (line 277) | static enum libipm_status
function append_fd_type (line 317) | static enum libipm_status
function append_fsb_type (line 358) | static enum libipm_status
function libipm_msg_out_appendv (line 399) | static enum libipm_status
function init_output_buffer (line 475) | static void
function libipm_msg_out_init (line 493) | enum libipm_status
function libipm_msg_out_append (line 520) | enum libipm_status
function libipm_msg_out_mark_end (line 543) | void
function libipm_msg_out_simple_send (line 572) | enum libipm_status
function libipm_msg_out_erase (line 607) | void
FILE: libipm/scp.c
type scp_msg_code (line 68) | enum scp_msg_code
function is_positive_int (line 88) | static int is_positive_int(const char *s)
function scp_port_to_unix_domain_path (line 102) | int
function scp_port_to_display_string (line 153) | int
type trans (line 179) | struct trans
type trans (line 185) | struct trans
function scp_init_trans (line 213) | int
type trans (line 220) | struct trans
type trans (line 223) | struct trans
function scp_msg_in_check_available (line 252) | int
function scp_msg_in_wait_available (line 260) | int
function scp_msg_in_get_msgno (line 268) | enum scp_msg_code
function scp_msg_in_reset (line 276) | void
function scp_send_set_peername_request (line 283) | int
function scp_get_set_peername_request (line 296) | int
function scp_send_uds_login_request (line 305) | int
function scp_send_sys_login_request (line 315) | int
function scp_get_sys_login_request (line 339) | int
function scp_send_login_response (line 354) | int
function scp_get_login_response (line 371) | int
function scp_send_logout_request (line 406) | int
function scp_send_create_session_request (line 415) | int
function scp_get_create_session_request (line 440) | int
function scp_send_create_session_response (line 481) | int
function scp_get_create_session_response (line 500) | int
function scp_send_connect_session_request (line 531) | int
function scp_get_connect_session_request (line 548) | int
function scp_send_connect_session_response (line 573) | int
function get_connect_session_response_fds (line 637) | static int
function scp_get_connect_session_response (line 676) | int
function scp_send_list_sessions_request (line 721) | int
function scp_send_list_sessions_response (line 732) | int
function scp_get_list_sessions_response (line 774) | int
function scp_send_create_sockdir_request (line 877) | int
function scp_send_create_sockdir_response (line 889) | int
function scp_get_create_sockdir_response (line 901) | int
function scp_send_close_connection_request (line 917) | int
FILE: libipm/scp.h
type guid (line 38) | struct guid
type trans (line 39) | struct trans
type scp_msg_code (line 44) | enum scp_msg_code
type scp_msg_code (line 82) | enum scp_msg_code
type trans (line 125) | struct trans
type trans (line 141) | struct trans
type trans (line 156) | struct trans
type trans (line 168) | struct trans
type trans (line 185) | struct trans
type scp_msg_code (line 197) | enum scp_msg_code
type trans (line 198) | struct trans
type trans (line 206) | struct trans
type trans (line 223) | struct trans
type trans (line 234) | struct trans
type trans (line 250) | struct trans
type trans (line 266) | struct trans
type trans (line 281) | struct trans
type trans (line 297) | struct trans
type scp_login_status (line 298) | enum scp_login_status
type trans (line 316) | struct trans
type scp_login_status (line 317) | enum scp_login_status
type trans (line 333) | struct trans
type trans (line 353) | struct trans
type scp_session_type (line 354) | enum scp_session_type
type trans (line 380) | struct trans
type scp_session_type (line 381) | enum scp_session_type
type trans (line 402) | struct trans
type scp_screate_status (line 403) | enum scp_screate_status
type guid (line 405) | struct guid
type trans (line 420) | struct trans
type scp_screate_status (line 421) | enum scp_screate_status
type guid (line 423) | struct guid
type trans (line 438) | struct trans
type guid (line 439) | struct guid
type trans (line 456) | struct trans
type guid (line 457) | struct guid
type trans (line 473) | struct trans
type scp_sconnect_status (line 474) | enum scp_sconnect_status
type trans (line 490) | struct trans
type scp_sconnect_status (line 491) | enum scp_sconnect_status
type trans (line 504) | struct trans
type trans (line 516) | struct trans
type scp_list_sessions_status (line 517) | enum scp_list_sessions_status
type scp_session_info (line 518) | struct scp_session_info
type trans (line 537) | struct trans
type scp_list_sessions_status (line 538) | enum scp_list_sessions_status
type scp_session_info (line 539) | struct scp_session_info
type trans (line 554) | struct trans
type trans (line 564) | struct trans
type scp_create_sockdir_status (line 565) | enum scp_create_sockdir_status
type trans (line 575) | struct trans
type scp_create_sockdir_status (line 576) | enum scp_create_sockdir_status
type trans (line 587) | struct trans
FILE: libipm/scp_application_types.c
type scp_login_status (line 35) | enum scp_login_status
type scp_screate_status (line 61) | enum scp_screate_status
type scp_sconnect_status (line 91) | enum scp_sconnect_status
FILE: libipm/scp_application_types.h
type scp_session_type (line 34) | enum scp_session_type
type scp_session_info (line 54) | struct scp_session_info
type scp_login_status (line 74) | enum scp_login_status
type scp_login_status (line 94) | enum scp_login_status
type scp_screate_status (line 100) | enum scp_screate_status
type scp_screate_status (line 121) | enum scp_screate_status
type scp_sconnect_status (line 136) | enum scp_sconnect_status
type scp_sconnect_status (line 154) | enum scp_sconnect_status
type scp_list_sessions_status (line 160) | enum scp_list_sessions_status
type scp_create_sockdir_status (line 186) | enum scp_create_sockdir_status
FILE: libipm/scp_sync.c
function scp_sync_wait_specific (line 39) | int
function scp_sync_uds_login_request (line 74) | int
type list (line 104) | struct list
type trans (line 105) | struct trans
type list (line 107) | struct list
type scp_list_sessions_status (line 116) | enum scp_list_sessions_status
type scp_session_info (line 117) | struct scp_session_info
function scp_sync_create_sockdir_request (line 171) | int
FILE: libipm/scp_sync.h
type trans (line 60) | struct trans
type scp_msg_code (line 60) | enum scp_msg_code
type trans (line 72) | struct trans
type list (line 86) | struct list
type trans (line 87) | struct trans
type trans (line 99) | struct trans
FILE: libxrdp/libxrdp.c
type xrdp_session (line 35) | struct xrdp_session
type xrdp_process (line 36) | struct xrdp_process
type trans (line 36) | struct trans
type xrdp_session (line 38) | struct xrdp_session
type xrdp_session (line 40) | struct xrdp_session
type xrdp_session (line 40) | struct xrdp_session
function libxrdp_exit (line 59) | int EXPORT_CC
function libxrdp_disconnect (line 75) | int EXPORT_CC
function libxrdp_process_incoming (line 119) | int EXPORT_CC
function libxrdp_get_pdu_bytes (line 129) | int EXPORT_CC
type stream (line 160) | struct stream
type trans (line 161) | struct trans
type stream (line 164) | struct stream
function libxrdp_process_data (line 189) | int EXPORT_CC
function libxrdp_send_palette (line 321) | int EXPORT_CC
function libxrdp_send_bell (line 410) | int EXPORT_CC
function init_bitmap_pdu (line 450) | static int
function send_bitmap_pdu (line 482) | static int
function libxrdp_send_bitmap (line 508) | int EXPORT_CC
function libxrdp_send_pointer_system (line 814) | int EXPORT_CC
function libxrdp_send_pointer_position (line 832) | int EXPORT_CC
function libxrdp_send_pointer (line 851) | int EXPORT_CC
function libxrdp_set_pointer (line 1064) | int EXPORT_CC
function libxrdp_orders_init (line 1117) | int EXPORT_CC
function libxrdp_orders_send (line 1124) | int EXPORT_CC
function libxrdp_orders_force_send (line 1131) | int EXPORT_CC
function libxrdp_orders_rect (line 1138) | int EXPORT_CC
function libxrdp_orders_screen_blt (line 1146) | int EXPORT_CC
function libxrdp_orders_pat_blt (line 1156) | int EXPORT_CC
function libxrdp_orders_dest_blt (line 1168) | int EXPORT_CC
function libxrdp_orders_line (line 1177) | int EXPORT_CC
function libxrdp_orders_mem_blt (line 1190) | int EXPORT_CC
function libxrdp_orders_composite_blt (line 1202) | int
function libxrdp_orders_text (line 1221) | int EXPORT_CC
function libxrdp_orders_send_palette (line 1240) | int EXPORT_CC
function libxrdp_orders_send_raw_bitmap (line 1249) | int EXPORT_CC
function libxrdp_orders_send_bitmap (line 1260) | int EXPORT_CC
function libxrdp_orders_send_font (line 1271) | int EXPORT_CC
function libxrdp_reset (line 1281) | int EXPORT_CC
function libxrdp_orders_send_raw_bitmap2 (line 1325) | int EXPORT_CC
function libxrdp_orders_send_bitmap2 (line 1336) | int EXPORT_CC
function libxrdp_orders_send_bitmap3 (line 1347) | int EXPORT_CC
function libxrdp_get_channel_count (line 1358) | int EXPORT_CC
function libxrdp_query_channel (line 1383) | int EXPORT_CC
function libxrdp_get_channel_id (line 1437) | int EXPORT_CC
function libxrdp_send_to_channel (line 1473) | int EXPORT_CC
function libxrdp_disable_channel (line 1515) | int
function libxrdp_drdynvc_start (line 1543) | int
function libxrdp_drdynvc_open (line 1557) | int
function libxrdp_drdynvc_close (line 1572) | int
function libxrdp_drdynvc_data_first (line 1585) | int
function libxrdp_drdynvc_data (line 1601) | int
function libxrdp_orders_send_brush (line 1615) | int EXPORT_CC
function libxrdp_orders_send_create_os_surface (line 1626) | int EXPORT_CC
function libxrdp_orders_send_switch_os_surface (line 1636) | int EXPORT_CC
function libxrdp_window_new_update (line 1643) | int EXPORT_CC
function libxrdp_window_delete (line 1653) | int EXPORT_CC
function libxrdp_window_icon (line 1660) | int EXPORT_CC
function libxrdp_window_cached_icon (line 1671) | int EXPORT_CC
function libxrdp_notify_new_update (line 1681) | int EXPORT_CC
function libxrdp_notify_delete (line 1692) | int
function libxrdp_monitored_desktop (line 1701) | int
function libxrdp_codec_jpeg_compress (line 1710) | int EXPORT_CC
function libxrdp_fastpath_send_surface (line 1727) | int EXPORT_CC
function libxrdp_fastpath_send_frame_marker (line 1816) | int EXPORT_CC
function libxrdp_send_session_info (line 1858) | int EXPORT_CC
function sanitise_extended_monitor_attributes (line 1875) | static void
function libxrdp_process_monitor_stream (line 1974) | int
function libxrdp_process_monitor_ex_stream (line 2152) | int
function libxrdp_init_display_size_description (line 2254) | int
function libxrdp_planar_compress (line 2410) | int EXPORT_CC
FILE: libxrdp/libxrdp.h
type xrdp_iso (line 40) | struct xrdp_iso
type mcs_channel_item (line 51) | struct mcs_channel_item
type xrdp_mcs (line 61) | struct xrdp_mcs
type xrdp_fastpath (line 76) | struct xrdp_fastpath
type xrdp_sec (line 101) | struct xrdp_sec
type xrdp_process (line 138) | struct xrdp_process
type xrdp_drdynvc (line 140) | struct xrdp_drdynvc
type xrdp_channel (line 155) | struct xrdp_channel
type xrdp_rdp (line 166) | struct xrdp_rdp
type xrdp_orders_state (line 178) | struct xrdp_orders_state
type xrdp_orders (line 279) | struct xrdp_orders
type xrdp_mppc_enc (line 300) | struct xrdp_mppc_enc
type xrdp_mppc_enc (line 316) | struct xrdp_mppc_enc
type xrdp_mppc_enc (line 317) | struct xrdp_mppc_enc
type xrdp_mppc_enc (line 320) | struct xrdp_mppc_enc
type xrdp_tcp (line 323) | struct xrdp_tcp
type xrdp_iso (line 324) | struct xrdp_iso
type trans (line 324) | struct trans
type xrdp_tcp (line 326) | struct xrdp_tcp
type xrdp_tcp (line 328) | struct xrdp_tcp
type stream (line 328) | struct stream
type xrdp_tcp (line 330) | struct xrdp_tcp
type stream (line 330) | struct stream
type xrdp_tcp (line 332) | struct xrdp_tcp
type stream (line 332) | struct stream
type xrdp_iso (line 335) | struct xrdp_iso
type xrdp_mcs (line 336) | struct xrdp_mcs
type trans (line 336) | struct trans
type xrdp_iso (line 338) | struct xrdp_iso
type xrdp_iso (line 340) | struct xrdp_iso
type stream (line 340) | struct stream
type xrdp_iso (line 342) | struct xrdp_iso
type stream (line 342) | struct stream
type xrdp_iso (line 344) | struct xrdp_iso
type stream (line 344) | struct stream
type xrdp_iso (line 346) | struct xrdp_iso
type xrdp_iso (line 348) | struct xrdp_iso
type stream (line 348) | struct stream
type xrdp_mcs (line 351) | struct xrdp_mcs
type xrdp_sec (line 352) | struct xrdp_sec
type trans (line 352) | struct trans
type stream (line 353) | struct stream
type stream (line 354) | struct stream
type xrdp_mcs (line 356) | struct xrdp_mcs
type xrdp_mcs (line 358) | struct xrdp_mcs
type stream (line 358) | struct stream
type xrdp_mcs (line 360) | struct xrdp_mcs
type stream (line 360) | struct stream
type xrdp_mcs (line 362) | struct xrdp_mcs
type stream (line 362) | struct stream
type xrdp_mcs (line 364) | struct xrdp_mcs
type xrdp_mcs (line 366) | struct xrdp_mcs
type xrdp_sec (line 382) | struct xrdp_sec
type xrdp_rdp (line 383) | struct xrdp_rdp
type trans (line 383) | struct trans
type xrdp_sec (line 385) | struct xrdp_sec
type xrdp_sec (line 387) | struct xrdp_sec
type stream (line 387) | struct stream
type xrdp_sec (line 389) | struct xrdp_sec
type xrdp_sec (line 391) | struct xrdp_sec
type stream (line 391) | struct stream
type xrdp_sec (line 393) | struct xrdp_sec
type stream (line 393) | struct stream
type xrdp_sec (line 395) | struct xrdp_sec
type stream (line 395) | struct stream
type xrdp_sec (line 397) | struct xrdp_sec
type stream (line 397) | struct stream
type xrdp_sec (line 399) | struct xrdp_sec
type stream (line 399) | struct stream
type xrdp_sec (line 401) | struct xrdp_sec
type xrdp_sec (line 403) | struct xrdp_sec
type xrdp_sec (line 405) | struct xrdp_sec
type xrdp_sec (line 407) | struct xrdp_sec
type stream (line 407) | struct stream
type suppress_output_reason (line 414) | enum suppress_output_reason
type xrdp_rdp (line 424) | struct xrdp_rdp
type xrdp_session (line 425) | struct xrdp_session
type trans (line 425) | struct trans
type xrdp_rdp (line 427) | struct xrdp_rdp
type xrdp_rdp (line 429) | struct xrdp_rdp
type stream (line 429) | struct stream
type xrdp_rdp (line 431) | struct xrdp_rdp
type stream (line 431) | struct stream
type xrdp_rdp (line 433) | struct xrdp_rdp
type xrdp_rdp (line 435) | struct xrdp_rdp
type stream (line 435) | struct stream
type xrdp_rdp (line 437) | struct xrdp_rdp
type stream (line 437) | struct stream
type xrdp_rdp (line 439) | struct xrdp_rdp
type stream (line 439) | struct stream
type xrdp_rdp (line 441) | struct xrdp_rdp
type stream (line 441) | struct stream
type xrdp_rdp (line 444) | struct xrdp_rdp
type stream (line 444) | struct stream
type xrdp_rdp (line 448) | struct xrdp_rdp
type stream (line 448) | struct stream
type xrdp_rdp (line 451) | struct xrdp_rdp
type xrdp_rdp (line 453) | struct xrdp_rdp
type xrdp_rdp (line 455) | struct xrdp_rdp
type stream (line 455) | struct stream
type xrdp_rdp (line 457) | struct xrdp_rdp
type xrdp_rdp (line 459) | struct xrdp_rdp
type xrdp_rdp (line 461) | struct xrdp_rdp
type xrdp_rdp (line 473) | struct xrdp_rdp
type xrdp_rdp (line 487) | struct xrdp_rdp
type suppress_output_reason (line 488) | enum suppress_output_reason
type xrdp_orders (line 492) | struct xrdp_orders
type xrdp_session (line 493) | struct xrdp_session
type xrdp_rdp (line 494) | struct xrdp_rdp
type xrdp_orders (line 496) | struct xrdp_orders
type xrdp_orders (line 498) | struct xrdp_orders
type xrdp_orders (line 500) | struct xrdp_orders
type xrdp_orders (line 502) | struct xrdp_orders
type xrdp_orders (line 504) | struct xrdp_orders
type xrdp_orders (line 506) | struct xrdp_orders
type xrdp_orders (line 508) | struct xrdp_orders
type xrdp_rect (line 509) | struct xrdp_rect
type xrdp_orders (line 511) | struct xrdp_orders
type xrdp_rect (line 513) | struct xrdp_rect
type xrdp_orders (line 515) | struct xrdp_orders
type xrdp_brush (line 517) | struct xrdp_brush
type xrdp_rect (line 518) | struct xrdp_rect
type xrdp_orders (line 520) | struct xrdp_orders
type xrdp_rect (line 522) | struct xrdp_rect
type xrdp_orders (line 524) | struct xrdp_orders
type xrdp_pen (line 527) | struct xrdp_pen
type xrdp_rect (line 528) | struct xrdp_rect
type xrdp_orders (line 530) | struct xrdp_orders
type xrdp_rect (line 533) | struct xrdp_rect
type xrdp_orders (line 535) | struct xrdp_orders
type xrdp_rect (line 542) | struct xrdp_rect
type xrdp_orders (line 544) | struct xrdp_orders
type xrdp_rect (line 552) | struct xrdp_rect
type xrdp_orders (line 554) | struct xrdp_orders
type xrdp_orders (line 557) | struct xrdp_orders
type xrdp_orders (line 561) | struct xrdp_orders
type xrdp_orders (line 565) | struct xrdp_orders
type xrdp_font_char (line 566) | struct xrdp_font_char
type xrdp_orders (line 569) | struct xrdp_orders
type xrdp_orders (line 573) | struct xrdp_orders
type xrdp_orders (line 577) | struct xrdp_orders
type xrdp_orders (line 581) | struct xrdp_orders
type xrdp_orders (line 584) | struct xrdp_orders
type list (line 586) | struct list
type xrdp_orders (line 588) | struct xrdp_orders
type stream (line 593) | struct stream
type stream (line 594) | struct stream
type stream (line 598) | struct stream
type stream (line 599) | struct stream
type stream (line 603) | struct stream
type stream (line 604) | struct stream
type xrdp_channel (line 630) | struct xrdp_channel
type xrdp_sec (line 631) | struct xrdp_sec
type xrdp_mcs (line 631) | struct xrdp_mcs
type xrdp_channel (line 633) | struct xrdp_channel
type xrdp_channel (line 635) | struct xrdp_channel
type stream (line 635) | struct stream
type xrdp_channel (line 637) | struct xrdp_channel
type stream (line 637) | struct stream
type xrdp_channel (line 640) | struct xrdp_channel
type stream (line 640) | struct stream
type xrdp_channel (line 643) | struct xrdp_channel
type xrdp_channel (line 645) | struct xrdp_channel
type xrdp_drdynvc_procs (line 646) | struct xrdp_drdynvc_procs
type xrdp_channel (line 649) | struct xrdp_channel
type xrdp_channel (line 651) | struct xrdp_channel
type xrdp_channel (line 655) | struct xrdp_channel
type xrdp_fastpath (line 659) | struct xrdp_fastpath
type xrdp_sec (line 660) | struct xrdp_sec
type trans (line 660) | struct trans
type xrdp_fastpath (line 662) | struct xrdp_fastpath
type xrdp_fastpath (line 664) | struct xrdp_fastpath
type stream (line 664) | struct stream
type xrdp_fastpath (line 666) | struct xrdp_fastpath
type stream (line 666) | struct stream
type xrdp_fastpath (line 668) | struct xrdp_fastpath
type stream (line 668) | struct stream
type xrdp_fastpath (line 670) | struct xrdp_fastpath
type stream (line 670) | struct stream
type xrdp_rdp (line 674) | struct xrdp_rdp
type xrdp_rdp (line 676) | struct xrdp_rdp
type stream (line 676) | struct stream
FILE: libxrdp/libxrdpinc.h
type list (line 26) | struct list
type monitor_info (line 27) | struct monitor_info
type xrdp_brush (line 31) | struct xrdp_brush
type xrdp_pen (line 39) | struct xrdp_pen
type xrdp_font_char (line 47) | struct xrdp_font_char
type xrdp_rect (line 58) | struct xrdp_rect
type xrdp_rdp (line 66) | struct xrdp_rdp
type xrdp_orders (line 67) | struct xrdp_orders
type xrdp_process (line 68) | struct xrdp_process
type xrdp_session (line 70) | struct xrdp_session
type xrdp_drdynvc_procs (line 89) | struct xrdp_drdynvc_procs
type display_size_description (line 100) | struct display_size_description
type xrdp_session (line 110) | struct xrdp_session
type xrdp_process (line 111) | struct xrdp_process
type trans (line 112) | struct trans
type xrdp_session (line 114) | struct xrdp_session
type xrdp_session (line 126) | struct xrdp_session
type xrdp_session (line 128) | struct xrdp_session
type stream (line 131) | struct stream
type trans (line 132) | struct trans
type xrdp_session (line 134) | struct xrdp_session
type stream (line 134) | struct stream
type xrdp_session (line 136) | struct xrdp_session
type xrdp_session (line 138) | struct xrdp_session
type xrdp_session (line 140) | struct xrdp_session
type xrdp_session (line 143) | struct xrdp_session
type xrdp_session (line 145) | struct xrdp_session
type xrdp_session (line 147) | struct xrdp_session
type xrdp_session (line 151) | struct xrdp_session
type xrdp_session (line 153) | struct xrdp_session
type xrdp_session (line 155) | struct xrdp_session
type xrdp_session (line 157) | struct xrdp_session
type xrdp_session (line 159) | struct xrdp_session
type xrdp_rect (line 160) | struct xrdp_rect
type xrdp_session (line 162) | struct xrdp_session
type xrdp_rect (line 164) | struct xrdp_rect
type xrdp_session (line 166) | struct xrdp_session
type xrdp_brush (line 168) | struct xrdp_brush
type xrdp_rect (line 169) | struct xrdp_rect
type xrdp_session (line 171) | struct xrdp_session
type xrdp_rect (line 173) | struct xrdp_rect
type xrdp_session (line 175) | struct xrdp_session
type xrdp_pen (line 178) | struct xrdp_pen
type xrdp_rect (line 179) | struct xrdp_rect
type xrdp_session (line 181) | struct xrdp_session
type xrdp_rect (line 184) | struct xrdp_rect
type xrdp_session (line 186) | struct xrdp_session
type xrdp_rect (line 193) | struct xrdp_rect
type xrdp_session (line 196) | struct xrdp_session
type xrdp_rect (line 204) | struct xrdp_rect
type xrdp_session (line 206) | struct xrdp_session
type xrdp_session (line 209) | struct xrdp_session
type xrdp_session (line 213) | struct xrdp_session
type xrdp_session (line 217) | struct xrdp_session
type xrdp_font_char (line 218) | struct xrdp_font_char
type xrdp_session (line 221) | struct xrdp_session
type xrdp_session (line 223) | struct xrdp_session
type xrdp_session (line 227) | struct xrdp_session
type xrdp_session (line 231) | struct xrdp_session
type xrdp_session (line 243) | struct xrdp_session
type xrdp_session (line 245) | struct xrdp_session
type xrdp_session (line 257) | struct xrdp_session
type xrdp_session (line 259) | struct xrdp_session
type xrdp_session (line 263) | struct xrdp_session
type xrdp_session (line 266) | struct xrdp_session
type xrdp_session (line 268) | struct xrdp_session
type xrdp_drdynvc_procs (line 269) | struct xrdp_drdynvc_procs
type xrdp_session (line 272) | struct xrdp_session
type xrdp_session (line 274) | struct xrdp_session
type xrdp_session (line 278) | struct xrdp_session
type xrdp_session (line 281) | struct xrdp_session
type xrdp_session (line 285) | struct xrdp_session
type list (line 287) | struct list
type xrdp_session (line 289) | struct xrdp_session
type xrdp_session (line 291) | struct xrdp_session
type rail_window_state_order (line 292) | struct rail_window_state_order
type xrdp_session (line 295) | struct xrdp_session
type xrdp_session (line 297) | struct xrdp_session
type rail_icon_info (line 299) | struct rail_icon_info
type xrdp_session (line 301) | struct xrdp_session
type xrdp_session (line 305) | struct xrdp_session
type rail_notify_state_order (line 307) | struct rail_notify_state_order
type xrdp_session (line 310) | struct xrdp_session
type xrdp_session (line 313) | struct xrdp_session
type rail_monitored_desktop_order (line 314) | struct rail_monitored_desktop_order
type xrdp_session (line 317) | struct xrdp_session
type xrdp_session (line 324) | struct xrdp_session
type xrdp_session (line 331) | struct xrdp_session
type xrdp_session (line 334) | struct xrdp_session
type stream (line 338) | struct stream
type stream (line 339) | struct stream
type stream (line 355) | struct stream
type display_size_description (line 355) | struct display_size_description
type stream (line 370) | struct stream
type display_size_description (line 371) | struct display_size_description
type monitor_info (line 387) | struct monitor_info
type display_size_description (line 388) | struct display_size_description
FILE: libxrdp/xrdp_bitmap32_compress.c
function fsplit3 (line 40) | static int
function fsplit4 (line 120) | static int
function fdelta (line 217) | static int
function fout (line 249) | static int
function fpack (line 314) | static int
function foutraw3 (line 381) | static int
function foutraw4 (line 395) | static int
function xrdp_bitmap32_compress (line 411) | int
FILE: libxrdp/xrdp_bitmap_compress.c
function xrdp_bitmap_compress (line 651) | int
FILE: libxrdp/xrdp_caps.c
function xrdp_caps_send_monitorlayout (line 45) | static int
function xrdp_caps_process_general (line 88) | static int
function xrdp_caps_process_bitmap (line 125) | static int
function xrdp_caps_process_order (line 166) | static int
function xrdp_caps_process_bmpcache (line 261) | static int
function xrdp_caps_process_bmpcache2 (line 304) | static int
function xrdp_caps_process_cache_v3_codec_id (line 348) | static int
function xrdp_caps_process_pointer (line 369) | static int
function xrdp_caps_process_input (line 411) | static int
function xrdp_caps_process_brushcache (line 451) | static int
function xrdp_caps_process_glyphcache (line 468) | static int
function xrdp_caps_process_offscreen_bmpcache (line 495) | static int
function xrdp_caps_process_rail (line 521) | static int
function xrdp_caps_process_window (line 550) | static int
function xrdp_caps_process_codecs (line 575) | static int
function xrdp_caps_process_multifragmentupdate (line 685) | static int
function xrdp_caps_process_largepointer (line 700) | static int
function xrdp_caps_process_frame_ack (line 712) | static int
function xrdp_caps_process_surface_cmds (line 729) | static int
function xrdp_caps_process_confirm_active (line 747) | int
function calculate_multifragmentupdate_len (line 1029) | static
function xrdp_caps_send_demand_active (line 1049) | int
FILE: libxrdp/xrdp_channel.c
type mcs_channel_item (line 42) | struct mcs_channel_item
type xrdp_channel (line 43) | struct xrdp_channel
type mcs_channel_item (line 45) | struct mcs_channel_item
type mcs_channel_item (line 53) | struct mcs_channel_item
type xrdp_channel (line 59) | struct xrdp_channel
type xrdp_sec (line 60) | struct xrdp_sec
type xrdp_mcs (line 60) | struct xrdp_mcs
type xrdp_channel (line 62) | struct xrdp_channel
type xrdp_channel (line 64) | struct xrdp_channel
type xrdp_channel (line 64) | struct xrdp_channel
function xrdp_channel_delete (line 73) | void
function xrdp_channel_init (line 87) | int
function xrdp_channel_send (line 103) | int
function xrdp_channel_call_callback (line 163) | static int
function drdynvc_insert_uint_124 (line 209) | static int
function drdynvc_get_chan_id (line 245) | static int
function drdynvc_process_capability_response (line 284) | static int
function drdynvc_process_open_channel_response (line 318) | static int
function drdynvc_process_close_channel_response (line 377) | static int
function drdynvc_process_data_first (line 424) | static int
function drdynvc_process_data (line 495) | static int
function xrdp_channel_process_drdynvc (line 537) | static int
function xrdp_channel_process (line 659) | int
function xrdp_channel_drdynvc_send_capability_request (line 704) | static int
function xrdp_channel_drdynvc_start (line 752) | int
function xrdp_channel_drdynvc_open (line 818) | int
function xrdp_channel_drdynvc_close (line 894) | int
function xrdp_channel_drdynvc_data_first (line 961) | int
function xrdp_channel_drdynvc_data (line 1035) | int
FILE: libxrdp/xrdp_fastpath.c
type xrdp_fastpath (line 28) | struct xrdp_fastpath
type xrdp_sec (line 29) | struct xrdp_sec
type trans (line 29) | struct trans
type xrdp_fastpath (line 31) | struct xrdp_fastpath
type xrdp_fastpath (line 33) | struct xrdp_fastpath
type xrdp_fastpath (line 33) | struct xrdp_fastpath
function xrdp_fastpath_delete (line 42) | void
function xrdp_fastpath_recv (line 53) | int
function xrdp_fastpath_init (line 100) | int
function xrdp_fastpath_session_callback (line 115) | static int
function xrdp_fastpath_send (line 140) | int
function get_slowpath_keyboard_event_flags (line 162) | static int
function xrdp_fastpath_process_EVENT_SCANCODE (line 188) | static int
function xrdp_fastpath_process_EVENT_MOUSE (line 214) | static int
function xrdp_fastpath_process_EVENT_MOUSEX (line 247) | static int
function xrdp_fastpath_process_EVENT_SYNC (line 282) | static int
function xrdp_fastpath_process_EVENT_UNICODE (line 306) | static int
function xrdp_fastpath_process_input_event (line 332) | int
FILE: libxrdp/xrdp_iso.c
function protocol_mask_to_str (line 49) | static int
type xrdp_iso (line 67) | struct xrdp_iso
type xrdp_mcs (line 68) | struct xrdp_mcs
type trans (line 68) | struct trans
type xrdp_iso (line 70) | struct xrdp_iso
type xrdp_iso (line 72) | struct xrdp_iso
type xrdp_iso (line 72) | struct xrdp_iso
type xrdp_client_info (line 77) | struct xrdp_client_info
function xrdp_iso_delete (line 90) | void
function xrdp_iso_negotiate_security (line 103) | static int
function xrdp_iso_process_rdp_neg_req (line 223) | static int
function xrdp_iso_recv_msg (line 291) | static int
function xrdp_iso_recv (line 376) | int
function xrdp_iso_send_cc (line 405) | static int
function xrdp_iso_incoming (line 509) | int
function xrdp_iso_init (line 634) | int
function xrdp_iso_send (line 647) | int
FILE: libxrdp/xrdp_jpeg_compress.c
function xrdp_jpeg_compress (line 38) | int
function xrdp_codec_jpeg_compress (line 121) | int
function xrdp_jpeg_deinit (line 211) | int
type mydata_comp (line 236) | struct mydata_comp
function my_init_destination (line 246) | static void
function my_empty_output_buffer (line 260) | static int
function my_term_destination (line 277) | static void
function jp_do_compress (line 289) | static int
function jpeg_compress (line 356) | static int
function xrdp_jpeg_compress (line 414) | int
function xrdp_codec_jpeg_compress (line 426) | int
function xrdp_jpeg_deinit (line 442) | int
function xrdp_jpeg_compress (line 451) | int
function xrdp_codec_jpeg_compress (line 461) | int
function xrdp_jpeg_deinit (line 477) | int
FILE: libxrdp/xrdp_mcs.c
type xrdp_mcs (line 32) | struct xrdp_mcs
type stream (line 33) | struct stream
type xrdp_mcs (line 36) | struct xrdp_mcs
type xrdp_sec (line 37) | struct xrdp_sec
type trans (line 37) | struct trans
type stream (line 38) | struct stream
type stream (line 39) | struct stream
type xrdp_mcs (line 41) | struct xrdp_mcs
type xrdp_mcs (line 43) | struct xrdp_mcs
type xrdp_mcs (line 43) | struct xrdp_mcs
function xrdp_mcs_delete (line 56) | void
function xrdp_mcs_send_cjcf (line 90) | static int
function get_domain_mcs_pdu_header (line 135) | static int
function xrdp_mcs_recv (line 168) | int
function xrdp_mcs_ber_parse_header (line 261) | static int
function xrdp_mcs_parse_domain_params (line 329) | static int
function xrdp_mcs_recv_connect_initial (line 361) | static int
function xrdp_mcs_recv_edrq (line 517) | static int
function xrdp_mcs_recv_aurq (line 599) | static int
function xrdp_mcs_send_aucf (line 669) | static int
function xrdp_mcs_ber_out_header (line 708) | static int
function xrdp_mcs_ber_out_int8 (line 738) | static int
function xrdp_mcs_ber_out_int16 (line 749) | static int
function xrdp_mcs_ber_out_int24 (line 761) | static int
function xrdp_mcs_out_domain_params (line 773) | static int
function out_server_core_data (line 801) | static void
function xrdp_mcs_out_gcc_data (line 835) | static int
function xrdp_mcs_send_connect_response (line 1058) | static int
function handle_channel_join_requests (line 1126) | static int
function xrdp_mcs_incoming (line 1201) | int
function xrdp_mcs_init (line 1262) | int
function xrdp_mcs_call_callback (line 1274) | static int
function xrdp_mcs_send (line 1310) | int
function close_rdp_socket (line 1377) | static void
function xrdp_mcs_disconnect (line 1396) | int
FILE: libxrdp/xrdp_mppc_enc.c
type xrdp_mppc_enc (line 426) | struct xrdp_mppc_enc
type xrdp_mppc_enc (line 429) | struct xrdp_mppc_enc
type xrdp_mppc_enc (line 431) | struct xrdp_mppc_enc
type xrdp_mppc_enc (line 431) | struct xrdp_mppc_enc
function mppc_enc_free (line 493) | void
function compress_rdp_4 (line 516) | static int
function compress_rdp_5 (line 533) | static int
function compress_rdp (line 1004) | int
FILE: libxrdp/xrdp_orders.c
type xrdp_orders (line 39) | struct xrdp_orders
type xrdp_session (line 40) | struct xrdp_session
type xrdp_rdp (line 40) | struct xrdp_rdp
type xrdp_orders (line 42) | struct xrdp_orders
type xrdp_orders (line 44) | struct xrdp_orders
type xrdp_orders (line 44) | struct xrdp_orders
function xrdp_orders_delete (line 63) | void
function xrdp_orders_reset (line 81) | int
function xrdp_orders_init (line 101) | int
function xrdp_orders_send (line 143) | int
function xrdp_orders_force_send (line 186) | int
function xrdp_orders_check (line 225) | int
function xrdp_orders_last_bounds (line 287) | static int
function xrdp_orders_send_delta (line 309) | static int
function xrdp_orders_out_bounds (line 327) | static int
function xrdp_order_pack_small_or_tiny (line 445) | static int
function xrdp_orders_rect (line 502) | int
function xrdp_orders_screen_blt (line 672) | int
function xrdp_orders_pat_blt (line 862) | int
function xrdp_orders_dest_blt (line 1081) | int
function xrdp_orders_line (line 1235) | int
function xrdp_orders_mem_blt (line 1453) | int
function xrdp_orders_composite_blt (line 1659) | int
function xrdp_orders_text (line 1988) | int
function xrdp_orders_send_palette (line 2185) | int
function xrdp_orders_send_raw_bitmap (line 2231) | int
function xrdp_orders_send_bitmap (line 2355) | int
function xrdp_orders_cache_glyph (line 2468) | static int
function write_2byte_signed (line 2512) | static int write_2byte_signed(struct stream *s, int value)
function write_2byte_unsigned (line 2558) | static int write_2byte_unsigned(struct stream *s, unsigned int value)
function xrdp_orders_cache_glyph_v2 (line 2587) | static int
function xrdp_orders_send_font (line 2641) | int
function xrdp_orders_send_raw_bitmap2 (line 2657) | int
function xrdp_orders_send_bitmap2 (line 2783) | int
function xrdp_orders_send_as_jpeg (line 2875) | static int
function xrdp_orders_send_as_rfx (line 2901) | static int
function xrdp_orders_out_v3 (line 2929) | static int
function xrdp_orders_send_bitmap3 (line 2972) | int
function xrdp_orders_send_brush (line 3080) | int
function xrdp_orders_send_create_os_surface (line 3111) | int
function xrdp_orders_send_switch_os_surface (line 3170) | int
FILE: libxrdp/xrdp_orders_rail.c
function xrdp_orders_send_window_delete (line 36) | int
function xrdp_orders_send_window_cached_icon (line 80) | int
function xrdp_orders_send_ts_icon (line 130) | static int
function xrdp_orders_send_window_icon (line 185) | int
function xrdp_orders_send_as_unicode (line 245) | static int
function xrdp_orders_get_unicode_bytes (line 257) | static int
function xrdp_orders_send_window_new_update (line 269) | int
function xrdp_orders_send_notify_delete (line 610) | int
function xrdp_orders_send_notify_new_update (line 655) | int
function xrdp_orders_send_monitored_desktop (line 821) | int
FILE: libxrdp/xrdp_orders_rail.h
type xrdp_orders (line 25) | struct xrdp_orders
type xrdp_orders (line 27) | struct xrdp_orders
type xrdp_orders (line 31) | struct xrdp_orders
type rail_icon_info (line 33) | struct rail_icon_info
type xrdp_orders (line 36) | struct xrdp_orders
type rail_window_state_order (line 37) | struct rail_window_state_order
type xrdp_orders (line 40) | struct xrdp_orders
type xrdp_orders (line 43) | struct xrdp_orders
type rail_notify_state_order (line 45) | struct rail_notify_state_order
type xrdp_orders (line 48) | struct xrdp_orders
type rail_monitored_desktop_order (line 49) | struct rail_monitored_desktop_order
FILE: libxrdp/xrdp_rdp.c
function xrdp_rdp_read_config (line 41) | static int
function cpuid (line 314) | static void
function tui32 (line 340) | static tui32
type xrdp_rdp (line 367) | struct xrdp_rdp
type xrdp_session (line 368) | struct xrdp_session
type trans (line 368) | struct trans
type xrdp_rdp (line 370) | struct xrdp_rdp
type xrdp_rdp (line 370) | struct xrdp_rdp
type xrdp_rdp (line 373) | struct xrdp_rdp
type xrdp_rdp (line 373) | struct xrdp_rdp
function xrdp_rdp_delete (line 405) | void
function xrdp_rdp_init (line 424) | int
function xrdp_rdp_init_data (line 439) | int
function xrdp_rdp_recv (line 461) | int
function xrdp_rdp_send (line 566) | int
function xrdp_rdp_send_data_from_channel (line 597) | int
function xrdp_rdp_send_data (line 698) | int
function xrdp_rdp_get_fastpath_bytes (line 708) | int
function xrdp_rdp_init_fastpath (line 719) | int
function xrdp_rdp_send_fastpath (line 742) | int
function xrdp_rdp_send_data_update_sync (line 876) | int
function xrdp_rdp_incoming (line 938) | int
function xrdp_rdp_process_data_pointer (line 985) | static int
function xrdp_rdp_process_data_input (line 997) | static int
function xrdp_rdp_send_synchronise (line 1085) | static int
function xrdp_rdp_send_control (line 1119) | static int
function xrdp_rdp_process_data_control (line 1155) | static int
function xrdp_rdp_process_data_sync (line 1189) | static int
function xrdp_rdp_process_screen_update (line 1198) | static int
function xrdp_rdp_send_fontmap (line 1250) | static int
function xrdp_rdp_process_data_font (line 1289) | static int
function xrdp_rdp_send_disconnect_query_response (line 1346) | static int
function xrdp_rdp_send_set_error (line 1378) | int
function xrdp_rdp_process_frame_ack (line 1413) | static int
function xrdp_rdp_suppress_output (line 1440) | void
function xrdp_rdp_process_suppress (line 1466) | static int
function xrdp_rdp_process_data (line 1520) | int
function xrdp_rdp_disconnect (line 1600) | int
function xrdp_rdp_send_deactivate (line 1607) | int
function xrdp_rdp_send_session_info (line 1651) | int
FILE: libxrdp/xrdp_sec.c
function hex_str_to_bin (line 124) | static void
type xrdp_sec (line 159) | struct xrdp_sec
type xrdp_rdp (line 160) | struct xrdp_rdp
type trans (line 160) | struct trans
type xrdp_sec (line 162) | struct xrdp_sec
type xrdp_sec (line 164) | struct xrdp_sec
type xrdp_sec (line 164) | struct xrdp_sec
function xrdp_sec_delete (line 178) | void
function xrdp_sec_init (line 203) | int
function xrdp_sec_make_40bit (line 237) | static void
function xrdp_sec_update (line 248) | static int
function xrdp_sec_fips_decrypt (line 284) | static void
function xrdp_sec_decrypt (line 293) | static void
function xrdp_sec_fips_encrypt (line 310) | static void
function xrdp_sec_encrypt (line 319) | static void
function ts_info_utf16_in (line 353) | static int
function xrdp_sec_process_logon_info (line 391) | static int
function xrdp_sec_send_lic_response (line 740) | static int
function xrdp_sec_rsa_op (line 792) | static void
function xrdp_sec_hash_48 (line 802) | static void
function xrdp_sec_hash_16 (line 836) | static void
function fips_expand_key_bits (line 851) | static void
function xrdp_sec_fips_establish_keys (line 895) | static void
function xrdp_sec_establish_keys (line 940) | static void
function xrdp_sec_recv_fastpath (line 981) | int
function xrdp_sec_recv (line 1067) | int
function buf_out_uint32 (line 1220) | static void
function xrdp_sec_fips_sign (line 1231) | static void
function xrdp_sec_sign (line 1248) | static void
function xrdp_sec_send (line 1279) | int
function xrdp_sec_get_fastpath_bytes (line 1337) | int
function xrdp_sec_init_fastpath (line 1353) | int
function xrdp_sec_send_fastpath (line 1381) | int
function xrdp_sec_process_mcs_data_CS_CORE (line 1471) | static int
function xrdp_sec_process_mcs_data_CS_SECURITY (line 1759) | static int
function xrdp_sec_process_mcs_data_channels (line 1883) | static int
function xrdp_sec_process_mcs_data_monitors (line 1954) | int
function xrdp_sec_process_mcs_data_monitors_ex (line 2017) | static int
function xrdp_sec_process_mcs_data (line 2057) | int
function xrdp_sec_init_rdp_security (line 2179) | static int
function xrdp_sec_incoming (line 2234) | int
function xrdp_sec_disconnect (line 2378) | int
FILE: libxrdp/xrdp_surface.c
type xrdp_surface (line 28) | struct xrdp_surface
type xrdp_session (line 29) | struct xrdp_session
type xrdp_fastpath (line 29) | struct xrdp_fastpath
type xrdp_surface (line 31) | struct xrdp_surface
type xrdp_surface (line 33) | struct xrdp_surface
type xrdp_surface (line 33) | struct xrdp_surface
function xrdp_surface_delete (line 42) | void
function xrdp_surface_reset (line 63) | int
function xrdp_surface_init (line 70) | int
function xrdp_surface_send_surface_bits (line 92) | int
function xrdp_surface_send_frame_marker (line 153) | int
FILE: mc/mc.c
function lib_mod_start (line 30) | static int
function lib_mod_connect (line 43) | static int
function lib_mod_event (line 53) | static int
function lib_mod_signal (line 64) | static int
function lib_mod_end (line 74) | static int
function lib_mod_set_param (line 82) | static int
function tintptr (line 89) | tintptr EXPORT_CC
function mod_exit (line 108) | int EXPORT_CC
FILE: mc/mc.h
type source_info (line 32) | struct source_info
type xrdp_client_info (line 33) | struct xrdp_client_info
type monitor_info (line 36) | struct monitor_info
type mod (line 38) | struct mod
FILE: neutrinordp/xrdp-color.c
function convert_color (line 255) | int
FILE: neutrinordp/xrdp-neutrinordp.c
type mod_context (line 53) | struct mod_context
type modContext (line 58) | typedef struct mod_context modContext;
function verifyColorMap (line 61) | static void
function get_queued_module_output_data (line 78) | static int
function lxrdp_start (line 86) | static int
function set_keyboard_overrides (line 108) | static void
function lxrdp_connect (line 184) | static int
function lxrdp_event (line 320) | static int
function lxrdp_signal (line 552) | static int
function lxrdp_end (line 561) | static int
function lxrdp_set_param (line 598) | static int
function lxrdp_session_change (line 783) | static int
function lxrdp_get_wait_objs (line 791) | static int
function lxrdp_check_wait_objs (line 826) | static int
function lxrdp_frame_ack (line 864) | static int
function lxrdp_suppress_output (line 871) | static int
function lxrdp_server_version_message (line 882) | static int
function lxrdp_server_monitor_resize (line 889) | static int
function lxrdp_server_monitor_full_invalidate (line 900) | static int
function lfreerdp_begin_paint (line 907) | static void
function lfreerdp_end_paint (line 918) | static void
function lfreerdp_set_bounds (line 929) | static void
function lfreerdp_bitmap_update (line 956) | static void
function lfreerdp_dst_blt (line 1029) | static void
function lfreerdp_pat_blt (line 1043) | static void
function lfreerdp_scr_blt (line 1111) | static void
function lfreerdp_opaque_rect (line 1126) | static void
function lfreerdp_mem_blt (line 1150) | static void
function lfreerdp_glyph_index (line 1194) | static void
function lfreerdp_line_to (line 1255) | static void
function lfreerdp_cache_bitmap (line 1282) | static void
function lfreerdp_upsidedown (line 1290) | static void
function lfreerdp_cache_bitmapV2 (line 1317) | static void
function lfreerdp_cache_glyph (line 1400) | static void
function lfreerdp_cache_brush (line 1428) | static void
function lfreerdp_pointer_position (line 1492) | static void
function lfreerdp_pointer_system (line 1500) | static void
function lfreerdp_pointer_color (line 1508) | static void
function lfreerdp_get_pixel (line 1516) | static int
function lfreerdp_set_pixel (line 1549) | static int
function lfreerdp_convert_color_image (line 1595) | static int
function lfreerdp_pointer_new (line 1620) | static void
function lfreerdp_pointer_cached (line 1707) | static void
function lfreerdp_polygon_cb (line 1725) | static void
function lfreerdp_polygon_sc (line 1732) | static void
function lfreerdp_synchronize (line 1788) | static void
function boolean (line 1800) | static boolean
function lrail_WindowCreate (line 2058) | static void
function lrail_WindowUpdate (line 2139) | static void
function lrail_WindowDelete (line 2148) | static void
function lrail_WindowIcon (line 2159) | static void
function lrail_WindowCachedIcon (line 2185) | static void
function lrail_NotifyIconCreate (line 2200) | static void
function lrail_NotifyIconUpdate (line 2257) | static void
function lrail_NotifyIconDelete (line 2266) | static void
function lrail_MonitoredDesktop (line 2278) | static void
function lrail_NonMonitoredDesktop (line 2310) | static void
function boolean (line 2323) | static boolean
function lfreerdp_context_new (line 2347) | static void
function lfreerdp_context_free (line 2354) | static void
function lfreerdp_receive_channel_data (line 2361) | static int
function boolean (line 2402) | static boolean
function boolean (line 2411) | static boolean
function lfreerdp_session_info (line 2420) | static int
function tintptr (line 2442) | tintptr EXPORT_CC
function mod_exit (line 2496) | int EXPORT_CC
FILE: neutrinordp/xrdp-neutrinordp.h
type rail_window_state_order (line 28) | struct rail_window_state_order
type rail_notify_state_order (line 29) | struct rail_notify_state_order
type rail_monitored_desktop_order (line 30) | struct rail_monitored_desktop_order
type rail_icon_info (line 31) | struct rail_icon_info
type bitmap_item (line 33) | struct bitmap_item
type brush_item (line 40) | struct brush_item
type pointer_item (line 49) | struct pointer_item
type source_info (line 60) | struct source_info
type kbd_overrides (line 62) | struct kbd_overrides
type mod (line 71) | struct mod
FILE: sesman/chansrv/audin.c
type fifo (line 50) | struct fifo
type xr_wave_format_ex (line 53) | struct xr_wave_format_ex
type xr_wave_format_ex (line 66) | struct xr_wave_format_ex
type chansrv_drdynvc_procs (line 78) | struct chansrv_drdynvc_procs
type stream (line 80) | struct stream
type xr_wave_format_ex (line 82) | struct xr_wave_format_ex
type xr_wave_format_ex (line 88) | struct xr_wave_format_ex
function cleanup_client_formats (line 113) | static int
function audin_send_version (line 135) | static int
function audin_send_formats (line 155) | static int
function audin_send_open (line 199) | static int
function audin_process_version (line 235) | static int
function audin_process_formats (line 252) | static int
function audin_process_open_reply (line 312) | static int
function audin_process_incoming_data (line 328) | static int
function audin_process_data (line 336) | static int
function audin_process_format_change (line 356) | static int
function audin_process_msg (line 372) | static int
function audin_open_response (line 407) | static int
function audin_close_response (line 419) | static int
function audin_data_fragment (line 431) | static int
function audin_data_first (line 456) | static int
function audin_data (line 472) | static int
function audin_init (line 490) | int
function audin_deinit (line 505) | int
function audin_start (line 513) | int
function audin_stop (line 536) | int
FILE: sesman/chansrv/chansrv.c
type trans (line 55) | struct trans
type trans (line 56) | struct trans
type trans (line 57) | struct trans
type list (line 58) | struct list
type chan_item (line 59) | struct chan_item
type config_chansrv (line 70) | struct config_chansrv
type chansrv_drdynvc (line 95) | struct chansrv_drdynvc
type chansrv_drdynvc (line 108) | struct chansrv_drdynvc
type xrdp_api_data (line 111) | struct xrdp_api_data
type xrdp_chan_session_state (line 121) | struct xrdp_chan_session_state
type timeout_obj (line 123) | struct timeout_obj
type timeout_obj (line 131) | struct timeout_obj
type timeout_obj (line 132) | struct timeout_obj
function add_timeout (line 135) | int
function get_timeout (line 161) | static int
function check_timeout (line 207) | static int
function g_is_term (line 261) | int
function send_channel_data (line 272) | int
function send_rail_drawing_orders (line 326) | int
function xrdpapi_send_session_state_event_single (line 357) | static int
function xrdpapi_send_session_state_event_all (line 374) | static void
function process_message_channel_setup (line 400) | static int
function process_message_channel_data (line 492) | static int
function process_message_drdynvc_open_response (line 575) | static int
function process_message_drdynvc_close_response (line 620) | static int
function process_message_drdynvc_data_first (line 656) | static int
function process_message_drdynvc_data (line 696) | static int
function chansrv_drdynvc_open (line 729) | int
function chansrv_advertise_unicode_input (line 782) | static int
function chansrv_drdynvc_close (line 801) | int
function chansrv_drdynvc_data_first (line 824) | int
function chansrv_drdynvc_data (line 852) | int
function chansrv_drdynvc_send_data (line 877) | int
function process_message_unicode_data (line 907) | static int
function process_message_unicode_setup (line 936) | static int
function process_message_unicode_shutdown (line 954) | static int
function process_message (line 963) | static int
function my_trans_data_in (line 1051) | static int
type trans (line 1095) | struct trans
function my_api_open_response (line 1102) | static int
function my_api_close_response (line 1130) | static int
function my_api_data_first (line 1138) | static int
function my_api_data (line 1165) | static int
function handle_xrdpapi_connection_request (line 1195) | static int
function my_api_trans_data_in (line 1291) | static int
function my_trans_conn_in (line 1349) | static int
function my_api_trans_conn_in (line 1392) | static int
function setup_listen (line 1418) | static int
function setup_api_listen (line 1448) | static int
function api_con_trans_list_get_wait_objs_rw (line 1472) | static int
function api_con_trans_list_check_wait_objs (line 1496) | static int
function api_con_trans_list_remove_all (line 1539) | static int
function THREAD_RV (line 1562) | static THREAD_RV THREAD_CC
function term_signal_handler (line 1697) | static void
function nil_signal_handler (line 1704) | static void
function set_sigchld_event (line 1710) | static void
function child_signal_handler (line 1717) | static void
function segfault_signal_handler (line 1735) | static void
function x_server_fatal_handler (line 1744) | static void
function main_cleanup (line 1754) | int
function get_log_path (line 1782) | static int
function run_exec (line 1856) | static int
function chansrv_create_xrdp_socket_path (line 1894) | static int
function main (line 1932) | int
FILE: sesman/chansrv/chansrv.h
type chan_item (line 27) | struct chan_item
type chansrv_drdynvc_procs (line 61) | struct chansrv_drdynvc_procs
type chansrv_drdynvc_procs (line 71) | struct chansrv_drdynvc_procs
FILE: sesman/chansrv/chansrv_common.c
function read_entire_packet (line 38) | int
FILE: sesman/chansrv/chansrv_common.h
type stream (line 32) | struct stream
type stream (line 32) | struct stream
FILE: sesman/chansrv/chansrv_config.c
type logReturns (line 57) | enum logReturns
type logLevels (line 57) | enum logLevels
function log_to_stdout (line 65) | static enum logReturns
function read_config_globals (line 89) | static int
function read_config_security (line 144) | static int
function read_config_chansrv (line 197) | static int
function read_config_chansrv_logging (line 287) | static int
type config_chansrv (line 321) | struct config_chansrv
type config_chansrv (line 325) | struct config_chansrv
type config_chansrv (line 358) | struct config_chansrv
type config_chansrv (line 362) | struct config_chansrv
type list (line 381) | struct list
type list (line 382) | struct list
function config_dump (line 425) | void
function config_free (line 462) | void
FILE: sesman/chansrv/chansrv_config.h
type config_chansrv (line 24) | struct config_chansrv
type config_chansrv (line 76) | struct config_chansrv
type config_chansrv (line 86) | struct config_chansrv
type config_chansrv (line 95) | struct config_chansrv
FILE: sesman/chansrv/chansrv_fuse.c
function xfuse_init (line 49) | int xfuse_init(void)
function xfuse_deinit (line 53) | int xfuse_deinit(void)
function xfuse_check_wait_objs (line 57) | int xfuse_check_wait_objs(void)
function xfuse_get_wait_objs (line 61) | int xfuse_get_wait_objs(tbus *objs, int *count, int *timeout)
function xfuse_create_share (line 65) | int xfuse_create_share(tui32 device_id, const char *dirname)
function xfuse_delete_share (line 69) | void xfuse_delete_share(tui32 share_id) {}
function xfuse_clear_clip_dir (line 70) | int xfuse_clear_clip_dir(void)
function xfuse_file_contents_range (line 74) | int xfuse_file_contents_range(int stream_id, const char *data, int data_...
function xfuse_file_contents_size (line 78) | int xfuse_file_contents_size(int stream_id, int file_size)
function xfuse_add_clip_dir_item (line 82) | int xfuse_add_clip_dir_item(const char *filename,
function xfuse_devredir_cb_enum_dir_add_entry (line 88) | void xfuse_devredir_cb_enum_dir_add_entry(
function xfuse_devredir_cb_enum_dir_done (line 93) | void xfuse_devredir_cb_enum_dir_done(struct state_dirscan *fip,
function xfuse_devredir_cb_lookup_entry (line 96) | void xfuse_devredir_cb_lookup_entry(struct state_lookup *fip,
function xfuse_devredir_cb_setattr (line 100) | void xfuse_devredir_cb_setattr(struct state_setattr *fip,
function xfuse_devredir_cb_create_file (line 103) | void xfuse_devredir_cb_create_file(struct state_create *fip,
function xfuse_devredir_cb_open_file (line 107) | void xfuse_devredir_cb_open_file(struct state_open *fip,
function xfuse_devredir_cb_read_file (line 111) | void xfuse_devredir_cb_read_file(struct state_read *fip,
function xfuse_devredir_cb_write_file (line 115) | void xfuse_devredir_cb_write_file(
function xfuse_devredir_cb_rmdir_or_file (line 121) | void xfuse_devredir_cb_rmdir_or_file(struct state_remove *fip,
function xfuse_devredir_cb_rename_file (line 124) | void xfuse_devredir_cb_rename_file(struct state_rename *fip,
function xfuse_devredir_cb_file_close (line 127) | void xfuse_devredir_cb_file_close(struct state_close *fip)
function xfuse_devredir_cb_statfs (line 130) | void xfuse_devredir_cb_statfs(struct state_statfs *fip,
function xfuse_path_in_xfuse_fs (line 135) | int xfuse_path_in_xfuse_fs(const char *path)
type config_chansrv (line 195) | struct config_chansrv
type dirbuf1 (line 226) | struct dirbuf1
type state_dirscan (line 235) | struct state_dirscan
type state_lookup (line 246) | struct state_lookup
type state_setattr (line 261) | struct state_setattr
type state_open (line 273) | struct state_open
type state_create (line 284) | struct state_create
type state_read (line 297) | struct state_read
type state_write (line 305) | struct state_write
type state_remove (line 314) | struct state_remove
type state_rename (line 323) | struct state_rename
type state_close (line 335) | struct state_close
type state_statfs (line 345) | struct state_statfs
type xfuse_handle (line 351) | struct xfuse_handle
type XFUSE_HANDLE (line 365) | typedef struct xfuse_handle XFUSE_HANDLE;
type req_list_item (line 368) | struct req_list_item
type list (line 378) | struct list
type xfs_fs (line 379) | struct xfs_fs
type fuse_lowlevel_ops (line 381) | struct fuse_lowlevel_ops
type fuse_session (line 383) | struct fuse_session
type fuse_buf (line 385) | struct fuse_buf
type fuse_args (line 393) | struct fuse_args
type fuse_file_info (line 400) | struct fuse_file_info
type dirbuf1 (line 403) | struct dirbuf1
type fuse_file_info (line 407) | struct fuse_file_info
type fuse_file_info (line 424) | struct fuse_file_info
type fuse_file_info (line 427) | struct fuse_file_info
type fuse_file_info (line 429) | struct
type fuse_file_info (line 433) | struct fuse_file_info
type fuse_file_info (line 436) | struct fuse_file_info
type fuse_file_info (line 440) | struct fuse_file_info
type fuse_file_info (line 444) | struct fuse_file_info
type stat (line 447) | struct stat
type fuse_file_info (line 448) | struct fuse_file_info
type fuse_file_info (line 451) | struct fuse_file_info
type fuse_file_info (line 454) | struct fuse_file_info
type fuse_entry_param (line 460) | struct fuse_entry_param
type file_attr (line 464) | struct file_attr
function load_fuse_config (line 471) | static int
function XFUSE_HANDLE (line 478) | static XFUSE_HANDLE *
function xfuse_handle_delete (line 485) | static void
function xfuse_handle_to_fuse_handle (line 501) | static uint64_t
function XFUSE_HANDLE (line 508) | static XFUSE_HANDLE *
function xfuse_init (line 526) | int
function xfuse_deinit (line 686) | int
function xfuse_check_wait_objs (line 713) | int xfuse_check_wait_objs(void)
function xfuse_get_wait_objs (line 748) | int xfuse_get_wait_objs(tbus *objs, int *count, int *timeout)
function xfuse_create_share (line 767) | int xfuse_create_share(tui32 device_id, const char *dirname)
function xfuse_delete_share (line 803) | void xfuse_delete_share(tui32 device_id)
function xfuse_clear_clip_dir (line 816) | int xfuse_clear_clip_dir(void)
function xfuse_file_contents_range (line 834) | int
function xfuse_add_clip_dir_item (line 882) | int
function xfuse_file_contents_size (line 925) | int xfuse_file_contents_size(int stream_id, int file_size)
function xfuse_log_func (line 947) | static void
function xfuse_init_lib (line 986) | static int xfuse_init_lib(struct fuse_args *args)
function xfuse_init_xrdp_fs (line 1024) | static int xfuse_init_xrdp_fs(void)
function xfuse_deinit_xrdp_fs (line 1064) | static int xfuse_deinit_xrdp_fs(void)
function xfuse_devredir_cb_enum_dir_add_entry (line 1087) | void xfuse_devredir_cb_enum_dir_add_entry(
function xfuse_devredir_cb_enum_dir_done (line 1142) | void xfuse_devredir_cb_enum_dir_done(struct state_dirscan *fip,
function xfuse_devredir_cb_lookup_entry (line 1204) | void xfuse_devredir_cb_lookup_entry(struct state_lookup *fip,
function xfuse_devredir_cb_setattr (line 1330) | void xfuse_devredir_cb_setattr(struct state_setattr *fip,
function xfuse_devredir_cb_create_file (line 1373) | void xfuse_devredir_cb_create_file(struct state_create *fip,
function xfuse_devredir_cb_open_file (line 1475) | void xfuse_devredir_cb_open_file(struct state_open *fip,
function xfuse_devredir_cb_read_file (line 1529) | void xfuse_devredir_cb_read_file(struct state_read *fip,
function xfuse_devredir_cb_write_file (line 1545) | void xfuse_devredir_cb_write_file(
function xfuse_devredir_cb_rmdir_or_file (line 1580) | void xfuse_devredir_cb_rmdir_or_file(struct state_remove *fip,
function xfuse_devredir_cb_rename_file (line 1609) | void xfuse_devredir_cb_rename_file(struct state_rename *fip,
function xfuse_devredir_cb_file_close (line 1631) | void xfuse_devredir_cb_file_close(struct state_close *fip)
function xfuse_devredir_cb_statfs (line 1639) | void xfuse_devredir_cb_statfs(struct state_statfs *fip,
function xfuse_path_in_xfuse_fs (line 1681) | int xfuse_path_in_xfuse_fs(const char *path)
function xfuse_cb_lookup (line 1740) | static void xfuse_cb_lookup(fuse_req_t req, fuse_ino_t parent, const cha...
function xfuse_cb_getattr (line 1833) | static void xfuse_cb_getattr(fuse_req_t req, fuse_ino_t ino,
function xfuse_dirbuf_add1 (line 1861) | static int xfuse_dirbuf_add1(fuse_req_t req, struct dirbuf1 *b,
function xfuse_cb_readdir (line 1901) | static void xfuse_cb_readdir(fuse_req_t req, fuse_ino_t ino, size_t size,
function xfuse_cb_mkdir (line 1947) | static void xfuse_cb_mkdir(fuse_req_t req, fuse_ino_t parent,
function xfuse_cb_unlink (line 1971) | static void xfuse_cb_unlink(fuse_req_t req, fuse_ino_t parent,
function xfuse_cb_rename (line 2041) | static void xfuse_cb_rename(fuse_req_t req,
function xfuse_create_dir_or_file (line 2152) | static void xfuse_create_dir_or_file(fuse_req_t req, fuse_ino_t parent,
function xfuse_cb_open (line 2254) | static void xfuse_cb_open(fuse_req_t req, fuse_ino_t ino,
function xfuse_cb_release (line 2348) | static void xfuse_cb_release(fuse_req_t req, fuse_ino_t ino, struct
function xfuse_cb_read (line 2407) | static void xfuse_cb_read(fuse_req_t req, fuse_ino_t ino, size_t size,
function xfuse_cb_write (line 2481) | static void xfuse_cb_write(fuse_req_t req, fuse_ino_t ino, const char *buf,
function xfuse_cb_create (line 2534) | static void xfuse_cb_create(fuse_req_t req, fuse_ino_t parent,
function xfuse_cb_fsync (line 2548) | static void xfuse_cb_fsync(fuse_req_t req, fuse_ino_t ino, int datasync,
function xfuse_cb_setattr (line 2570) | static void xfuse_cb_setattr(fuse_req_t req, fuse_ino_t ino, struct stat...
function xfuse_cb_opendir (line 2683) | static void xfuse_cb_opendir(fuse_req_t req, fuse_ino_t ino,
function xfuse_cb_releasedir (line 2769) | static void xfuse_cb_releasedir(fuse_req_t req, fuse_ino_t ino,
function xfuse_cb_statfs (line 2780) | static void xfuse_cb_statfs(fuse_req_t req, fuse_ino_t ino)
function xfs_inode_to_fuse_entry_param (line 2852) | static void xfs_inode_to_fuse_entry_param(const XFS_INODE *xinode,
function make_fuse_entry_reply (line 2871) | static void make_fuse_entry_reply(fuse_req_t req, const XFS_INODE *xinode)
function make_fuse_attr_reply (line 2878) | static void make_fuse_attr_reply(fuse_req_t req, const XFS_INODE *xinode)
function update_inode_file_attributes (line 2920) | static void update_inode_file_attributes(const struct file_attr *fattr,
function format_user_info (line 2988) | static unsigned int format_user_info(char *dest, unsigned int len,
FILE: sesman/chansrv/chansrv_fuse.h
type file_attr (line 29) | struct file_attr
type XFUSE_INFO (line 47) | typedef struct xfuse_info XFUSE_INFO;
type state_dirscan (line 65) | struct state_dirscan
type state_lookup (line 66) | struct state_lookup
type state_setattr (line 67) | struct state_setattr
type state_open (line 68) | struct state_open
type state_create (line 69) | struct state_create
type state_read (line 70) | struct state_read
type state_write (line 71) | struct state_write
type state_remove (line 72) | struct state_remove
type state_rename (line 73) | struct state_rename
type state_close (line 74) | struct state_close
type statvfs (line 75) | struct statvfs
type state_statfs (line 76) | struct state_statfs
type state_dirscan (line 81) | struct state_dirscan
type file_attr (line 83) | struct file_attr
type state_dirscan (line 84) | struct state_dirscan
type NTSTATUS (line 85) | enum NTSTATUS
type state_lookup (line 87) | struct state_lookup
type NTSTATUS (line 88) | enum NTSTATUS
type file_attr (line 89) | struct file_attr
type state_setattr (line 91) | struct state_setattr
type NTSTATUS (line 92) | enum NTSTATUS
type state_create (line 94) | struct state_create
type NTSTATUS (line 95) | enum NTSTATUS
type state_open (line 98) | struct state_open
type NTSTATUS (line 99) | enum NTSTATUS
type state_read (line 102) | struct state_read
type NTSTATUS (line 103) | enum NTSTATUS
type state_write (line 106) | struct state_write
type NTSTATUS (line 107) | enum NTSTATUS
type state_remove (line 111) | struct state_remove
type NTSTATUS (line 112) | enum NTSTATUS
type state_rename (line 114) | struct state_rename
type NTSTATUS (line 115) | enum NTSTATUS
type state_close (line 117) | struct state_close
type state_statfs (line 119) | struct state_statfs
type statvfs (line 120) | struct statvfs
type NTSTATUS (line 121) | enum NTSTATUS
FILE: sesman/chansrv/chansrv_xfs.c
type XFS_INODE_ALL (line 54) | typedef struct xfs_inode_all XFS_INODE_ALL;
type XFS_LIST (line 55) | typedef struct xfs_list
type XFS_INODE_ALL (line 65) | typedef struct xfs_inode_all
type xfs_fs (line 97) | struct xfs_fs
type xfs_dir_handle (line 111) | struct xfs_dir_handle
function grow_xfs (line 119) | static int
function add_inode_to_list (line 163) | static void
function remove_inode_from_list (line 216) | static void
function link_inode_into_directory_node (line 242) | static void
function unlink_inode_from_parent (line 250) | static void
type xfs_fs (line 261) | struct xfs_fs
type xfs_fs (line 264) | struct xfs_fs
function xfs_free_inode (line 361) | static void
function xfs_delete_xfs_fs (line 372) | void
function XFS_INODE (line 394) | XFS_INODE *
function xfs_remove_directory_contents (line 479) | void
function xfs_remove_entry (line 497) | void
function XFS_INODE (line 531) | XFS_INODE *
type xfs_fs (line 539) | struct xfs_fs
function XFS_INODE (line 587) | XFS_INODE *
function xfs_is_dir_empty (line 611) | int
function xfs_is_under (line 628) | unsigned int
type xfs_dir_handle (line 660) | struct xfs_dir_handle
type xfs_fs (line 661) | struct xfs_fs
type xfs_dir_handle (line 664) | struct xfs_dir_handle
function XFS_INODE (line 682) | XFS_INODE *
function xfs_closedir (line 750) | void
function xfs_increment_file_open_count (line 757) | void
function xfs_decrement_file_open_count (line 770) | void
function xfs_get_file_open_count (line 793) | unsigned int
function xfs_delete_redirected_entries_with_device_id (line 809) | void
function xfs_check_move_entry (line 844) | int
function xfs_move_entry (line 863) | int
FILE: sesman/chansrv/chansrv_xfs.h
type xfs_fs (line 41) | struct xfs_fs
type xfs_dir_handle (line 42) | struct xfs_dir_handle
type XFS_INODE (line 47) | typedef struct xfs_inode
type xfs_fs (line 72) | struct xfs_fs
type xfs_fs (line 81) | struct xfs_fs
type xfs_fs (line 108) | struct xfs_fs
type xfs_fs (line 122) | struct xfs_fs
type xfs_fs (line 137) | struct xfs_fs
type xfs_fs (line 147) | struct xfs_fs
type xfs_fs (line 159) | struct xfs_fs
type xfs_fs (line 170) | struct xfs_fs
type xfs_fs (line 183) | struct xfs_fs
type xfs_fs (line 203) | struct xfs_fs
type xfs_dir_handle (line 212) | struct xfs_dir_handle
type xfs_fs (line 213) | struct xfs_fs
type xfs_fs (line 232) | struct xfs_fs
type xfs_dir_handle (line 232) | struct xfs_dir_handle
type xfs_fs (line 242) | struct xfs_fs
type xfs_dir_handle (line 242) | struct xfs_dir_handle
type xfs_fs (line 257) | struct xfs_fs
type xfs_fs (line 271) | struct xfs_fs
type xfs_fs (line 277) | struct xfs_fs
type xfs_fs (line 287) | struct xfs_fs
type xfs_fs (line 306) | struct xfs_fs
type xfs_fs (line 321) | struct xfs_fs
FILE: sesman/chansrv/clipboard.c
type config_chansrv (line 195) | struct config_chansrv
type stream (line 219) | struct stream
type clip_s2c (line 228) | struct clip_s2c
type clip_c2s (line 230) | struct clip_c2s
function Time (line 292) | static Time
function clipboard_find_format_id (line 314) | static int
function clipboard_init (line 331) | int
function clipboard_deinit (line 484) | int
function clipboard_send_data_request (line 508) | static int
function clipboard_send_format_ack (line 535) | static int
function clipboard_out_utf8_as_utf16_le (line 563) | static void
function clipboard_in_utf16_le_as_utf8 (line 570) | unsigned int
function clipboard_send_format_announce (line 599) | static int
function clipboard_send_data_response_for_image (line 720) | static int
function clipboard_send_data_response_for_text (line 744) | static int
function clipboard_send_data_response (line 777) | static int
function clipboard_set_selection_owner (line 809) | static int
function clipboard_provide_selection_c2s (line 830) | static int
function clipboard_provide_selection (line 886) | static int
function clipboard_refuse_selection (line 916) | static int
function clipboard_process_format_announce (line 938) | static int
function clipboard_process_format_ack (line 1012) | static int
function clipboard_send_data_response_failed (line 1022) | static int
function clipboard_process_data_request (line 1046) | static int
function clipboard_process_data_response_for_image (line 1125) | static int
function clipboard_process_data_response_for_file (line 1197) | static int
function clipboard_process_data_response_for_text (line 1286) | static int
function clipboard_process_data_response (line 1328) | static int
function clipboard_process_clip_caps (line 1373) | static int
function clipboard_data_in (line 1421) | int
function clipboard_event_selection_owner_notify (line 1544) | static int
function clipboard_get_window_property (line 1577) | static int
function clipboard_event_selection_notify (line 1685) | static int
function clipboard_event_selection_request (line 2076) | static int
function clipboard_event_selection_clear (line 2359) | static int
function clipboard_event_property_notify (line 2378) | static int
function clipboard_xevent (line 2539) | int
FILE: sesman/chansrv/clipboard.h
type stream (line 28) | struct stream
FILE: sesman/chansrv/clipboard_common.h
type clip_s2c (line 30) | struct clip_s2c /* server to client, pasting from linux app to mstsc */
type clip_c2s (line 42) | struct clip_c2s /* client to server, pasting from mstsc to linux app */
type clip_file_desc (line 57) | struct clip_file_desc /* CLIPRDR_FILEDESCRIPTOR */
type stream (line 76) | struct stream
FILE: sesman/chansrv/clipboard_file.c
type clip_s2c (line 49) | struct clip_s2c
type clip_c2s (line 50) | struct clip_c2s
type cb_file_info (line 54) | struct cb_file_info
type list (line 63) | struct list
function tui64 (line 73) | static tui64
type cb_file_info (line 134) | struct cb_file_info
type cb_file_info (line 137) | struct cb_file_info
type cb_file_info (line 165) | struct cb_file_info
type cb_file_info (line 168) | struct cb_file_info
function clipboard_send_filecontents_response_fail (line 191) | static int
function clipboard_get_file (line 215) | static int
function clipboard_get_files (line 292) | static int
function clipboard_send_data_response_for_file (line 331) | int
function clipboard_send_file_size (line 408) | static int
function clipboard_request_file_size (line 458) | int
function clipboard_send_file_data (line 494) | static int
function clipboard_request_file_data (line 572) | int
function clipboard_process_file_request (line 612) | int
function clipboard_process_file_response (line 646) | int
function clipboard_c2s_in_file_info (line 679) | static int
function clipboard_c2s_in_files (line 722) | int
FILE: sesman/chansrv/clipboard_file.h
type stream (line 28) | struct stream
type stream (line 31) | struct stream
type stream (line 51) | struct stream
FILE: sesman/chansrv/devredir.c
type COMPLETION_TYPE (line 82) | enum COMPLETION_TYPE
type client_caps (line 107) | struct client_caps
type client_caps (line 117) | struct client_caps
type stream (line 124) | struct stream
type NTSTATUS (line 129) | enum NTSTATUS
type NTSTATUS (line 131) | enum NTSTATUS
type NTSTATUS (line 132) | enum NTSTATUS
type NTSTATUS (line 134) | enum NTSTATUS
type stream (line 136) | struct stream
type NTSTATUS (line 137) | enum NTSTATUS
type stream (line 139) | struct stream
type NTSTATUS (line 140) | enum NTSTATUS
type stream (line 142) | struct stream
type NTSTATUS (line 143) | enum NTSTATUS
type stream (line 145) | struct stream
type NTSTATUS (line 146) | enum NTSTATUS
type stream (line 152) | struct stream
type stream (line 153) | struct stream
type stream (line 154) | struct stream
type stream (line 155) | struct stream
type stream (line 157) | struct stream
type NTSTATUS (line 160) | enum NTSTATUS
function devredir_init (line 166) | int
function devredir_deinit (line 195) | int
type COMPLETION_TYPE (line 208) | enum COMPLETION_TYPE
function tui32 (line 240) | static tui32
function tui32 (line 266) | static tui32
function devredir_data_in (line 306) | int
function devredir_get_wait_objs (line 457) | int
function devredir_check_wait_objs (line 468) | int
function devredir_send_server_core_cap_req (line 482) | static void
function devredir_send_server_clientID_confirm (line 549) | static void
function devredir_send_server_user_logged_on (line 571) | static void
function devredir_send_server_device_announce_resp (line 590) | static void
function devredir_send_drive_create_request (line 619) | static int
function devredir_send_drive_close_request (line 683) | static int
function devredir_send_drive_dir_request (line 719) | static void
function process_client_general_caps_set (line 778) | static int
function devredir_proc_client_core_cap_resp (line 816) | static int
function devredir_proc_client_devlist_announce_req (line 900) | static int
function devredir_proc_client_devlist_remove_req (line 1016) | static int
function devredir_proc_device_iocompletion (line 1046) | static int
function devredir_proc_query_dir_response (line 1254) | static int
function devredir_get_dir_listing (line 1393) | int
function devredir_lookup_entry (line 1455) | int
function devredir_setattr_for_entry (line 1511) | int
function devredir_statfs (line 1577) | int
function devredir_file_create (line 1619) | int
function devredir_file_open (line 1671) | int
function devredir_file_close (line 1733) | int devredir_file_close(struct state_close *fusep, tui32 device_id,
function devredir_rmdir_or_file (line 1772) | int
function devredir_file_read (line 1818) | void
function devredir_file_write (line 1874) | void
function devredir_file_rename (line 1933) | int devredir_file_rename(struct state_rename *fusep, tui32 device_id,
function devredir_insert_DeviceIoRequest (line 1994) | void
function devredir_cvt_slash (line 2016) | static void
function devredir_string_ends_with (line 2031) | static int
function devredir_proc_cid_rmdir_or_file (line 2040) | static void
function devredir_proc_cid_rmdir_or_file_resp (line 2073) | static void
function devredir_proc_cid_rename_file (line 2101) | static void
function devredir_proc_cid_rename_file_resp (line 2151) | static void
function issue_lookup (line 2179) | static void issue_lookup(IRP *irp, int lookup_type)
function lookup_read_basic_attributes (line 2207) | static void lookup_read_basic_attributes(IRP *irp, struct stream *s_in)
function lookup_read_standard_attributes (line 2238) | static void lookup_read_standard_attributes(IRP *irp, struct stream *s_in)
function lookup_done (line 2255) | static void lookup_done(IRP *irp, enum NTSTATUS IoStatus)
function devredir_proc_cid_lookup (line 2286) | static void
function devredir_proc_cid_statfs (line 2353) | static void
function devredir_proc_cid_statfs_resp (line 2397) | static void
function issue_setattr_basic (line 2479) | static void issue_setattr_basic(IRP *irp)
function issue_setattr_eof (line 2531) | static void issue_setattr_eof(IRP *irp)
function setattr_done (line 2556) | static void setattr_done(IRP *irp, enum NTSTATUS IoStatus)
function devredir_proc_cid_setattr (line 2584) | static void
FILE: sesman/chansrv/devredir.h
type stream (line 30) | struct stream
type stream (line 37) | struct stream
type IRP_MJ (line 41) | enum IRP_MJ
type IRP_MN (line 42) | enum IRP_MN
type state_dirscan (line 47) | struct state_dirscan
type state_lookup (line 48) | struct state_lookup
type state_setattr (line 49) | struct state_setattr
type state_open (line 50) | struct state_open
type state_create (line 51) | struct state_create
type state_read (line 52) | struct state_read
type state_write (line 53) | struct state_write
type state_remove (line 54) | struct state_remove
type state_close (line 55) | struct state_close
type state_statfs (line 56) | struct state_statfs
type state_dirscan (line 60) | struct state_dirscan
type state_lookup (line 63) | struct state_lookup
type state_setattr (line 67) | struct state_setattr
type file_attr (line 69) | struct file_attr
type state_create (line 73) | struct state_create
type state_open (line 76) | struct state_open
type state_close (line 79) | struct state_close
type state_read (line 83) | struct state_read
type state_write (line 87) | struct state_write
type state_rename (line 91) | struct state_rename
type state_remove (line 96) | struct state_remove
type state_statfs (line 100) | struct state_statfs
FILE: sesman/chansrv/input_ibus.c
function xrdp_input_enable (line 36) | static int
function xrdp_input_send_unicode (line 75) | int
function xrdp_input_ibus_engine_enable (line 91) | static void
function xrdp_input_ibus_engine_disable (line 98) | static void
function xrdp_input_ibus_disconnect (line 104) | static void
function gboolean (line 112) | static gboolean
function IBusEngine (line 122) | static IBusEngine *
function THREAD_RV (line 143) | static THREAD_RV THREAD_CC
function xrdp_input_unicode_destroy (line 191) | int
function xrdp_input_unicode_init (line 211) | int
FILE: sesman/chansrv/irp.c
function IRP (line 42) | IRP *devredir_irp_new(void)
function IRP (line 82) | IRP *devredir_irp_with_pathname_new(const char *pathname)
function IRP (line 104) | IRP *devredir_irp_with_pathnamelen_new(unsigned int pathnamelen)
function devredir_irp_delete (line 143) | int devredir_irp_delete(IRP *irp)
function IRP (line 211) | IRP *devredir_irp_find(tui32 completion_id)
function IRP (line 230) | IRP *devredir_irp_find_by_fileid(tui32 FileId)
function IRP (line 253) | IRP *devredir_irp_get_last(void)
function devredir_irp_dump (line 271) | void devredir_irp_dump(void)
FILE: sesman/chansrv/irp.h
type XFUSE_INFO (line 33) | typedef struct xfuse_info XFUSE_INFO;
type irp_lookup_state (line 35) | enum irp_lookup_state
type irp_setattr_state (line 42) | enum irp_setattr_state
type irp_lookup (line 49) | struct irp_lookup
type irp_setattr (line 55) | struct irp_setattr
type irp_write (line 62) | struct irp_write
type irp_create (line 67) | struct irp_create
type irp_rename (line 72) | struct irp_rename
type IRP (line 79) | typedef struct irp IRP;
type irp (line 81) | struct irp
FILE: sesman/chansrv/pcsc/wrapper/winscard-funcs.h
type LONG (line 5) | typedef LONG WINAPI
type LONG (line 8) | typedef LONG WINAPI
type LONG (line 10) | typedef LONG WINAPI
type LONG (line 12) | typedef LONG WINAPI
type LONG (line 15) | typedef LONG WINAPI
type LONG (line 18) | typedef LONG WINAPI
type LONG (line 21) | typedef LONG WINAPI
type LONG (line 24) | typedef LONG WINAPI
type LONG (line 28) | typedef LONG WINAPI
type LONG (line 32) | typedef LONG WINAPI
type LONG (line 35) | typedef LONG WINAPI
type LONG (line 38) | typedef LONG WINAPI
type LONG (line 41) | typedef LONG WINAPI
type LONG (line 44) | typedef LONG WINAPI
type LONG (line 48) | typedef LONG WINAPI
type LONG (line 52) | typedef LONG WINAPI
type LONG (line 54) | typedef LONG WINAPI
type LONG (line 57) | typedef LONG WINAPI
type LONG (line 59) | typedef LONG WINAPI
type LONG (line 61) | typedef LONG WINAPI
type LONG (line 64) | typedef LONG WINAPI
type LONG (line 67) | typedef LONG WINAPI
type LONG (line 69) | typedef LONG WINAPI
type LONG (line 72) | typedef LONG WINAPI
type LONG (line 75) | typedef LONG WINAPI
type LONG (line 78) | typedef LONG WINAPI
type LONG (line 81) | typedef LONG WINAPI
type LONG (line 84) | typedef LONG WINAPI
type LONG (line 90) | typedef LONG WINAPI
type LONG (line 96) | typedef LONG WINAPI
type LONG (line 99) | typedef LONG WINAPI
type LONG (line 102) | typedef LONG WINAPI
type LONG (line 104) | typedef LONG WINAPI
type LONG (line 106) | typedef LONG WINAPI
type LONG (line 108) | typedef LONG WINAPI
type LONG (line 111) | typedef LONG WINAPI
type LONG (line 114) | typedef LONG WINAPI
type LONG (line 118) | typedef LONG WINAPI
type LONG (line 122) | typedef LONG WINAPI
type LONG (line 124) | typedef LONG WINAPI
type LONG (line 128) | typedef LONG WINAPI
type LONG (line 132) | typedef LONG WINAPI
type LONG (line 136) | typedef LONG WINAPI
type LONG (line 138) | typedef LONG WINAPI
type LONG (line 140) | typedef LONG WINAPI
type LONG (line 142) | typedef LONG WINAPI
type LONG (line 144) | typedef LONG WINAPI
type LONG (line 147) | typedef LONG WINAPI
type LONG (line 151) | typedef LONG WINAPI
type LONG (line 155) | typedef LONG WINAPI
type LONG (line 160) | typedef LONG WINAPI
type LONG (line 164) | typedef LONG WINAPI
type LONG (line 167) | typedef LONG WINAPI
FILE: sesman/chansrv/pcsc/wrapper/winscard.c
function writeln (line 78) | static int
function load_funcs (line 103) | static int __fastcall
function BOOL (line 173) | BOOL WINAPI
function LONG (line 210) | LONG WINAPI
function LONG (line 219) | LONG WINAPI
function LONG (line 227) | LONG WINAPI
function LONG (line 235) | LONG WINAPI
function LONG (line 244) | LONG WINAPI
function LONG (line 253) | LONG WINAPI
function LONG (line 262) | LONG WINAPI
function LONG (line 288) | LONG WINAPI
function LONG (line 299) | LONG WINAPI
function LONG (line 310) | LONG WINAPI
function LONG (line 320) | LONG WINAPI
function LONG (line 330) | LONG WINAPI
function LONG (line 339) | LONG WINAPI
function LONG (line 348) | LONG WINAPI
function LONG (line 359) | LONG WINAPI
function LONG (line 370) | LONG WINAPI
function LONG (line 378) | LONG WINAPI
function LONG (line 386) | LONG WINAPI
function LONG (line 394) | LONG WINAPI
function LONG (line 402) | LONG WINAPI
function LONG (line 411) | LONG WINAPI
function LONG (line 420) | LONG WINAPI
function LONG (line 428) | LONG WINAPI
function LONG (line 436) | LONG WINAPI
function LONG (line 445) | LONG WINAPI
function LONG (line 454) | LONG WINAPI
function LONG (line 463) | LONG WINAPI
function LONG (line 472) | LONG WINAPI
function LONG (line 486) | LONG WINAPI
function LONG (line 499) | LONG WINAPI
function LONG (line 509) | LONG WINAPI
function LONG (line 519) | LONG WINAPI
function LONG (line 527) | LONG WINAPI
function LONG (line 535) | LONG WINAPI
function LONG (line 543) | LONG WINAPI
function LONG (line 552) | LONG WINAPI
function LONG (line 561) | LONG WINAPI
function LONG (line 571) | LONG WINAPI
function LONG (line 581) | LONG WINAPI
function LONG (line 589) | LONG WINAPI
function LONG (line 601) | LONG WINAPI
function LONG (line 613) | LONG WINAPI
function LONG (line 624) | LONG WINAPI
function LONG (line 632) | LONG WINAPI
function LONG (line 640) | LONG WINAPI
function LONG (line 648) | LONG WINAPI
function LONG (line 656) | LONG WINAPI
function LONG (line 665) | LONG WINAPI
function LONG (line 676) | LONG WINAPI
function LONG (line 693) | LONG WINAPI
function LONG (line 720) | LONG WINAPI
function LONG (line 744) | LONG WINAPI
function LONG (line 753) | LONG WINAPI
FILE: sesman/chansrv/pcsc/xrdp_pcsc.c
type BYTE (line 24) | typedef unsigned char BYTE;
type BYTE (line 25) | typedef BYTE *LPBYTE;
type LONG (line 27) | typedef int LONG;
type DWORD (line 28) | typedef unsigned int DWORD;
type LONG (line 30) | typedef long LONG;
type DWORD (line 31) | typedef unsigned long DWORD;
type DWORD (line 33) | typedef DWORD *LPDWORD;
type BYTE (line 38) | typedef const BYTE *LPCBYTE;
type LONG (line 40) | typedef LONG SCARDCONTEXT;
type SCARDCONTEXT (line 41) | typedef SCARDCONTEXT *LPSCARDCONTEXT;
type LONG (line 43) | typedef LONG SCARDHANDLE;
type SCARDHANDLE (line 44) | typedef SCARDHANDLE *LPSCARDHANDLE;
type SCARD_READERSTATE (line 48) | typedef struct _SCARD_READERSTATE
type SCARD_IO_REQUEST (line 58) | typedef struct _SCARD_IO_REQUEST
function lhexdump (line 122) | static void
function connect_to_chansrv (line 165) | static int
function send_message (line 231) | static int
function get_message (line 256) | static int
function PCSC_API (line 342) | PCSC_API LONG
function PCSC_API (line 388) | PCSC_API LONG
function PCSC_API (line 426) | PCSC_API LONG
function PCSC_API (line 439) | PCSC_API LONG
function PCSC_API (line 502) | PCSC_API LONG
function PCSC_API (line 517) | PCSC_API LONG
function PCSC_API (line 557) | PCSC_API LONG
function PCSC_API (line 600) | PCSC_API LONG
function PCSC_API (line 639) | PCSC_API LONG
function PCSC_API (line 733) | PCSC_API LONG
function PCSC_API (line 874) | PCSC_API LONG
function PCSC_API (line 950) | PCSC_API LONG
function PCSC_API (line 1077) | PCSC_API LONG
function PCSC_API (line 1091) | PCSC_API LONG
function PCSC_API (line 1203) | PCSC_API LONG
function PCSC_API (line 1216) | PCSC_API LONG
function PCSC_API (line 1254) | PCSC_API LONG
function PCSC_API (line 1268) | PCSC_API LONG
function PCSC_API (line 1282) | PCSC_API char *
FILE: sesman/chansrv/rail.c
type list (line 69) | struct list
type rail_window_data (line 88) | struct rail_window_data
function rail_send_key_esc (line 171) | static int
type rail_window_data (line 189) | struct rail_window_data
type rail_window_data (line 198) | struct rail_window_data
type rail_window_data (line 206) | struct rail_window_data
type rail_window_data (line 217) | struct rail_window_data
function rail_set_window_data (line 223) | static int
type rail_window_data (line 236) | struct rail_window_data
type rail_window_data (line 239) | struct rail_window_data
function is_window_valid_child_of_root (line 253) | static int
function rail_send_init (line 280) | static int
function anotherWMRunning (line 305) | static int
function rail_is_another_wm_running (line 313) | static int
function rail_init (line 338) | int
function rail_deinit (line 348) | int
function rail_startup (line 363) | static int
type stream (line 411) | struct stream
function rail_process_exec (line 437) | static int
function rail_win_popdown (line 509) | static int
function rail_close_window (line 545) | static int
function my_timeout (line 568) | static void
function rail_process_activate (line 580) | static int
function rail_select_input (line 648) | static int
function rail_restore_windows (line 660) | static int
function rail_process_system_param (line 691) | static int
function rail_get_property (line 713) | static int
function rail_win_get_state (line 753) | static int
function rail_win_set_state (line 775) | static int
function rail_win_get_text (line 801) | static int
function rail_minmax_window (line 840) | static int
function rail_restore_window (line 861) | static int
function rail_process_system_command (line 881) | static int
function rail_process_handshake (line 939) | static int
function rail_process_notify_event (line 951) | static int
function rail_process_window_move (line 968) | static int
function rail_process_local_move_size (line 1004) | static int
function rail_process_min_max_info (line 1030) | static int
function rail_process_client_status (line 1038) | static int
function rail_process_sys_menu (line 1050) | static int
function rail_process_lang_bar_info (line 1069) | static int
function rail_process_appid_req (line 1081) | static int
function rail_process_appid_resp (line 1089) | static int
function rail_process_exec_result (line 1098) | static int
function rail_data_in (line 1107) | int
function get_string_crc (line 1229) | static int
function rail_win_send_text (line 1248) | static int
function rail_destroy_window (line 1311) | static int
function rail_show_window (line 1330) | int
function rail_create_window (line 1352) | static int
function rail_configure_request_window (line 1513) | static int
function rail_configure_window (line 1719) | static int
function rail_desktop_resize (line 1803) | static int
function rail_xevent (line 1812) | int
FILE: sesman/chansrv/rail.h
type stream (line 31) | struct stream
FILE: sesman/chansrv/smartcard.c
type SMARTCARD (line 122) | typedef struct smartcard
type stream (line 141) | struct stream
type xrdp_scard_io_request (line 187) | struct xrdp_scard_io_request
type xrdp_scard_io_request (line 188) | struct xrdp_scard_io_request
type stream (line 201) | struct stream
type stream (line 205) | struct stream
type stream (line 210) | struct stream
type stream (line 214) | struct stream
type stream (line 218) | struct stream
type stream (line 222) | struct stream
type stream (line 226) | struct stream
type stream (line 230) | struct stream
type stream (line 234) | struct stream
type stream (line 239) | struct stream
type stream (line 243) | struct stream
type stream (line 248) | struct stream
type stream (line 253) | struct stream
type stream (line 258) | struct stream
type stream (line 263) | struct stream
function scard_device_announce (line 276) | int
function scard_get_wait_objs (line 311) | int
function scard_check_wait_objs (line 320) | int
function scard_init (line 329) | int
function scard_deinit (line 339) | int
function scard_send_establish_context (line 352) | int
function scard_send_release_context (line 379) | int
function scard_send_is_valid_context (line 407) | int
function scard_send_list_readers (line 434) | int
function scard_send_get_status_change (line 467) | int
function scard_send_connect (line 499) | int
function scard_send_reconnect (line 533) | int
function scard_send_begin_transaction (line 563) | int
function scard_send_end_transaction (line 593) | int
function scard_send_status (line 625) | int
function scard_send_disconnect (line 656) | int
function scard_send_transmit (line 686) | int
function scard_send_control (line 719) | int
function scard_send_cancel (line 752) | int
function scard_send_get_attrib (line 779) | int
type stream (line 818) | struct stream
type stream (line 840) | struct stream
function scard_add_new_device (line 870) | static int
function scard_get_free_slot (line 901) | static int
function scard_release_resources (line 922) | static void
function scard_send_EstablishContext (line 940) | static void
function scard_send_ReleaseContext (line 980) | static void
function scard_send_IsContextValid (line 1030) | static void
function align_s (line 1089) | static void
function scard_send_ListReaders (line 1102) | static void
function out_conformant_and_varying_string (line 1259) | static void
function scard_send_GetStatusChange (line 1295) | static void
function scard_send_Connect (line 1462) | static void
function scard_send_Reconnect (line 1584) | static void
function scard_send_BeginTransaction (line 1653) | static void
function scard_send_EndTransaction (line 1717) | static void
function scard_send_Status (line 1782) | static void
function scard_send_Disconnect (line 1867) | static void
function scard_send_Transmit (line 1930) | static int
function scard_send_Control (line 2119) | static int
function scard_send_Cancel (line 2194) | static int
function scard_send_GetAttrib (line 2245) | static int
function scard_handle_EstablishContext_Return (line 2314) | static void
function scard_handle_ReleaseContext_Return (line 2338) | static void
function scard_handle_IsContextValid_Return (line 2362) | static void
function scard_handle_ListReaders_Return (line 2388) | static void
function scard_handle_GetStatusChange_Return (line 2412) | static void
function scard_handle_Connect_Return (line 2436) | static void
function scard_handle_Reconnect_Return (line 2464) | static void
function scard_handle_BeginTransaction_Return (line 2490) | static void
function scard_handle_EndTransaction_Return (line 2516) | static void
function scard_handle_Status_Return (line 2542) | static void
function scard_handle_Disconnect_Return (line 2568) | static void
function scard_handle_Transmit_Return (line 2594) | static void
function scard_handle_Control_Return (line 2619) | static void
function scard_handle_Cancel_Return (line 2644) | static void
function scard_handle_GetAttrib_Return (line 2669) | static void
FILE: sesman/chansrv/smartcard_dummy.c
function scard_device_announce (line 36) | int
function scard_get_wait_objs (line 43) | int
function scard_check_wait_objs (line 50) | int
function scard_init (line 57) | int
function scard_deinit (line 64) | int
FILE: sesman/chansrv/smartcard_internal.h
type xrdp_scard_io_request (line 53) | struct xrdp_scard_io_request
type READER_STATE (line 61) | typedef struct reader_state
type xrdp_scard_io_request (line 153) | struct xrdp_scard_io_request
type xrdp_scard_io_request (line 154) | struct xrdp_scard_io_request
FILE: sesman/chansrv/smartcard_pcsc.c
type pcsc_card (line 64) | struct pcsc_card /* item for list of open cards in one context */
type pcsc_context (line 71) | struct pcsc_context
type pcsc_uds_client (line 80) | struct pcsc_uds_client
type list (line 88) | struct list
type trans (line 90) | struct trans
type pcsc_uds_client (line 96) | struct pcsc_uds_client
type trans (line 97) | struct trans
type pcsc_uds_client (line 99) | struct pcsc_uds_client
type pcsc_uds_client (line 119) | struct pcsc_uds_client
type pcsc_uds_client (line 122) | struct pcsc_uds_client
type pcsc_uds_client (line 139) | struct pcsc_uds_client
type pcsc_context (line 152) | struct pcsc_context
type pcsc_uds_client (line 153) | struct pcsc_uds_client
type pcsc_context (line 156) | struct pcsc_context
type pcsc_context (line 169) | struct pcsc_context
type pcsc_card (line 180) | struct pcsc_card
type pcsc_uds_client (line 181) | struct pcsc_uds_client
type pcsc_context (line 182) | struct pcsc_context
type pcsc_card (line 184) | struct pcsc_card
type pcsc_context (line 185) | struct pcsc_context
type pcsc_context (line 203) | struct pcsc_context
type pcsc_card (line 211) | struct pcsc_card
function free_uds_client (line 234) | static int
type pcsc_context (line 284) | struct pcsc_context
type pcsc_uds_client (line 285) | struct pcsc_uds_client
type pcsc_context (line 288) | struct pcsc_context
type pcsc_context (line 291) | struct pcsc_context
type pcsc_context (line 292) | struct pcsc_context
function uds_client_remove_context (line 319) | static int
type pcsc_card (line 344) | struct pcsc_card
type pcsc_uds_client (line 345) | struct pcsc_uds_client
type pcsc_context (line 346) | struct pcsc_context
type pcsc_card (line 349) | struct pcsc_card
type pcsc_card (line 352) | struct pcsc_card
type pcsc_card (line 353) | struct pcsc_card
function scard_pcsc_get_wait_objs (line 380) | int
function scard_pcsc_check_wait_objs (line 407) | int
function scard_process_establish_context (line 446) | static int
function scard_function_establish_context_return (line 464) | int
function scard_process_release_context (line 529) | static int
function scard_function_release_context_return (line 557) | int
type pcsc_list_readers (line 597) | struct pcsc_list_readers
function scard_process_list_readers (line 605) | static int
function count_multistring_elements (line 666) | static unsigned int
function scard_function_list_readers_return (line 694) | int
function scard_process_connect (line 831) | static int
function scard_function_connect_return (line 865) | int
function scard_process_disconnect (line 934) | static int
function scard_function_disconnect_return (line 963) | int
function scard_process_begin_transaction (line 1004) | static int
function scard_function_begin_transaction_return (line 1033) | int
function scard_process_end_transaction (line 1074) | static int
function scard_function_end_transaction_return (line 1106) | int
function scard_function_get_attrib_return (line 1148) | int
type pcsc_transmit (line 1157) | struct pcsc_transmit
function scard_process_transmit (line 1166) | static int
function scard_function_transmit_return (line 1224) | int
function scard_process_control (line 1307) | static int
function scard_function_control_return (line 1348) | int
type pcsc_status (line 1401) | struct pcsc_status
function scard_process_status (line 1409) | static int
function scard_function_status_return (line 1471) | int
function scard_process_get_status_change (line 1597) | static int
function scard_function_get_status_change_return (line 1659) | int
function scard_process_cancel (line 1734) | static int
function scard_function_cancel_return (line 1760) | int
function scard_function_is_context_valid_return (line 1801) | int
function scard_function_reconnect_return (line 1811) | int scard_function_reconnect_return(void *user_data,
function scard_process_msg (line 1820) | static int
function my_pcsc_trans_data_in (line 1915) | static int
function my_pcsc_trans_conn_in (line 1942) | static int
function scard_pcsc_init (line 1982) | int
function scard_pcsc_deinit (line 2033) | int
function scard_pcsc_get_wait_objs (line 2059) | int
function scard_pcsc_check_wait_objs (line 2064) | int
function scard_pcsc_init (line 2069) | int
function scard_pcsc_deinit (line 2074) | int
FILE: sesman/chansrv/smartcard_pcsc.h
type stream (line 32) | struct stream
type stream (line 35) | struct stream
type stream (line 38) | struct stream
type stream (line 42) | struct stream
type stream (line 46) | struct stream
type stream (line 50) | struct stream
type stream (line 54) | struct stream
type stream (line 58) | struct stream
type stream (line 62) | struct stream
type stream (line 66) | struct stream
type stream (line 70) | struct stream
type stream (line 74) | struct stream
type stream (line 78) | struct stream
type stream (line 82) | struct stream
type stream (line 86) | struct stream
FILE: sesman/chansrv/sound.c
type config_chansrv (line 67) | struct config_chansrv
type trans (line 70) | struct trans
type trans (line 71) | struct trans
type trans (line 74) | struct trans
type trans (line 75) | struct trans
type fifo (line 80) | struct fifo
type stream (line 86) | struct stream
type stream (line 87) | struct stream
type list (line 96) | struct list
type xr_wave_format_ex (line 98) | struct xr_wave_format_ex
type xr_wave_format_ex (line 113) | struct xr_wave_format_ex
type xr_wave_format_ex (line 126) | struct xr_wave_format_ex
type xr_wave_format_ex (line 140) | struct xr_wave_format_ex
type xr_wave_format_ex (line 155) | struct xr_wave_format_ex
type xr_wave_format_ex (line 170) | struct xr_wave_format_ex
type xr_wave_format_ex (line 183) | struct xr_wave_format_ex
type xr_wave_format_ex (line 217) | struct xr_wave_format_ex
type xr_wave_format_ex (line 230) | struct xr_wave_format_ex
type xr_wave_format_ex (line 242) | struct xr_wave_format_ex
type stream (line 260) | struct stream
type stream (line 263) | struct stream
type trans (line 264) | struct trans
function sound_send_server_output_formats (line 269) | static int
function sound_send_training (line 342) | static int
function sound_process_output_format (line 371) | static int
function sound_process_output_formats (line 445) | static int
function sound_wave_compress_fdk_aac (line 493) | static int
function sound_wave_compress_fdk_aac (line 691) | static int
function sound_wave_compress_opus (line 702) | static int
function sound_wave_compress_opus (line 764) | static int
function sound_wave_compress_mp3lame (line 775) | static int
function sound_wave_compress_mp3lame (line 854) | static int
function sound_wave_compress (line 863) | static int
function sound_send_wave_data_chunk (line 886) | static int
function sound_send_wave_data (line 954) | static int
function sound_send_close (line 1011) | static int
function sound_process_training (line 1041) | static int
function sound_process_wave_confirm (line 1053) | static int
function process_pcm_message (line 1097) | static int
function sound_sndsrvr_sink_data_in (line 1149) | static int
function sound_sndsrvr_sink_conn_in (line 1194) | static int
function sound_sndsrvr_source_conn_in (line 1232) | static int
function in_fifo_item_destructor (line 1269) | static void
function sound_init (line 1276) | int
function sound_deinit (line 1319) | int
function sound_data_in (line 1366) | int
function sound_get_wait_objs (line 1422) | int
function sound_check_wait_objs (line 1458) | int
function sound_send_server_input_formats (line 1516) | static int
function sound_process_input_format (line 1585) | static int
function sound_process_input_formats (line 1633) | static int
function sound_input_start_recording (line 1681) | static int
function sound_input_stop_recording (line 1717) | static int
function sound_process_input_data (line 1747) | static int
function sound_sndsrvr_source_data_in (line 1775) | static int
function sound_start_source_listener (line 1899) | static int
function sound_start_sink_listener (line 1919) | static int
FILE: sesman/chansrv/sound.h
type stream (line 58) | struct stream
FILE: sesman/chansrv/xcommon.c
function xcommon_error_handler (line 53) | static int
function xcommon_set_x_server_fatal_handler (line 70) | void
function xcommon_fatal_handler (line 78) | static int
function xcommon_init (line 90) | int
function xcommon_get_wait_objs (line 141) | int
function xcommon_check_wait_objs (line 158) | int
FILE: sesman/display_utils.c
function x_server_running_check_ports (line 50) | static int
function display_utils_get_free_display (line 109) | int
FILE: sesman/display_utils.h
type set_int (line 30) | struct set_int
type set_int (line 39) | struct set_int
FILE: sesman/eicp_process.c
function process_sys_login_response (line 48) | static int
function process_create_session_response (line 100) | static int
function eicp_process (line 154) | int
FILE: sesman/eicp_process.h
type scp_list_item (line 30) | struct scp_list_item
type scp_list_item (line 39) | struct scp_list_item
FILE: sesman/ercp_process.c
function process_session_announce_event (line 41) | static int
function process_session_finished_event (line 79) | static void
function process_client_connect_event (line 89) | static int
function process_client_disconnect_event (line 113) | static int
function ercp_process (line 134) | int
FILE: sesman/ercp_process.h
type session_item (line 30) | struct session_item
type session_item (line 38) | struct session_item
FILE: sesman/libsesman/sesman_access.c
function user_is_root (line 46) | static int
function access_login_allowed (line 55) | int
function access_login_is_admin (line 128) | int
FILE: sesman/libsesman/sesman_access.h
type config_security (line 30) | struct config_security
type config_security (line 40) | struct config_security
type config_security (line 51) | struct config_security
FILE: sesman/libsesman/sesman_auth.h
type auth_info (line 33) | struct auth_info
type auth_info (line 46) | struct auth_info
type scp_login_status (line 48) | enum scp_login_status
type auth_info (line 60) | struct auth_info
type scp_login_status (line 61) | enum scp_login_status
type auth_info (line 74) | struct auth_info
type auth_info (line 84) | struct auth_info
type auth_info (line 99) | struct auth_info
FILE: sesman/libsesman/sesman_clip_restrict.c
type bitmask_string (line 39) | struct bitmask_string
function sesman_clip_restrict_string_to_bitmask (line 54) | int
function sesman_clip_restrict_mask_to_string (line 65) | int
FILE: sesman/libsesman/sesman_config.c
type bitmask_char (line 92) | struct bitmask_char
function parse_policy_string (line 105) | static unsigned int
function config_output_policy_string (line 144) | int
function config_read_globals (line 178) | static int
function config_read_security (line 305) | static int
function config_read_sessions (line 426) | static int
function config_read_xorg_params (line 530) | static int
function config_read_vnc_params (line 563) | static int
function config_read_session_variables (line 587) | static int
type config_sesman (line 615) | struct config_sesman
type config_sesman (line 618) | struct config_sesman
type list (line 628) | struct list
type list (line 629) | struct list
type list (line 630) | struct list
function config_dump (line 674) | void
function config_free (line 771) | void
FILE: sesman/libsesman/sesman_config.h
type SESMAN_CFG_SESS_POLICY_BITS (line 36) | enum SESMAN_CFG_SESS_POLICY_BITS
type config_security (line 60) | struct config_security
type config_sessions (line 140) | struct config_sessions
type config_sesman (line 194) | struct config_sesman
type config_sesman (line 287) | struct config_sesman
type config_sesman (line 297) | struct config_sesman
type config_sesman (line 306) | struct config_sesman
FILE: sesman/libsesman/verify_user.c
type spwd (line 52) | struct spwd
type auth_info (line 57) | struct auth_info
type auth_info (line 64) | struct auth_info
type scp_login_status (line 66) | enum scp_login_status
type passwd (line 69) | struct passwd
type auth_info (line 72) | struct auth_info
type scp_login_status (line 75) | enum scp_login_status
type spwd (line 82) | struct spwd
type auth_info (line 131) | struct auth_info
type scp_login_status (line 132) | enum scp_login_status
type passwd (line 134) | struct passwd
type auth_info (line 137) | struct auth_info
type scp_login_status (line 139) | enum scp_login_status
type spwd (line 146) | struct spwd
function auth_start_session (line 177) | int
function auth_end (line 184) | int
function auth_set_env (line 191) | int
function auth_check_pwd_chg (line 198) | int
function auth_change_pwd (line 255) | int
function auth_account_disabled (line 347) | static int
FILE: sesman/libsesman/verify_user_bsd.c
function auth_userokay (line 50) | static int
type auth_info (line 63) | struct auth_info
type auth_info (line 70) | struct auth_info
type scp_login_status (line 72) | enum scp_login_status
type auth_info (line 75) | struct auth_info
type scp_login_status (line 76) | enum scp_login_status
type auth_info (line 106) | struct auth_info
type scp_login_status (line 107) | enum scp_login_status
type auth_info (line 110) | struct auth_info
function auth_start_session (line 122) | int
function auth_end (line 129) | int
function auth_set_env (line 136) | int
function auth_check_pwd_chg (line 143) | int
function auth_change_pwd (line 149) | int
function auth_stop_session (line 155) | int
FILE: sesman/libsesman/verify_user_kerberos.c
type auth_info (line 39) | struct auth_info
function log_kerberos_failure (line 48) | static void
function auth_end (line 57) | int
type auth_info (line 87) | struct auth_info
type auth_info (line 91) | struct auth_info
function k5_kinit (line 130) | static enum scp_login_status
type auth_info (line 183) | struct auth_info
type scp_login_status (line 185) | enum scp_login_status
type scp_login_status (line 187) | enum scp_login_status
type auth_info (line 188) | struct auth_info
type auth_info (line 210) | struct auth_info
type scp_login_status (line 211) | enum scp_login_status
type auth_info (line 213) | struct auth_info
function auth_start_session (line 226) | int
function auth_set_env (line 233) | int
FILE: sesman/libsesman/verify_user_pam.c
type conv_func_data (line 41) | struct conv_func_data
type auth_info (line 46) | struct auth_info
function verify_pam_conv (line 116) | static int
function get_service_name (line 201) | static void
function common_pam_login (line 240) | static enum scp_login_status
type auth_info (line 334) | struct auth_info
type scp_login_status (line 336) | enum scp_login_status
type auth_info (line 338) | struct auth_info
type scp_login_status (line 339) | enum scp_login_status
type auth_info (line 367) | struct auth_info
type scp_login_status (line 368) | enum scp_login_status
type auth_info (line 370) | struct auth_info
type scp_login_status (line 371) | enum scp_login_status
function auth_start_session_private (line 400) | static int
function auth_start_session (line 455) | int
function auth_stop_session (line 470) | static int
function auth_end (line 503) | int
function auth_set_env (line 524) | int
FILE: sesman/libsesman/verify_user_pam_userpass.c
type auth_info (line 44) | struct auth_info
function common_pam_login (line 66) | static enum scp_login_status
type auth_info (line 137) | struct auth_info
type scp_login_status (line 139) | enum scp_login_status
type auth_info (line 141) | struct auth_info
type scp_login_status (line 142) | enum scp_login_status
type auth_info (line 175) | struct auth_info
type scp_login_status (line 176) | enum scp_login_status
type auth_info (line 178) | struct auth_info
type scp_login_status (line 179) | enum scp_login_status
function auth_start_session_private (line 209) | static int
function auth_start_session (line 264) | int
function auth_stop_session (line 279) | static int
function auth_end (line 312) | int
function auth_set_env (line 333) | int
FILE: sesman/lock_uds.c
type lock_uds (line 40) | struct lock_uds
type lock_uds (line 48) | struct lock_uds
type lock_uds (line 51) | struct lock_uds
function unlock_uds (line 129) | void
FILE: sesman/lock_uds.h
type lock_uds (line 33) | struct lock_uds
type lock_uds (line 46) | struct lock_uds
type lock_uds (line 57) | struct lock_uds
FILE: sesman/scp_list.c
type list (line 48) | struct list
function free_scp_list_item (line 60) | static void
function scp_list_init (line 73) | int
function scp_list_cleanup (line 96) | void
function scp_list_get_count (line 114) | unsigned int
type scp_list_item (line 121) | struct scp_list_item
type scp_list_item (line 124) | struct scp_list_item
function scp_list_set_peername (line 141) | int
function scp_list_get_wait_objs (line 156) | int
function scp_list_check_wait_objs (line 199) | int
function scp_list_get_create_session_x11_displays (line 265) | void
FILE: sesman/scp_list.h
type set_int (line 35) | struct set_int
type sli_login_state (line 40) | enum sli_login_state
type scp_list_dispatcher_action (line 54) | enum scp_list_dispatcher_action
type scp_list_item (line 73) | struct scp_list_item
type scp_list_item (line 130) | struct scp_list_item
type scp_list_item (line 141) | struct scp_list_item
type set_int (line 166) | struct set_int
FILE: sesman/scp_process.c
function process_set_peername_request (line 53) | static int
function process_sys_login_request (line 74) | static int
function authenticate_and_authorize_uds_connection (line 173) | static enum scp_login_status
function process_uds_login_request (line 235) | static int
function logout_scp_list_item (line 300) | static void
function process_logout_request (line 322) | static int
function create_xrdp_socket_path (line 346) | static int
function get_free_display (line 404) | static int
function process_create_session_request (line 431) | static int
function process_connect_session_request (line 578) | static int
function process_list_sessions_request (line 663) | static int
function process_create_sockdir_request (line 714) | static int
function process_close_connection_request (line 740) | static int
function scp_process (line 761) | int
FILE: sesman/scp_process.h
type scp_list_item (line 30) | struct scp_list_item
type scp_list_item (line 39) | struct scp_list_item
FILE: sesman/sesexec/ccp_server.c
function ccp_server (line 37) | int
FILE: sesman/sesexec/ccp_server.h
type trans (line 37) | struct trans
FILE: sesman/sesexec/eicp_server.c
function handle_sys_login_request (line 44) | static int
function handle_uds_login_request (line 95) | static int
function handle_logout_request (line 135) | static int
function handle_create_session_request (line 144) | static int
function eicp_server (line 232) | int
FILE: sesman/sesexec/eicp_server.h
type trans (line 37) | struct trans
FILE: sesman/sesexec/env.c
function env_set_user (line 43) | int
FILE: sesman/sesexec/env.h
type list (line 54) | struct list
type list (line 54) | struct list
FILE: sesman/sesexec/ercp_server.c
function get_session_fds (line 46) | static enum scp_sconnect_status
function handle_connect_session_request (line 71) | static int
function ercp_server (line 196) | int
FILE: sesman/sesexec/ercp_server.h
type trans (line 37) | struct trans
FILE: sesman/sesexec/login_info.c
function log_authfail_message (line 53) | static void
function authenticate_and_authorize_connection (line 77) | static enum scp_login_status
function get_scp_client_retry (line 186) | static int
type login_info (line 229) | struct login_info
type trans (line 230) | struct trans
type login_info (line 235) | struct login_info
type scp_login_status (line 236) | enum scp_login_status
type login_info (line 302) | struct login_info
type trans (line 303) | struct trans
type login_info (line 305) | struct login_info
function login_info_free (line 345) | void
FILE: sesman/sesexec/login_info.h
type trans (line 32) | struct trans
type login_info (line 37) | struct login_info
type login_info (line 66) | struct login_info
type trans (line 67) | struct trans
type login_info (line 84) | struct login_info
type trans (line 85) | struct trans
type login_info (line 91) | struct login_info
FILE: sesman/sesexec/sesexec.c
type startup_params (line 52) | struct startup_params
type config_sesman (line 66) | struct config_sesman
type login_info (line 68) | struct login_info
type session_data (line 69) | struct session_data
type trans (line 75) | struct trans
type trans (line 76) | struct trans
function process_params (line 96) | static int
function sesexec_eicp_data_in (line 138) | static int
function sesexec_ercp_data_in (line 159) | int
function sesexec_ccp_data_in (line 180) | static int
function set_term_event (line 204) | static void
function sig_no_op (line 217) | static void
function set_sigchld_event (line 227) | static void
function sesexec_is_term (line 238) | int
function sesexec_terminate_main_loop (line 245) | void
function sesexec_set_ecp_transport (line 257) | int
function sesexec_is_ecp_active (line 301) | int
function sesexec_main_loop_cleanup (line 310) | static void
function close_ccp_trans (line 335) | static void
function sesexec_main_loop (line 348) | static int
function start_logging (line 541) | static int start_logging(const char *sesman_ini)
function get_eicp_fd (line 580) | static int
function main (line 624) | int
function sesexec_terminate_connected_xrdp_process (line 711) | void
function sesexec_set_ccp_trans (line 768) | int
FILE: sesman/sesexec/sesexec.h
type config_sesman (line 35) | struct config_sesman
type trans (line 36) | struct trans
type login_info (line 37) | struct login_info
type session_data (line 38) | struct session_data
type config_sesman (line 48) | struct config_sesman
type login_info (line 67) | struct login_info
type session_data (line 74) | struct session_data
type trans (line 101) | struct trans
type trans (line 108) | struct trans
type trans (line 129) | struct trans
type trans (line 157) | struct trans
type ccp_close_reason_type (line 179) | enum ccp_close_reason_type
type trans (line 188) | struct trans
FILE: sesman/sesexec/sesexec_discover.c
type trans (line 45) | struct trans
function discover_trans_conn_in (line 48) | static int
function sesexec_discover_enable (line 125) | int
function sesexec_discover_disable (line 164) | int
function sesexec_discover_get_wait_objs (line 175) | int
function sesexec_discover_check_wait_objs (line 197) | int
FILE: sesman/sesexec/session.c
type session_data (line 59) | struct session_data
type session_data (line 83) | struct session_data
type session_parameters (line 84) | struct session_parameters
type session_data (line 92) | struct session_data
type session_data (line 92) | struct session_data
function session_data_free (line 128) | void
type list (line 165) | struct list
function start_chansrv (line 192) | static void
function start_window_manager (line 231) | static void
type list (line 352) | struct list
type session_data (line 353) | struct session_data
type list (line 361) | struct list
function set_xvnc_passwd (line 526) | static int
type list (line 600) | struct list
type session_data (line 601) | struct session_data
type session_parameters (line 610) | struct session_parameters
type list (line 612) | struct list
function start_x_server (line 669) | static void
function fork_child (line 773) | static int
function process_startup_wait_time (line 804) | static int
function session_start_wrapped (line 863) | static enum scp_screate_status
function session_start (line 1001) | enum scp_screate_status
function cleanup_sockets (line 1055) | static int
function exit_status_to_str (line 1150) | static void
function process_child_exit (line 1190) | static void
function session_process_sigchld_event (line 1264) | void
function session_active (line 1278) | unsigned int
function time_t (line 1288) | time_t
function session_get_connect_count (line 1295) | unsigned int
type session_data (line 1303) | struct session_data
function session_increment_connect_count (line 1309) | unsigned int
type session_parameters (line 1316) | struct session_parameters
type session_data (line 1317) | struct session_data
function session_send_term (line 1323) | void
function start_reconnect_script (line 1359) | static void
function session_run_reconnect_script (line 1404) | void
function session_get_display_server_fd (line 1417) | int
function session_get_chansrv_fd (line 1484) | int
FILE: sesman/sesexec/session.h
type login_info (line 36) | struct login_info
type proc_exit_status (line 37) | struct proc_exit_status
type session_parameters (line 42) | struct session_parameters
type session_data (line 62) | struct session_data
type scp_screate_status (line 75) | enum scp_screate_status
type login_info (line 76) | struct login_info
type session_parameters (line 77) | struct session_parameters
type session_data (line 78) | struct session_data
type session_data (line 90) | struct session_data
type session_data (line 98) | struct session_data
type session_data (line 107) | struct session_data
type session_data (line 115) | struct session_data
type session_data (line 126) | struct session_data
type session_data (line 134) | struct session_data
type session_parameters (line 145) | struct session_parameters
type session_data (line 146) | struct session_data
type session_data (line 156) | struct session_data
type session_data (line 167) | struct session_data
type login_info (line 180) | struct login_info
type session_data (line 181) | struct session_data
type login_info (line 188) | struct login_info
type session_data (line 189) | struct session_data
type login_info (line 195) | struct login_info
type session_data (line 196) | struct session_data
FILE: sesman/sesexec/sessionrecord.c
type add_xtmp_mode (line 50) | enum add_xtmp_mode
type _utmp (line 64) | typedef struct utmpx _utmp;
type _utmp (line 67) | typedef struct utmp _utmp;
function set_idbuff_str (line 118) | static void
function add_xtmp_entry (line 162) | static void
function add_xtmp_entry (line 223) | static void
function utmp_login (line 233) | void
function utmp_logout (line 245) | void
FILE: sesman/sesexec/sessionrecord.h
type login_info (line 29) | struct login_info
type proc_exit_status (line 30) | struct proc_exit_status
type login_info (line 41) | struct login_info
type proc_exit_status (line 52) | struct proc_exit_status
FILE: sesman/sesexec/xauth.c
function add_xauth_cookie (line 38) | int
FILE: sesman/sesexec/xwait.c
function log_waitforx_messages (line 15) | static void
type list (line 58) | struct list
type list (line 64) | struct list
function wait_for_xserver (line 82) | enum xwait_status
FILE: sesman/sesexec/xwait.h
type xwait_status (line 6) | enum xwait_status
type xwait_status (line 24) | enum xwait_status
type list (line 26) | struct list
type list (line 27) | struct list
FILE: sesman/sesexec_control.c
function create_exec_args_add_entries (line 62) | static int
type list (line 89) | struct list
type list (line 92) | struct list
function sesexec_start (line 107) | int
FILE: sesman/sesexec_control.h
type trans (line 33) | struct trans
type scp_list_item (line 34) | struct scp_list_item
type scp_list_item (line 47) | struct scp_list_item
FILE: sesman/sesman.c
type sesman_mode (line 64) | enum sesman_mode
type sesman_startup_params (line 71) | struct sesman_startup_params
type config_sesman (line 81) | struct config_sesman
type trans (line 86) | struct trans
type lock_uds (line 89) | struct lock_uds
function nocase_matches (line 100) | static int nocase_matches(const char *candidate, ...)
function sesman_process_params (line 130) | static int
function sesman_listen_test (line 198) | static int sesman_listen_test(struct config_sesman *cfg)
function sesman_close_all (line 217) | static int
function sesman_scp_data_in (line 235) | int
function sesman_listen_conn_in (line 259) | static int
function sesman_eicp_data_in (line 291) | int
function sesman_ercp_data_in (line 314) | int
function set_term_event (line 339) | static void
function sig_no_op (line 352) | static void
function set_sigchld_event (line 365) | static void
function set_reload_event (line 379) | static void
function sesman_delete_listening_transport (line 390) | void
function sesman_create_listening_transport (line 408) | int
function sesman_is_term (line 455) | int
function sesman_main_loop (line 467) | static int
function print_version (line 582) | static void
function print_help (line 600) | static void
function read_pid_file (line 618) | static int
function create_xrdp_socket_root_path (line 656) | static int
function main (line 689) | int
FILE: sesman/sesman.h
type config_sesman (line 30) | struct config_sesman
type trans (line 31) | struct trans
type config_sesman (line 34) | struct config_sesman
type config_sesman (line 51) | struct config_sesman
type trans (line 57) | struct trans
type trans (line 63) | struct trans
type trans (line 69) | struct trans
FILE: sesman/sesman_restart.c
type init_restart_dir_status (line 44) | enum init_restart_dir_status
function init_restart_directory (line 57) | static enum init_restart_dir_status
function add_sesexec_fd_to_session_list (line 111) | static int
function discover_sessions (line 173) | static int
function sesman_restart_discover_sessions (line 262) | int
FILE: sesman/session_list.c
type list (line 49) | struct list
function session_list_init (line 57) | int
function free_session (line 87) | static void
function session_list_cleanup (line 101) | void
function session_list_get_count (line 119) | unsigned int
function session_list_get_count_by_state (line 126) | unsigned int
type session_item (line 144) | struct session_item
type session_item (line 147) | struct session_item
function session_list_get_session_x11_displays (line 162) | void
type session_item (line 185) | struct session_item
type scp_session_type (line 187) | enum scp_session_type
type session_item (line 234) | struct session_item
type session_item (line 235) | struct session_item
type scp_session_info (line 305) | struct scp_session_info
type scp_session_info (line 309) | struct scp_session_info
type session_item (line 326) | struct session_item
type session_item (line 327) | struct session_item
type session_item (line 352) | struct session_item
type session_item (line 353) | struct session_item
type session_item (line 391) | struct session_item
type guid (line 392) | struct guid
type session_item (line 398) | struct session_item
type session_item (line 399) | struct session_item
function free_session_info_list (line 410) | void
function session_list_get_wait_objs (line 430) | int
function session_list_check_wait_objs (line 449) | int
FILE: sesman/session_list.h
type set_int (line 37) | struct set_int
type session_state (line 39) | enum session_state
type session_item (line 55) | struct session_item
type session_state (line 106) | enum session_state
type session_item (line 122) | struct session_item
type set_int (line 131) | struct set_int
type session_item (line 139) | struct session_item
type scp_session_type (line 141) | enum scp_session_type
type scp_session_info (line 159) | struct scp_session_info
type session_item (line 170) | struct session_item
type guid (line 171) | struct guid
type scp_session_info (line 180) | struct scp_session_info
FILE: sesman/sig.c
function sig_sesman_reload_cfg (line 42) | void
FILE: sesman/tools/authtest.c
type authmod_params (line 54) | struct authmod_params
function usage (line 66) | static void
function read_password_from_fd (line 97) | static int
function parse_program_args (line 129) | static int
function main (line 261) | int
FILE: sesman/tools/dis.c
function main (line 36) | int main(int argc, char **argv)
FILE: sesman/tools/sesadmin.c
type trans (line 40) | struct trans
type trans (line 41) | struct trans
function main (line 45) | int main(int argc, char **argv)
function cmndHelp (line 121) | static void
function print_session (line 133) | static void
function cmndList (line 176) | static int
function cmndKill (line 202) | static int
FILE: sesman/tools/sesrun.c
type scp_session_type (line 82) | enum scp_session_type
type scp_session_type (line 88) | enum scp_session_type
type session_params (line 94) | struct session_params
function string_to_session_type (line 117) | static
function get_session_type_list (line 143) | static
function usage (line 166) | static void
function parse_geometry_string (line 206) | static int
function read_password_from_fd (line 256) | static int
function parse_program_args (line 288) | static int
function send_login_request (line 434) | static int
function handle_login_response (line 462) | static int
function send_create_session_request (line 498) | static int
function handle_create_session_response (line 519) | static int
function main (line 556) | int
FILE: sesman/tools/xcon.c
function main (line 35) | int main(int argc, char **argv)
FILE: tests/common/test_base64.c
function test_rfc4648_to_b64 (line 49) | static void
function test_rfc4648_to_b64_text (line 62) | static void
function test_rfc4648_from_b64_text (line 69) | static void
function START_TEST (line 84) | START_TEST(test_b64_rfc4648_ex1_to)
function END_TEST (line 88) | END_TEST
function END_TEST (line 95) | END_TEST
function END_TEST (line 102) | END_TEST
function END_TEST (line 109) | END_TEST
function END_TEST (line 116) | END_TEST
function END_TEST (line 123) | END_TEST
function END_TEST (line 130) | END_TEST
function END_TEST (line 137) | END_TEST
function END_TEST (line 144) | END_TEST
function END_TEST (line 151) | END_TEST
function END_TEST (line 158) | END_TEST
function END_TEST (line 165) | END_TEST
function END_TEST (line 172) | END_TEST
function END_TEST (line 179) | END_TEST
function END_TEST (line 199) | END_TEST
function END_TEST (line 212) | END_TEST
function END_TEST (line 254) | END_TEST
function END_TEST (line 269) | END_TEST
function END_TEST (line 290) | END_TEST
function END_TEST (line 298) | END_TEST
function END_TEST (line 306) | END_TEST
function END_TEST (line 340) | END_TEST
function END_TEST (line 362) | END_TEST
FILE: tests/common/test_common_main.c
function main (line 44) | int main (void)
FILE: tests/common/test_fifo_calls.c
function string_item_destructor (line 32) | static void
function START_TEST (line 46) | START_TEST(test_fifo__null)
function END_TEST (line 66) | END_TEST
function END_TEST (line 108) | END_TEST
function END_TEST (line 132) | END_TEST
function END_TEST (line 160) | END_TEST
function END_TEST (line 196) | END_TEST
FILE: tests/common/test_guid.c
function START_TEST (line 14) | START_TEST(test_guid_to_str_remotefx)
function END_TEST (line 27) | END_TEST
function END_TEST (line 43) | END_TEST
function END_TEST (line 58) | END_TEST
function END_TEST (line 94) | END_TEST
FILE: tests/common/test_list16_calls.c
function START_TEST (line 13) | START_TEST(test_list16__simple)
function END_TEST (line 74) | END_TEST
function Suite (line 99) | Suite *
FILE: tests/common/test_list_calls.c
function START_TEST (line 13) | START_TEST(test_list__simple)
function END_TEST (line 54) | END_TEST
function END_TEST (line 87) | END_TEST
function END_TEST (line 125) | END_TEST
function END_TEST (line 148) | END_TEST
function END_TEST (line 169) | END_TEST
function END_TEST (line 186) | END_TEST
FILE: tests/common/test_os_calls.c
function get_open_fd_count (line 30) | static unsigned int
function START_TEST (line 76) | START_TEST(test_g_file_get_size__returns_file_size)
function END_TEST (line 88) | END_TEST
function END_TEST (line 117) | END_TEST
function START_TEST (line 150) | START_TEST(test_g_file_get_size__2GiB)
function END_TEST (line 177) | END_TEST
function START_TEST (line 211) | START_TEST(test_g_file_rw)
function END_TEST (line 226) | END_TEST
function END_TEST (line 246) | END_TEST
function END_TEST (line 266) | END_TEST
function END_TEST (line 309) | END_TEST
function END_TEST (line 326) | END_TEST
function END_TEST (line 403) | END_TEST
function END_TEST (line 492) | END_TEST
function START_TEST (line 500) | START_TEST(test_g_readdir)
function END_TEST (line 552) | END_TEST
function END_TEST (line 560) | END_TEST
FILE: tests/common/test_os_calls_signals.c
function os_calls_signals_init (line 15) | void
function os_calls_signals_deinit (line 22) | void
function set_wobj1 (line 33) | static void
function send_multiple_signals (line 49) | static
function START_TEST (line 63) | START_TEST(test_g_set_alarm)
function END_TEST (line 77) | END_TEST
function END_TEST (line 128) | END_TEST
function END_TEST (line 171) | END_TEST
function END_TEST (line 185) | END_TEST
function START_TEST (line 198) | START_TEST(test_g_signal_user_interrupt)
function START_TEST (line 208) | START_TEST(test_g_signal_terminate)
function START_TEST (line 218) | START_TEST(test_g_signal_pipe)
function START_TEST (line 228) | START_TEST(test_g_signal_usr1)
function START_TEST (line 238) | START_TEST(test_waitpid_not_interrupted_by_sig)
function TCase (line 265) | TCase *
FILE: tests/common/test_parse.c
function START_TEST (line 28) | START_TEST(test_out_utf8_as_utf16_le)
function END_TEST (line 57) | END_TEST
function END_TEST (line 99) | END_TEST
function END_TEST (line 141) | END_TEST
function END_TEST (line 299) | END_TEST
FILE: tests/common/test_scancode.c
function START_TEST (line 14) | START_TEST(test_scancode__scancode_to_index)
function START_TEST (line 62) | START_TEST(test_scancode__keycode_sets)
function END_TEST (line 72) | END_TEST
function END_TEST (line 91) | END_TEST
function END_TEST (line 119) | END_TEST
function END_TEST (line 138) | END_TEST
function END_TEST (line 166) | END_TEST
FILE: tests/common/test_set_int.c
function START_TEST (line 12) | START_TEST(test_basic__bad_args)
function END_TEST (line 29) | END_TEST
function END_TEST (line 60) | END_TEST
function END_TEST (line 98) | END_TEST
function END_TEST (line 126) | END_TEST
function END_TEST (line 168) | END_TEST
FILE: tests/common/test_ssl_calls.c
function START_TEST (line 17) | START_TEST(test_rc4_enc_ok)
function END_TEST (line 38) | END_TEST
function END_TEST (line 60) | END_TEST
function END_TEST (line 82) | END_TEST
function END_TEST (line 104) | END_TEST
function END_TEST (line 126) | END_TEST
function END_TEST (line 220) | END_TEST
function END_TEST (line 250) | END_TEST
function END_TEST (line 281) | END_TEST
function END_TEST (line 315) | END_TEST
function END_TEST (line 343) | END_TEST
function END_TEST (line 370) | END_TEST
FILE: tests/common/test_string_calls.c
function START_TEST (line 35) | START_TEST(test_strnjoin__when_src_is_null__returns_empty_string)
function END_TEST (line 51) | END_TEST
function END_TEST (line 70) | END_TEST
function END_TEST (line 89) | END_TEST
function END_TEST (line 108) | END_TEST
function END_TEST (line 127) | END_TEST
function END_TEST (line 146) | END_TEST
function END_TEST (line 164) | END_TEST
function END_TEST (line 183) | END_TEST
function END_TEST (line 202) | END_TEST
function END_TEST (line 220) | END_TEST
function END_TEST (line 238) | END_TEST
function END_TEST (line 256) | END_TEST
function END_TEST (line 279) | END_TEST
function END_TEST (line 302) | END_TEST
function END_TEST (line 325) | END_TEST
function END_TEST (line 348) | END_TEST
function END_TEST (line 366) | END_TEST
function END_TEST (line 384) | END_TEST
function END_TEST (line 396) | END_TEST
function END_TEST (line 414) | END_TEST
function END_TEST (line 432) | END_TEST
function END_TEST (line 449) | END_TEST
function END_TEST (line 469) | END_TEST
function END_TEST (line 489) | END_TEST
function END_TEST (line 509) | END_TEST
function END_TEST (line 530) | END_TEST
function END_TEST (line 551) | END_TEST
function END_TEST (line 573) | END_TEST
function END_TEST (line 594) | END_TEST
function END_TEST (line 613) | END_TEST
function END_TEST (line 634) | END_TEST
function END_TEST (line 654) | END_TEST
function END_TEST (line 673) | END_TEST
function END_TEST (line 693) | END_TEST
function END_TEST (line 718) | END_TEST
function END_TEST (line 743) | END_TEST
function END_TEST (line 768) | END_TEST
function END_TEST (line 793) | END_TEST
function END_TEST (line 816) | END_TEST
function END_TEST (line 835) | END_TEST
function END_TEST (line 853) | END_TEST
function END_TEST (line 865) | END_TEST
function END_TEST (line 883) | END_TEST
function END_TEST (line 900) | END_TEST
function END_TEST (line 920) | END_TEST
function END_TEST (line 940) | END_TEST
function END_TEST (line 960) | END_TEST
function END_TEST (line 981) | END_TEST
function END_TEST (line 1003) | END_TEST
function END_TEST (line 1018) | END_TEST
function END_TEST (line 1031) | END_TEST
function END_TEST (line 1044) | END_TEST
function END_TEST (line 1057) | END_TEST
function END_TEST (line 1070) | END_TEST
function END_TEST (line 1120) | END_TEST
function END_TEST (line 1140) | END_TEST
function END_TEST (line 1162) | END_TEST
FILE: tests/common/test_string_calls_unicode.c
type utf8_decode_sub_test (line 17) | struct utf8_decode_sub_test
type utf8_encode_sub_test (line 28) | struct utf8_encode_sub_test
function run_utf8_decode_sub_test (line 55) | static void
function run_decode_sub_test_array (line 83) | static void
function run_utf8_encode_sub_test (line 98) | static void
function run_encode_sub_test_array (line 130) | static void
function START_TEST (line 141) | START_TEST(test_get_next_char__section_1)
function END_TEST (line 158) | END_TEST
function END_TEST (line 207) | END_TEST
function END_TEST (line 347) | END_TEST
function END_TEST (line 397) | END_TEST
function END_TEST (line 513) | END_TEST
function END_TEST (line 629) | END_TEST
function END_TEST (line 657) | END_TEST
function END_TEST (line 678) | END_TEST
function END_TEST (line 745) | END_TEST
function END_TEST (line 809) | END_TEST
FILE: tests/common/test_timers.c
function START_TEST (line 13) | START_TEST(test_timers__null_timer)
function END_TEST (line 32) | END_TEST
function END_TEST (line 71) | END_TEST
FILE: tests/libipm/test_libipm.h
type trans (line 19) | struct trans
type trans (line 20) | struct trans
type trans (line 21) | struct trans
type stream (line 65) | struct stream
FILE: tests/libipm/test_libipm_main.c
type trans (line 19) | struct trans
type trans (line 20) | struct trans
type trans (line 21) | struct trans
function suite_test_libipm_calls_start (line 35) | static void
function suite_test_libipm_calls_end (line 115) | static void
function check_binary_data_eq (line 124) | void
function check_fd_is_dev_zero (line 155) | void
function does_stream_contain_string (line 170) | int
function get_open_fd_count (line 193) | unsigned int
function main (line 239) | int main (void)
FILE: tests/libipm/test_libipm_recv_calls.c
type header_field (line 32) | enum header_field
function get_header_field (line 43) | static unsigned int
function set_header_field (line 65) | static void
function flush_socket (line 87) | static unsigned int
function check_for_incoming_message (line 108) | static void
function test_truncated_input_type (line 133) | static void
function test_bad_header_value (line 194) | static void
function START_TEST (line 229) | START_TEST(test_libipm_send_recv_all_test)
function END_TEST (line 305) | END_TEST
function END_TEST (line 329) | END_TEST
function END_TEST (line 379) | END_TEST
function END_TEST (line 403) | END_TEST
function END_TEST (line 427) | END_TEST
function END_TEST (line 451) | END_TEST
function END_TEST (line 475) | END_TEST
function END_TEST (line 499) | END_TEST
function END_TEST (line 523) | END_TEST
function END_TEST (line 550) | END_TEST
function END_TEST (line 604) | END_TEST
function END_TEST (line 650) | END_TEST
function END_TEST (line 677) | END_TEST
function END_TEST (line 710) | END_TEST
function END_TEST (line 749) | END_TEST
function END_TEST (line 789) | END_TEST
function END_TEST (line 828) | END_TEST
function END_TEST (line 865) | END_TEST
function END_TEST (line 887) | END_TEST
FILE: tests/libipm/test_libipm_send_calls.c
type int_test_value (line 69) | struct int_test_value
function check_stream_data_eq (line 82) | static void
function test_small_type_values (line 96) | static void
function test_append_at_end_of_message (line 120) | static void
function START_TEST (line 147) | START_TEST(test_libipm_append_all_test)
function END_TEST (line 178) | END_TEST
function END_TEST (line 200) | END_TEST
function END_TEST (line 221) | END_TEST
function END_TEST (line 242) | END_TEST
function END_TEST (line 263) | END_TEST
function END_TEST (line 284) | END_TEST
function END_TEST (line 305) | END_TEST
function END_TEST (line 314) | END_TEST
function END_TEST (line 323) | END_TEST
function END_TEST (line 356) | END_TEST
function END_TEST (line 380) | END_TEST
function END_TEST (line 417) | END_TEST
function END_TEST (line 460) | END_TEST
function END_TEST (line 483) | END_TEST
function END_TEST (line 504) | END_TEST
FILE: tests/libxrdp/test_libxrdp_main.c
function main (line 10) | int main (void)
FILE: tests/libxrdp/test_libxrdp_process_monitor_stream.c
function START_TEST (line 10) | START_TEST(test_libxrdp_process_monitor_stream__when_description_is_null...
function END_TEST (line 27) | END_TEST
function END_TEST (line 51) | END_TEST
function END_TEST (line 75) | END_TEST
function END_TEST (line 143) | END_TEST
function END_TEST (line 390) | END_TEST
FILE: tests/libxrdp/test_xrdp_sec_process_mcs_data_monitors.c
type xrdp_sec (line 10) | struct xrdp_sec
type xrdp_rdp (line 11) | struct xrdp_rdp
type xrdp_session (line 12) | struct xrdp_session
function setup (line 14) | static void setup(void)
function teardown (line 25) | static void teardown(void)
function START_TEST (line 32) | START_TEST(test_xrdp_sec_process_mcs_data_monitors__when_flags_is_not_ze...
function END_TEST (line 49) | END_TEST
function END_TEST (line 68) | END_TEST
function END_TEST (line 117) | END_TEST
function END_TEST (line 166) | END_TEST
function END_TEST (line 194) | END_TEST
function END_TEST (line 222) | END_TEST
function END_TEST (line 250) | END_TEST
function END_TEST (line 278) | END_TEST
FILE: tests/memtest/libmem.c
type mem_item (line 19) | struct mem_item
type mem_info (line 27) | struct mem_info
function libmem_free_mem_item (line 40) | static int
type mem_info (line 79) | struct mem_info
type mem_item (line 80) | struct mem_item
type mem_info (line 82) | struct mem_info
type mem_info (line 82) | struct mem_info
type mem_info (line 83) | struct mem_info
type mem_item (line 87) | struct mem_item
type mem_item (line 87) | struct mem_item
type mem_item (line 88) | struct mem_item
function libmem_deinit (line 97) | void
function libmem_add_used_item (line 119) | static int
function libmem_add_free_item (line 183) | static int
function libmem_print (line 269) | static int
function libmem_alloc (line 305) | unsigned int
function libmem_free (line 352) | int
function libmem_set_flags (line 384) | int
function libmem_clear_flags (line 395) | int
function libmem_get_alloced_bytes (line 406) | int
FILE: tests/memtest/memtest.c
function main (line 14) | int main(int argc, char **argv)
FILE: tests/xrdp/test_bitmap_load.c
function setup (line 51) | static void setup(void)
function teardown (line 55) | static void teardown(void)
function START_TEST (line 60) | START_TEST(test_bitmap_load__with_invalid_image__fail)
function END_TEST (line 75) | END_TEST
function check_is_close_color (line 90) | static void
function load_and_transform_img (line 118) | static void
function load_not4_img (line 167) | static void
function START_TEST (line 210) | START_TEST(test_bitmap_load__4_bit__ok)
function END_TEST (line 214) | END_TEST
function END_TEST (line 220) | END_TEST
function END_TEST (line 226) | END_TEST
function END_TEST (line 233) | END_TEST
function END_TEST (line 240) | END_TEST
function END_TEST (line 247) | END_TEST
function END_TEST (line 254) | END_TEST
function END_TEST (line 261) | END_TEST
function END_TEST (line 268) | END_TEST
function END_TEST (line 274) | END_TEST
function END_TEST (line 280) | END_TEST
function START_TEST (line 289) | START_TEST(test_png_load__blend_ok)
function END_TEST (line 293) | END_TEST
function Suite (line 303) | Suite *
FILE: tests/xrdp/test_tconfig.c
function START_TEST (line 11) | START_TEST(test_tconfig_gfx_always_success)
function END_TEST (line 15) | END_TEST
function START_TEST (line 26) | START_TEST(test_tconfig_gfx_h264_x264)
function START_TEST (line 35) | START_TEST(test_tconfig_gfx_h264_undefined)
function START_TEST (line 44) | START_TEST(test_tconfig_gfx_h264_invalid)
function START_TEST (line 53) | START_TEST(test_tconfig_gfx_oh264_load_basic)
function START_TEST (line 67) | START_TEST(test_tconfig_gfx_x264_load_basic)
function END_TEST (line 84) | END_TEST
function END_TEST (line 124) | END_TEST
function END_TEST (line 135) | END_TEST
function END_TEST (line 146) | END_TEST
FILE: tests/xrdp/test_xrdp_egfx.c
function START_TEST (line 40) | START_TEST(test_xrdp_egfx_send_create_surface__happy_path)
function END_TEST (line 60) | END_TEST
FILE: tests/xrdp/test_xrdp_keymap.c
function START_TEST (line 12) | START_TEST(test_keymap_load__basic_load)
function END_TEST (line 87) | END_TEST
FILE: tests/xrdp/test_xrdp_main.c
function main (line 41) | int main (void)
FILE: tests/xrdp/test_xrdp_region.c
function pixman_box16_t (line 66) | pixman_box16_t *__wrap_pixman_region_extents(pixman_region16_t *region)
function test_xrdp_region_get_bounds__negligent_path (line 72) | static void test_xrdp_region_get_bounds__negligent_path(void **state)
function test_xrdp_region_get_bounds__happy_path (line 90) | static void test_xrdp_region_get_bounds__happy_path(void **state)
function pixman_bool_t (line 114) | pixman_bool_t __wrap_pixman_region_not_empty(pixman_region16_t *region)
function test_xrdp_region_not_empty__happy_path (line 120) | static void test_xrdp_region_not_empty__happy_path(void **state)
function START_TEST (line 136) | START_TEST(execute_suite)
function END_TEST (line 147) | END_TEST
FILE: third_party/tomlc99/toml.c
function toml_set_memutil (line 41) | void toml_set_memutil(void *(*xxmalloc)(size_t), void (*xxfree)(void *)) {
function toml_utf8_to_ucs (line 97) | int toml_utf8_to_ucs(const char *orig, int len, int64_t *ret) {
function toml_ucs_to_utf8 (line 198) | int toml_ucs_to_utf8(int64_t code, char buf[6]) {
type toml_keyval_t (line 282) | typedef struct toml_keyval_t toml_keyval_t;
type toml_keyval_t (line 283) | struct toml_keyval_t {
type toml_arritem_t (line 288) | typedef struct toml_arritem_t toml_arritem_t;
type toml_arritem_t (line 289) | struct toml_arritem_t {
type toml_array_t (line 297) | struct toml_array_t {
type toml_table_t (line 307) | struct toml_table_t {
function xfree (line 325) | static inline void xfree(const void *x) {
type tokentype_t (line 330) | enum tokentype_t {
type tokentype_t (line 342) | typedef enum tokentype_t tokentype_t;
type token_t (line 344) | typedef struct token_t token_t;
type token_t (line 345) | struct token_t {
type context_t (line 353) | typedef struct context_t context_t;
type context_t (line 354) | struct context_t {
function e_outofmemory (line 380) | static int e_outofmemory(context_t *ctx, const char *fline) {
function e_internal (line 385) | static int e_internal(context_t *ctx, const char *fline) {
function e_syntax (line 390) | static int e_syntax(context_t *ctx, int lineno, const char *msg) {
function e_badkey (line 395) | static int e_badkey(context_t *ctx, int lineno) {
function e_keyexists (line 400) | static int e_keyexists(context_t *ctx, int lineno) {
function e_forbid (line 405) | static int e_forbid(context_t *ctx, int lineno, const char *msg) {
function toml_arritem_t (line 435) | static toml_arritem_t *expand_arritem(toml_arritem_t *p, int n) {
function check_key (line 692) | static int check_key(toml_table_t *tab, const char *key,
function key_kind (line 730) | static int key_kind(toml_table_t *tab, const char *key) {
function toml_keyval_t (line 736) | static toml_keyval_t *create_keyval_in_table(context_t *ctx, toml_table_...
function toml_table_t (line 777) | static toml_table_t *create_keytable_in_table(context_t *ctx, toml_table...
function toml_array_t (line 825) | static toml_array_t *create_keyarray_in_table(context_t *ctx, toml_table...
function toml_arritem_t (line 864) | static toml_arritem_t *create_value_in_array(context_t *ctx,
function toml_array_t (line 879) | static toml_array_t *create_array_in_array(context_t *ctx,
function toml_table_t (line 900) | static toml_table_t *create_table_in_array(context_t *ctx,
function skip_newlines (line 919) | static int skip_newlines(context_t *ctx, int isdotspecial) {
function eat_token (line 931) | static inline int eat_token(context_t *ctx, tokentype_t typ, int isdotsp...
function parse_inline_table (line 945) | static int parse_inline_table(context_t *ctx, toml_table_t *tab) {
function valtype (line 985) | static int valtype(const char *val) {
function parse_array (line 1006) | static int parse_array(context_t *ctx, toml_array_t *arr) {
function parse_keyval (line 1106) | static int parse_keyval(context_t *ctx, toml_table_t *tab) {
type tabpath_t (line 1191) | typedef struct tabpath_t tabpath_t;
type tabpath_t (line 1192) | struct tabpath_t {
function fill_tabpath (line 1201) | static int fill_tabpath(context_t *ctx) {
function walk_tabpath (line 1250) | static int walk_tabpath(context_t *ctx) {
function parse_select (line 1312) | static int parse_select(context_t *ctx) {
function toml_table_t (line 1402) | toml_table_t *toml_parse(char *conf, char *errbuf, int errbufsz) {
function toml_table_t (line 1480) | toml_table_t *toml_parse_file(FILE *fp, char *errbuf, int errbufsz) {
function xfree_kval (line 1531) | static void xfree_kval(toml_keyval_t *p) {
function xfree_arr (line 1541) | static void xfree_arr(toml_array_t *p) {
function xfree_tab (line 1560) | static void xfree_tab(toml_table_t *p) {
function toml_free (line 1583) | void toml_free(toml_table_t *tab) { xfree_tab(tab); }
function set_token (line 1585) | static void set_token(context_t *ctx, tokentype_t tok, int lineno, char ...
function set_eof (line 1596) | static void set_eof(context_t *ctx, int lineno) {
function scan_digits (line 1602) | static int scan_digits(const char *p, int n) {
function scan_date (line 1610) | static int scan_date(const char *p, int *YY, int *MM, int *DD) {
function scan_time (line 1624) | static int scan_time(const char *p, int *hh, int *mm, int *ss) {
function scan_string (line 1638) | static int scan_string(context_t *ctx, char *p, int lineno, int dotisspe...
function next_token (line 1803) | static int next_token(context_t *ctx, int dotisspecial) {
function toml_key_exists (line 1880) | int toml_key_exists(const toml_table_t *tab, const char *key) {
function toml_raw_t (line 1897) | toml_raw_t toml_raw_in(const toml_table_t *tab, const char *key) {
function toml_array_t (line 1906) | toml_array_t *toml_array_in(const toml_table_t *tab, const char *key) {
function toml_table_t (line 1915) | toml_table_t *toml_table_in(const toml_table_t *tab, const char *key) {
function toml_raw_t (line 1924) | toml_raw_t toml_raw_at(const toml_array_t *arr, int idx) {
function toml_array_kind (line 1928) | char toml_array_kind(const toml_array_t *arr) { return arr->kind; }
function toml_array_type (line 1930) | char toml_array_type(const toml_array_t *arr) {
function toml_array_nelem (line 1940) | int toml_array_nelem(const toml_array_t *arr) { return arr->nitem; }
function toml_table_nkval (line 1946) | int toml_table_nkval(const toml_table_t *tab) { return tab->nkval; }
function toml_table_narr (line 1948) | int toml_table_narr(const toml_table_t *tab) { return tab->narr; }
function toml_table_ntab (line 1950) | int toml_table_ntab(const toml_table_t *tab) { return tab->ntab; }
function toml_array_t (line 1956) | toml_array_t *toml_array_at(const toml_array_t *arr, int idx) {
function toml_table_t (line 1960) | toml_table_t *toml_table_at(const toml_array_t *arr, int idx) {
function toml_rtots (line 1966) | int toml_rtots(toml_raw_t src_, toml_timestamp_t *ret) {
function toml_rtob (line 2055) | int toml_rtob(toml_raw_t src, int *ret_) {
function toml_rtoi (line 2073) | int toml_rtoi(toml_raw_t src, int64_t *ret_) {
function toml_rtod_ex (line 2146) | int toml
Condensed preview — 691 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (6,778K chars).
[
{
"path": ".cirrus.yml",
"chars": 931,
"preview": "FreeBSD_task:\n matrix:\n env:\n SSL: libressl\n matrix:\n freebsd_instance:\n image_family: freebsd-14-3\n "
},
{
"path": ".github/FUNDING.yml",
"chars": 30,
"preview": "open_collective: xrdp-project\n"
},
{
"path": ".github/ISSUE_TEMPLATE/bug_report.yml",
"chars": 4328,
"preview": "name: \"🕷️ Bug report\"\ndescription: Report errors or unexpected behavior\nlabels:\n - \"bug\"\nbody:\n - type: markdown\n a"
},
{
"path": ".github/ISSUE_TEMPLATE/config.yml",
"chars": 218,
"preview": "contact_links:\n - name: Questions\n about: If you are new to xrdp and want to ask community for help, raise it as"
},
{
"path": ".github/workflows/build.yml",
"chars": 9090,
"preview": "name: build and test\non:\n push:\n branches-ignore:\n - \"gh-pages\"\n tags-ignore:\n - \"v0.[0-8]**\"\n pull_re"
},
{
"path": ".github/workflows/coverity.yml",
"chars": 1885,
"preview": "name: Coverity\n\non:\n schedule:\n - cron: \"0 0 * * *\"\n workflow_dispatch:\n\njobs:\n scan:\n name: scan\n runs-on: ub"
},
{
"path": ".github/workflows/release-tarball.yml",
"chars": 1406,
"preview": "name: Generate release tarball\n\non:\n workflow_dispatch:\n inputs:\n tag:\n description: 'Tag to build'\n "
},
{
"path": ".gitignore",
"chars": 1044,
"preview": "*~\n*.a\naclocal.m4\nAUTHORS\nautom4te.cache/\nChangeLog\ncompile\nconfig_ac.h\nconfig_ac-h.in\nconfig.guess\nconfig.log\nconfig.st"
},
{
"path": ".gitmodules",
"chars": 357,
"preview": "[submodule \"librfxcodec\"]\n\tpath = librfxcodec\n\turl = https://github.com/neutrinolabs/librfxcodec.git\n\tbranch = .\n\tignore"
},
{
"path": "COPYING",
"chars": 10388,
"preview": "Apache License, Version 2.0\n\nVersion 2.0, January 2004\n\nhttp://www.apache.org/licenses/\n\nTERMS AND CONDITIONS FOR USE, R"
},
{
"path": "Makefile.am",
"chars": 1533,
"preview": "ACLOCAL_AMFLAGS = -I m4\n# Redefine the localstatedir to stop github CI defaulting to\n# something like /home/runner/work/"
},
{
"path": "NEWS.md",
"chars": 30409,
"preview": "# Release notes for xrdp v0.9.19 (2022/03/17)\n\n## General announcements\n* Running xrdp and xrdp-sesman on separate hosts"
},
{
"path": "README.md",
"chars": 5588,
"preview": "[](https://github.com/neutrin"
},
{
"path": "SECURITY.md",
"chars": 608,
"preview": "# Security Policy\n\n## Reporting a Vulnerability\n\nPlease DO NOT report any security issues to public GitHub issue.\n\nIf yo"
},
{
"path": "astyle_config.as",
"chars": 1532,
"preview": "\n# detached brackets\n--style=allman\n\n# 4 spaces, no tabs\n--indent=spaces=4\n\n# for C++ files only\n--indent-classes\n\n# Ind"
},
{
"path": "bootstrap",
"chars": 670,
"preview": "#!/bin/sh\n\ncommand -v autoconf\nif ! test $? -eq 0\nthen\n echo \"error, install autoconf\"\n exit 1\nfi\n\ncommand -v automake"
},
{
"path": "coding_style.md",
"chars": 3153,
"preview": "XRdp Coding Style\n=================\n\nThe coding style used by XRdp is described below.\n\nThe XRdp project uses astyle (ar"
},
{
"path": "common/Makefile.am",
"chars": 1611,
"preview": "if XRDP_PIXMAN\n PIXMAN_SOURCES =\nelse\n PIXMAN_SOURCES = pixman-region16.c pixman-region.h\nendif\n\nEXTRA_DIST = pixman-r"
},
{
"path": "common/arch.h",
"chars": 4414,
"preview": "/**\n * xrdp: A Remote Desktop Protocol server.\n *\n * Copyright (C) Jay Sorg 2004-2014\n *\n * Licensed under the Apache Li"
},
{
"path": "common/base64.c",
"chars": 7201,
"preview": "/**\n * Copyright (C) 2022 Matt Burt, all xrdp contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"Li"
},
{
"path": "common/base64.h",
"chars": 3027,
"preview": "/**\n * Copyright (C) 2021 Koichiro Iwao, all xrdp contributors\n *\n * Licensed under the Apache License, Version 2.0 (the"
},
{
"path": "common/channel_defs.h",
"chars": 2027,
"preview": "/**\n * Copyright (C) 2024 Matt Burt, all xrdp contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"Li"
},
{
"path": "common/defines.h",
"chars": 3743,
"preview": "/**\n * xrdp: A Remote Desktop Protocol server.\n *\n * Copyright (C) Jay Sorg 2004-2014\n *\n * Licensed under the Apache Li"
},
{
"path": "common/fifo.c",
"chars": 7256,
"preview": "/**\n * xrdp: A Remote Desktop Protocol server.\n *\n * Copyright (C) Matt Burt 2023\n *\n * Licensed under the Apache Licens"
},
{
"path": "common/fifo.h",
"chars": 2508,
"preview": "/**\n * xrdp: A Remote Desktop Protocol server.\n *\n * Copyright (C) Laxmikant Rashinkar 2004-2014\n *\n * Licensed under th"
},
{
"path": "common/file.c",
"chars": 9623,
"preview": "/**\n * xrdp: A Remote Desktop Protocol server.\n *\n * Copyright (C) Jay Sorg 2004-2014\n *\n * Licensed under the Apache Li"
},
{
"path": "common/file.h",
"chars": 1118,
"preview": "/**\n * xrdp: A Remote Desktop Protocol server.\n *\n * Copyright (C) Jay Sorg 2004-2014\n *\n * Licensed under the Apache Li"
},
{
"path": "common/guid.c",
"chars": 2499,
"preview": "/**\n * xrdp: A Remote Desktop Protocol server.\n *\n * Copyright (C) 2021 Matt Burt, all xrdp contributors\n *\n * Licensed "
},
{
"path": "common/guid.h",
"chars": 2353,
"preview": "/**\n * xrdp: A Remote Desktop Protocol server.\n *\n * Copyright (C) Jay Sorg 2004-2021\n *\n * Licensed under the Apache Li"
},
{
"path": "common/list.c",
"chars": 8637,
"preview": "/**\n * xrdp: A Remote Desktop Protocol server.\n *\n * Copyright (C) Jay Sorg 2004-2014\n *\n * Licensed under the Apache Li"
},
{
"path": "common/list.h",
"chars": 4617,
"preview": "/**\n * xrdp: A Remote Desktop Protocol server.\n *\n * Copyright (C) Jay Sorg 2004-2014\n *\n * Licensed under the Apache Li"
},
{
"path": "common/list16.c",
"chars": 4821,
"preview": "/**\n * xrdp: A Remote Desktop Protocol server.\n *\n * Copyright (C) Jay Sorg 2004-2014\n *\n * Licensed under the Apache Li"
},
{
"path": "common/list16.h",
"chars": 1574,
"preview": "/**\n * xrdp: A Remote Desktop Protocol server.\n *\n * Copyright (C) Jay Sorg 2004-2014\n *\n * Licensed under the Apache Li"
},
{
"path": "common/log.c",
"chars": 31784,
"preview": "/**\n * xrdp: A Remote Desktop Protocol server.\n *\n * Copyright (C) Jay Sorg 2004-2014\n *\n * Licensed under the Apache Li"
},
{
"path": "common/log.h",
"chars": 13989,
"preview": "/**\n * xrdp: A Remote Desktop Protocol server.\n *\n * Copyright (C) Jay Sorg 2004-2014\n *\n * Licensed under the Apache Li"
},
{
"path": "common/ms-erref.h",
"chars": 1339,
"preview": "/**\n * xrdp: A Remote Desktop Protocol server.\n *\n * MS-ERREF : Definitions from [MS-ERREF]\n *\n * Licensed under the Apa"
},
{
"path": "common/ms-fscc.h",
"chars": 2438,
"preview": "/**\n * xrdp: A Remote Desktop Protocol server.\n *\n * MS-FSCC : Definitions from [MS-FSCC]\n *\n * Licensed under the Apach"
},
{
"path": "common/ms-rdpbcgr.h",
"chars": 24884,
"preview": "/**\n * xrdp: A Remote Desktop Protocol server.\n *\n * MS-RDPBCGR : Definitions from [MS-RDPBCGR]\n *\n * Licensed under the"
},
{
"path": "common/ms-rdpeclip.h",
"chars": 3413,
"preview": "/**\n * xrdp: A Remote Desktop Protocol server.\n *\n * MS-RDPECLIP : Definitions from [MS-RDPECLIP]\n *\n * Licensed under t"
},
{
"path": "common/ms-rdpedisp.h",
"chars": 1792,
"preview": "/**\n * xrdp: A Remote Desktop Protocol server.\n *\n * MS-RDPEDISP : Definitions from [MS-RDPEDISP]\n *\n * Licensed under t"
},
{
"path": "common/ms-rdpefs.h",
"chars": 4741,
"preview": "/**\n * xrdp: A Remote Desktop Protocol server.\n *\n * MS-RDPEFS : Definitions from [MS-RDPEFS]\n *\n * Licensed under the A"
},
{
"path": "common/ms-rdpegdi.h",
"chars": 2174,
"preview": "/**\n * xrdp: A Remote Desktop Protocol server.\n *\n * MS-RDPEGDI : Definitions from [MS-RDPEGDI]\n *\n * Licensed under the"
},
{
"path": "common/ms-rdpele.h",
"chars": 1401,
"preview": "/**\n * xrdp: A Remote Desktop Protocol server.\n *\n * MS-RDPELE : Definitions from [MS-RDPELE]\n *\n * Licensed under the A"
},
{
"path": "common/ms-rdperp.h",
"chars": 1029,
"preview": "/**\n * xrdp: A Remote Desktop Protocol server.\n *\n * MS-RDPERP : Definitions from [MS-RDPERP]\n *\n * Licensed under the A"
},
{
"path": "common/ms-smb2.h",
"chars": 2835,
"preview": "/**\n * xrdp: A Remote Desktop Protocol server.\n *\n * MS-SMB2 : Definitions from [MS-SMB2]\n *\n * Licensed under the Apach"
},
{
"path": "common/os_calls.c",
"chars": 103987,
"preview": "/**\n * xrdp: A Remote Desktop Protocol server.\n *\n * Copyright (C) Jay Sorg 2004-2014\n *\n * Licensed under the Apache Li"
},
{
"path": "common/os_calls.h",
"chars": 19404,
"preview": "/**\n * xrdp: A Remote Desktop Protocol server.\n *\n * Copyright (C) Jay Sorg 2004-2014\n *\n * Licensed under the Apache Li"
},
{
"path": "common/parse.c",
"chars": 8931,
"preview": "/**\n * xrdp: A Remote Desktop Protocol server.\n *\n * Copyright (C) 2021 Matt Burt\n *\n * Licensed under the Apache Licens"
},
{
"path": "common/parse.h",
"chars": 22616,
"preview": "/**\n * xrdp: A Remote Desktop Protocol server.\n *\n * Copyright (C) Jay Sorg 2004-2014\n *\n * Licensed under the Apache Li"
},
{
"path": "common/pixman-region.c",
"chars": 54493,
"preview": "/*\n * Copyright 1987, 1988, 1989, 1998 The Open Group\n *\n * Permission to use, copy, modify, distribute, and sell this "
},
{
"path": "common/pixman-region.h",
"chars": 2445,
"preview": "/**\n * xrdp: A Remote Desktop Protocol server.\n *\n * Copyright (C) Jay Sorg 2016\n *\n * Licensed under the Apache License"
},
{
"path": "common/pixman-region16.c",
"chars": 2329,
"preview": "/*\n * Copyright © 2008 Red Hat, Inc.\n *\n * Permission to use, copy, modify, distribute, and sell this software\n * and it"
},
{
"path": "common/rail.h",
"chars": 4684,
"preview": "/**\n * xrdp: A Remote Desktop Protocol server.\n *\n * Copyright (C) Jay Sorg 2012-2014\n *\n * Licensed under the Apache Li"
},
{
"path": "common/scancode.c",
"chars": 18383,
"preview": "/**\n * Copyright (C) 2022 Matt Burt, all xrdp contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"Li"
},
{
"path": "common/scancode.h",
"chars": 5399,
"preview": "/**\n * Copyright (C) 2024 Matt Burt, all xrdp contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"Li"
},
{
"path": "common/set_int.c",
"chars": 5323,
"preview": "/**\n * xrdp: A Remote Desktop Protocol server.\n *\n * Copyright (C) Jay Sorg 2004-2021\n *\n * Licensed under the Apache Li"
},
{
"path": "common/set_int.h",
"chars": 2521,
"preview": "/**\n * xrdp: A Remote Desktop Protocol server.\n *\n * Copyright (C) Jay Sorg 2004-2021\n *\n * Licensed under the Apache Li"
},
{
"path": "common/ssl_calls.c",
"chars": 42740,
"preview": "/**\n * xrdp: A Remote Desktop Protocol server.\n *\n * Copyright (C) Jay Sorg 2004-2014\n * Copyright (C) Idan Freiberg 201"
},
{
"path": "common/ssl_calls.h",
"chars": 3449,
"preview": "/**\n * xrdp: A Remote Desktop Protocol server.\n *\n * Copyright (C) Jay Sorg 2004-2014\n * Copyright (C) Idan Freiberg 201"
},
{
"path": "common/string_calls.c",
"chars": 38430,
"preview": "/**\n * xrdp: A Remote Desktop Protocol server.\n *\n * Copyright (C) Jay Sorg 2004-2020\n *\n * Licensed under the Apache Li"
},
{
"path": "common/string_calls.h",
"chars": 14464,
"preview": "/**\n * xrdp: A Remote Desktop Protocol server.\n *\n * Copyright (C) Jay Sorg 2004-2020\n *\n * Licensed under the Apache Li"
},
{
"path": "common/thread_calls.c",
"chars": 5251,
"preview": "/**\n * xrdp: A Remote Desktop Protocol server.\n *\n * Copyright (C) Jay Sorg 2004-2014\n *\n * Licensed under the Apache Li"
},
{
"path": "common/thread_calls.h",
"chars": 1144,
"preview": "/**\n * xrdp: A Remote Desktop Protocol server.\n *\n * Copyright (C) Jay Sorg 2004-2014\n *\n * Licensed under the Apache Li"
},
{
"path": "common/timers.c",
"chars": 2523,
"preview": "/**\n * xrdp: A Remote Desktop Protocol server.\n *\n * Copyright (C) Jay Sorg 2004-2025\n *\n * Licensed under the Apache Li"
},
{
"path": "common/timers.h",
"chars": 2102,
"preview": "/**\n * xrdp: A Remote Desktop Protocol server.\n *\n * Copyright (C) Jay Sorg 2004-2025\n *\n * Licensed under the Apache Li"
},
{
"path": "common/trans.c",
"chars": 28134,
"preview": "/**\n * xrdp: A Remote Desktop Protocol server.\n *\n * Copyright (C) Jay Sorg 2004-2014\n *\n * Licensed under the Apache Li"
},
{
"path": "common/trans.h",
"chars": 5918,
"preview": "/**\n * xrdp: A Remote Desktop Protocol server.\n *\n * Copyright (C) Jay Sorg 2004-2014\n *\n * Licensed under the Apache Li"
},
{
"path": "common/unicode_defines.h",
"chars": 3075,
"preview": "/**\n * xrdp: A Remote Desktop Protocol server.\n *\n * Copyright (C) Jay Sorg 2004-2023\n *\n * Licensed under the Apache Li"
},
{
"path": "common/xrdp_client_info.h",
"chars": 8243,
"preview": "/**\n * xrdp: A Remote Desktop Protocol server.\n *\n * Copyright (C) Jay Sorg 2004-2014\n *\n * Licensed under the Apache Li"
},
{
"path": "common/xrdp_constants.h",
"chars": 12075,
"preview": "/**\n * xrdp: A Remote Desktop Protocol server.\n * Miscellaneous protocol constants\n *\n * Copyright (C) Matthew Chapman 1"
},
{
"path": "common/xrdp_rail.h",
"chars": 4684,
"preview": "/**\n * xrdp: A Remote Desktop Protocol server.\n *\n * Copyright (C) Jay Sorg 2012-2014\n *\n * Licensed under the Apache Li"
},
{
"path": "common/xrdp_scancode_defs.h",
"chars": 2690,
"preview": "/**\n * Copyright (C) 2024 Matt Burt, all xrdp contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"Li"
},
{
"path": "common/xrdp_sockets.h",
"chars": 2788,
"preview": "/**\n * xrdp: A Remote Desktop Protocol server.\n *\n * Copyright (C) Jay Sorg 2004-2014\n *\n * Licensed under the Apache Li"
},
{
"path": "common/xup_client_info.h",
"chars": 2377,
"preview": "/**\n * xrdp: A Remote Desktop Protocol server.\n *\n * Copyright (C) Jay Sorg 2004-2025\n *\n * Licensed under the Apache Li"
},
{
"path": "configure.ac",
"chars": 27451,
"preview": "# Process this file with autoconf to produce a configure script\n\nAC_PREREQ([2.69])\nAC_INIT([xrdp], [0.10.80], [xrdp-deve"
},
{
"path": "docs/Makefile.am",
"chars": 19,
"preview": "\nSUBDIRS = \\\n man\n"
},
{
"path": "docs/man/.gitignore",
"chars": 8,
"preview": "*.[1-8]\n"
},
{
"path": "docs/man/Makefile.am",
"chars": 1022,
"preview": "man_MANS = \\\n xrdp-dis.1 \\\n gfx.toml.5 \\\n sesman.ini.5 \\\n xrdp.ini.5 \\\n xrdp-km.toml.5 \\\n xrdp.8 \\\n xrdp-chansrv."
},
{
"path": "docs/man/gfx.toml.5.in",
"chars": 5757,
"preview": ".\\\"\n.TH \"gfx.toml\" \"8\" \"@PACKAGE_VERSION@\" \"xrdp team\" \"\"\n.SH \"NAME\"\n\\fBgfx.toml\\fR \\- Configuration file for xrdp(8) gr"
},
{
"path": "docs/man/sesman.ini.5.in",
"chars": 17797,
"preview": ".\\\"\n.TH \"sesman.ini\" \"5\" \"@PACKAGE_VERSION@\" \"xrdp team\" \"\"\n.SH \"NAME\"\n\\fBsesman.ini\\fR \\- Configuration file for \\fBxrd"
},
{
"path": "docs/man/xrdp-chansrv.8.in",
"chars": 1501,
"preview": ".TH \"xrdp\\-chansrv\" \"8\" \"@PACKAGE_VERSION@\" \"xrdp team\" \"\"\n.SH \"NAME\"\n\\fBxrdp\\-chansrv\\fR \\- \\fBxrdp\\fR channel server\n\n"
},
{
"path": "docs/man/xrdp-dis.1.in",
"chars": 535,
"preview": ".TH \"xrdp-dis\" \"1\" \"@PACKAGE_VERSION@\" \"xrdp team\"\n.SH NAME\nxrdp\\-dis \\- xrdp disconnect utility\n\n.SH SYNOPSIS\n.B xrdp\\-"
},
{
"path": "docs/man/xrdp-dumpfv1.8.in",
"chars": 1708,
"preview": ".TH \"xrdp-dumpfv1\" \"8\" \"@PACKAGE_VERSION@\" \"xrdp team\"\n.SH NAME\nxrdp\\-dumpfv1 \\- Display content of .fv1 font files\n\n.SH"
},
{
"path": "docs/man/xrdp-genkeymap.8.in",
"chars": 1907,
"preview": ".TH \"xrdp\\-genkeymap\" \"8\" \"@PACKAGE_VERSION@\" \"xrdp team\" \"\"\n.de URL\n. \\\\$2 \\(laURL: \\\\$1 \\(ra\\\\$3\n..\n.if \\n[.g] .mso ww"
},
{
"path": "docs/man/xrdp-keygen.8.in",
"chars": 1392,
"preview": ".\\\" Hey, EMACS: -*- nroff -*-\n.\\\"-\n.\\\" Copyright © 2007, 2008 Vincent Bernat <berna"
},
{
"path": "docs/man/xrdp-km.toml.5.in",
"chars": 3373,
"preview": ".\\\"\n.TH \"xrdp-km.toml\" \"5\" \"@PACKAGE_VERSION@\" \"xrdp team\" \"\"\n.SH \"NAME\"\n\\fBxrdp-km.toml\\fR \\- \\fBxrdp\\fP key mapping fi"
},
{
"path": "docs/man/xrdp-mkfv1.8.in",
"chars": 2368,
"preview": ".TH \"xrdp-mkfv1\" \"8\" \"@PACKAGE_VERSION@\" \"xrdp team\"\n.SH NAME\nxrdp\\-mkfv1 \\- Create .fv1 font files from other font file"
},
{
"path": "docs/man/xrdp-sesadmin.8.in",
"chars": 1198,
"preview": ".TH \"xrdp-sesadmin\" \"8\" \"@PACKAGE_VERSION@\" \"xrdp team\"\n.SH NAME\nxrdp\\-sesadmin \\- console XRDP sessions administration "
},
{
"path": "docs/man/xrdp-sesman.8.in",
"chars": 2047,
"preview": ".TH \"xrdp\\-sesman\" \"8\" \"@PACKAGE_VERSION@\" \"xrdp team\" \"\"\n.SH \"NAME\"\nxrdp\\-sesman \\- \\fBxrdp\\fR(8) session manager\n\n.SH "
},
{
"path": "docs/man/xrdp-sesrun.8.in",
"chars": 3060,
"preview": ".TH \"xrdp\\-sesrun\" \"8\" \"@PACKAGE_VERSION@\" \"xrdp team\" \"\"\n.SH \"NAME\"\n\\fBxrdp\\-sesrun\\fR \\- \\fBxrdp\\-sesman\\fR(8) session"
},
{
"path": "docs/man/xrdp.8.in",
"chars": 1833,
"preview": ".TH \"xrdp\" \"8\" \"@PACKAGE_VERSION@\" \"xrdp team\" \"\"\n.SH \"NAME\"\n\\fBxrdp\\fR \\- a Remote Desktop Protocol (RDP) server\n\n.SH \""
},
{
"path": "docs/man/xrdp.ini.5.in",
"chars": 18552,
"preview": ".TH \"xrdp.ini\" \"5\" \"@PACKAGE_VERSION@\" \"xrdp team\" \"\"\n.SH \"NAME\"\n\\fBxrdp.ini\\fR \\- Configuration file for \\fBxrdp\\fR(8)\n"
},
{
"path": "fontutils/Makefile.am",
"chars": 512,
"preview": "EXTRA_DIST = windows\n\n# Some programs need freetype2 to build\nif USE_FREETYPE2\n MKFV1 = xrdp-mkfv1\nelse\n MKFV1 =\nendif"
},
{
"path": "fontutils/README_fv1.txt",
"chars": 3243,
"preview": "The fv1 font format has the following characteristics:-\n\n1) Bitmap fonts (i.e. pixels are on or off)\n2) 96 DPI is assume"
},
{
"path": "fontutils/dumpfv1.c",
"chars": 11621,
"preview": "/**\n * xrdp: A Remote Desktop Protocol server.\n *\n * Copyright (C) Jay Sorg 2004-2022\n *\n * Licensed under the Apache Li"
},
{
"path": "fontutils/fv1.c",
"chars": 9955,
"preview": "/**\n * xrdp: A Remote Desktop Protocol server.\n *\n * Copyright (C) Jay Sorg 2004-2022\n *\n * Licensed under the Apache Li"
},
{
"path": "fontutils/fv1.h",
"chars": 2589,
"preview": "/**\n * xrdp: A Remote Desktop Protocol server.\n *\n * Copyright (C) Jay Sorg 2004-2022\n *\n * Licensed under the Apache Li"
},
{
"path": "fontutils/mkfv1.c",
"chars": 17501,
"preview": "/**\n * xrdp: A Remote Desktop Protocol server.\n *\n * Copyright (C) Jay Sorg 2004-2012\n *\n * Licensed under the Apache Li"
},
{
"path": "fontutils/windows/.gitignore",
"chars": 10,
"preview": "!Makefile\n"
},
{
"path": "fontutils/windows/Makefile",
"chars": 314,
"preview": "\nOBJS = fontdump.obj os_calls.obj\n\n#CFLAGS = -O2 -I../common\nCFLAGS = -O2 -I../common -DUNICODE -D_UNICODE\nLDFLAGS = -W "
},
{
"path": "fontutils/windows/fontdump.c",
"chars": 14906,
"preview": "/**\n * xrdp: A Remote Desktop Protocol server.\n *\n * Copyright (C) Jay Sorg 2004-2012\n *\n * Licensed under the Apache Li"
},
{
"path": "genkeymap/Makefile.am",
"chars": 397,
"preview": "EXTRA_DIST = \\\n dump-keymaps.sh \\\n readme.txt\n\nAM_CPPFLAGS = \\\n -DXRDP_CFG_PATH=\\\"${sysconfdir}/${sysconfsubdir}\\\" \\\n"
},
{
"path": "genkeymap/dump-keymaps.sh",
"chars": 4124,
"preview": "#!/bin/sh\n\n# Use evdev rules to obtain the mappings\nXKB_RULES=evdev\n\n# -------------------------------------------------"
},
{
"path": "genkeymap/genkeymap.c",
"chars": 13061,
"preview": "/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 4; tab-width: 4 -*- */\n/*\n * genkeymap.c\n * Copyright (C) Ádám Wall"
},
{
"path": "genkeymap/readme.txt",
"chars": 1548,
"preview": "Keymap file description\n-----------------------\n\nThe keymap files are used by the xrdp login screen, and also when\nsendi"
},
{
"path": "instfiles/Makefile.am",
"chars": 2228,
"preview": "EXTRA_DIST = \\\n keymap-names.txt \\\n xrdp-sesman.service.in \\\n xrdp.service.in\n\n#\n# substitute directories in servi"
},
{
"path": "instfiles/default/Makefile.am",
"chars": 68,
"preview": "startscriptdir = $(sysconfdir)/default\ndist_startscript_DATA = xrdp\n"
},
{
"path": "instfiles/default/xrdp",
"chars": 172,
"preview": "# Do we need to start sesman ?\nSESMAN_START=yes\n# Do we restart xrdp on upgrade ? If not set to no, any xrdp session wil"
},
{
"path": "instfiles/init.d/Makefile.am",
"chars": 70,
"preview": "startscriptdir = $(sysconfdir)/init.d\ndist_startscript_SCRIPTS = xrdp\n"
},
{
"path": "instfiles/init.d/xrdp",
"chars": 5184,
"preview": "#!/bin/sh -e\n#\n# start/stop xrdp and sesman daemons\n#\n### BEGIN INIT INFO\n# Provides: xrdp\n# Required-Start: "
},
{
"path": "instfiles/keymap-names.txt",
"chars": 3687,
"preview": "\n0x00000436 af Afrikaans\n0x0000041C sq Albanian\n0x00000001 ar Arabic\n0x00000401 ar-sa Arabic (Saudi Arabia)\n0x00000801 a"
},
{
"path": "instfiles/km-00000405.toml",
"chars": 25649,
"preview": "# Created by xrdp-genkeymap V0.10.80\n# Key code set: evdev+aliases(qwertz)\n# setxkbmap -rules evdev -model pc105 -layout"
},
{
"path": "instfiles/km-00000406.toml",
"chars": 25733,
"preview": "# Created by xrdp-genkeymap V0.10.80\n# Key code set: evdev+aliases(qwerty)\n# setxkbmap -rules evdev -model pc105 -layout"
},
{
"path": "instfiles/km-00000407.ini",
"chars": 15823,
"preview": "[noshift]\nKey8=65406:0\nKey9=65307:27\nKey10=49:49\nKey11=50:50\nKey12=51:51\nKey13=52:52\nKey14=53:53\nKey15=54:54\nKey16=55:55"
},
{
"path": "instfiles/km-00000407.toml",
"chars": 25931,
"preview": "# Created by xrdp-genkeymap V0.10.80\n# Key code set: evdev+aliases(qwertz)\n# setxkbmap -rules evdev -model pc104 -layout"
},
{
"path": "instfiles/km-00000409.toml",
"chars": 24435,
"preview": "# Created by xrdp-genkeymap V0.10.80\n# Key code set: evdev+aliases(qwerty)\n# setxkbmap -rules evdev -model pc104 -layout"
},
{
"path": "instfiles/km-0000040a.toml",
"chars": 25686,
"preview": "# Created by xrdp-genkeymap V0.10.80\n# Key code set: evdev+aliases(qwerty)\n# setxkbmap -rules evdev -model pc105 -layout"
},
{
"path": "instfiles/km-0000040b.toml",
"chars": 25159,
"preview": "# Created by xrdp-genkeymap V0.10.80\n# Key code set: evdev+aliases(qwerty)\n# setxkbmap -rules evdev -model pc105 -layout"
},
{
"path": "instfiles/km-0000040c.toml",
"chars": 25629,
"preview": "# Created by xrdp-genkeymap V0.10.80\n# Key code set: evdev+aliases(azerty)\n# setxkbmap -rules evdev -model pc105 -layout"
},
{
"path": "instfiles/km-0000040e.toml",
"chars": 25737,
"preview": "# Created by xrdp-genkeymap V0.10.80\n# Key code set: evdev+aliases(qwertz)\n# setxkbmap -rules evdev -model pc105 -layout"
},
{
"path": "instfiles/km-00000410.ini",
"chars": 15682,
"preview": "[noshift]\nKey8=65406:0\nKey9=65307:27\nKey10=49:49\nKey11=50:50\nKey12=51:51\nKey13=52:52\nKey14=53:53\nKey15=54:54\nKey16=55:55"
},
{
"path": "instfiles/km-00000410.toml",
"chars": 25707,
"preview": "# Created by xrdp-genkeymap V0.10.80\n# Key code set: evdev+aliases(qwerty)\n# setxkbmap -rules evdev -model pc104 -layout"
},
{
"path": "instfiles/km-00000411.ini",
"chars": 15462,
"preview": "[noshift]\nKey8=65406:0\nKey9=65307:27\nKey10=49:49\nKey11=50:50\nKey12=51:51\nKey13=52:52\nKey14=53:53\nKey15=54:54\nKey16=55:55"
},
{
"path": "instfiles/km-00000411.toml",
"chars": 24873,
"preview": "# Created by xrdp-genkeymap V0.10.80\n# Key code set: evdev+aliases(qwerty)\n# setxkbmap -rules evdev -model pc105 -layout"
},
{
"path": "instfiles/km-00000412.toml",
"chars": 24435,
"preview": "# Created by xrdp-genkeymap V0.10.80\n# Key code set: evdev+aliases(qwerty)\n# setxkbmap -rules evdev -model pc105 -layout"
},
{
"path": "instfiles/km-00000414.toml",
"chars": 25467,
"preview": "# Created by xrdp-genkeymap V0.10.80\n# Key code set: evdev+aliases(qwerty)\n# setxkbmap -rules evdev -model pc105 -layout"
},
{
"path": "instfiles/km-00000415.ini",
"chars": 15812,
"preview": "[noshift]\nKey8=65406:0\nKey9=65307:27\nKey10=49:49\nKey11=50:50\nKey12=51:51\nKey13=52:52\nKey14=53:53\nKey15=54:54\nKey16=55:55"
},
{
"path": "instfiles/km-00000415.toml",
"chars": 25815,
"preview": "# Created by xrdp-genkeymap V0.10.80\n# Key code set: evdev+aliases(qwerty)\n# setxkbmap -rules evdev -model pc104 -layout"
},
{
"path": "instfiles/km-00000416.toml",
"chars": 25875,
"preview": "# Created by xrdp-genkeymap V0.10.80\n# Key code set: evdev+aliases(qwerty)\n# setxkbmap -rules evdev -model pc105 -layout"
},
{
"path": "instfiles/km-00000419.ini",
"chars": 16182,
"preview": "[noshift]\nKey8=65406:0\nKey9=65307:27\nKey10=49:49\nKey11=50:50\nKey12=51:51\nKey13=52:52\nKey14=53:53\nKey15=54:54\nKey16=55:55"
},
{
"path": "instfiles/km-00000419.toml",
"chars": 27255,
"preview": "# Created by xrdp-genkeymap V0.10.80\n# Key code set: evdev+aliases(qwerty)\n# setxkbmap -rules evdev -model pc104 -layout"
},
{
"path": "instfiles/km-0000041d.ini",
"chars": 15694,
"preview": "[noshift]\nKey8=65406:0\nKey9=65307:27\nKey10=49:49\nKey11=50:50\nKey12=51:51\nKey13=52:52\nKey14=53:53\nKey15=54:54\nKey16=55:55"
},
{
"path": "instfiles/km-0000041d.toml",
"chars": 25689,
"preview": "# Created by xrdp-genkeymap V0.10.80\n# Key code set: evdev+aliases(qwerty)\n# setxkbmap -rules evdev -model pc104 -layout"
},
{
"path": "instfiles/km-00000424.toml",
"chars": 25763,
"preview": "# Created by xrdp-genkeymap V0.10.80\n# Key code set: evdev+aliases(qwertz)\n# setxkbmap -rules evdev -model pc104 -layout"
},
{
"path": "instfiles/km-00000426.toml",
"chars": 25164,
"preview": "# Created by xrdp-genkeymap V0.10.80\n# Key code set: evdev+aliases(qwerty)\n# setxkbmap -rules evdev -model pc104 -layout"
},
{
"path": "instfiles/km-00000807.toml",
"chars": 25627,
"preview": "# Created by xrdp-genkeymap V0.10.80\n# Key code set: evdev+aliases(qwertz)\n# setxkbmap -rules evdev -model pc105 -layout"
},
{
"path": "instfiles/km-00000809.ini",
"chars": 15672,
"preview": "[noshift]\nKey8=65406:0\nKey9=65307:27\nKey10=49:49\nKey11=50:50\nKey12=51:51\nKey13=52:52\nKey14=53:53\nKey15=54:54\nKey16=55:55"
},
{
"path": "instfiles/km-00000809.toml",
"chars": 25671,
"preview": "# Created by xrdp-genkeymap V0.10.80\n# Key code set: evdev+aliases(qwerty)\n# setxkbmap -rules evdev -model pc105 -layout"
},
{
"path": "instfiles/km-0000080a.toml",
"chars": 25682,
"preview": "# Created by xrdp-genkeymap V0.10.80\n# Key code set: evdev+aliases(qwerty)\n# setxkbmap -rules evdev -model pc105 -layout"
},
{
"path": "instfiles/km-0000080c.toml",
"chars": 26029,
"preview": "# Created by xrdp-genkeymap V0.10.80\n# Key code set: evdev+aliases(azerty)\n# setxkbmap -rules evdev -model pc105 -layout"
},
{
"path": "instfiles/km-00000813.toml",
"chars": 25677,
"preview": "# Created by xrdp-genkeymap V0.10.80\n# Key code set: evdev+aliases(azerty)\n# setxkbmap -rules evdev -model pc105 -layout"
},
{
"path": "instfiles/km-00000816.ini",
"chars": 15704,
"preview": "[noshift]\nKey8=65406:0\nKey9=65307:27\nKey10=49:49\nKey11=50:50\nKey12=51:51\nKey13=52:52\nKey14=53:53\nKey15=54:54\nKey16=55:55"
},
{
"path": "instfiles/km-00000816.toml",
"chars": 25735,
"preview": "# Created by xrdp-genkeymap V0.10.80\n# Key code set: evdev+aliases(qwerty)\n# setxkbmap -rules evdev -model pc104 -layout"
},
{
"path": "instfiles/km-0000100c.toml",
"chars": 25639,
"preview": "# Created by xrdp-genkeymap V0.10.80\n# Key code set: evdev+aliases(qwertz)\n# setxkbmap -rules evdev -model pc105 -layout"
},
{
"path": "instfiles/km-00010409.ini",
"chars": 15426,
"preview": "[noshift]\nKey8=65406:0\nKey9=65307:27\nKey10=49:49\nKey11=50:50\nKey12=51:51\nKey13=52:52\nKey14=53:53\nKey15=54:54\nKey16=55:55"
},
{
"path": "instfiles/km-00010409.toml",
"chars": 24629,
"preview": "# Created by xrdp-genkeymap V0.10.80\n# Key code set: evdev+aliases(qwerty)\n# setxkbmap -rules evdev -model pc104 -layout"
},
{
"path": "instfiles/km-00010426.toml",
"chars": 25311,
"preview": "# Created by xrdp-genkeymap V0.10.80\n# Key code set: evdev+aliases(qwerty)\n# setxkbmap -rules evdev -model pc104 -layout"
},
{
"path": "instfiles/km-00060409.toml",
"chars": 13231,
"preview": "# Created by xrdp-genkeymap V0.10.80\n# Key code set: evdev+aliases(qwerty)\n# setxkbmap -rules evdev -model pc104 -layout"
},
{
"path": "instfiles/km-19360409.ini",
"chars": 16696,
"preview": "[noshift]\nKey8=65406:0\nKey9=65307:27\nKey10=38:38\nKey11=91:91\nKey12=123:123\nKey13=125:125\nKey14=40:40\nKey15=61:61\nKey16=4"
},
{
"path": "instfiles/km-19360409.toml",
"chars": 24507,
"preview": "# Created by xrdp-genkeymap V0.10.80\n# Key code set: evdev+aliases(qwerty)\n# setxkbmap -rules evdev -model pc105 -layout"
},
{
"path": "instfiles/pam.d/Makefile.am",
"chars": 523,
"preview": "PAM_FILES = \\\n xrdp-sesman.arch \\\n xrdp-sesman.debian \\\n xrdp-sesman.freebsd \\\n xrdp-sesman.macos \\\n xrdp-sesman.re"
},
{
"path": "instfiles/pam.d/mkpamrules",
"chars": 2122,
"preview": "#!/bin/sh\n\n# Find suitable PAM config file\n\nrules=\"$1\"\nsrcdir=\"$2\"\noutfile=\"$3\"\n\nservice=\"xrdp-sesman\"\npamdir=\"/etc/pam."
},
{
"path": "instfiles/pam.d/xrdp-sesman.arch",
"chars": 507,
"preview": "auth include system-remote-login\n-auth optional pam_gnome_keyring.so\n-auth optional pam_kwallet5.so\n"
},
{
"path": "instfiles/pam.d/xrdp-sesman.debian",
"chars": 607,
"preview": "#%PAM-1.0\nauth required pam_env.so readenv=1\nauth required pam_env.so readenv=1 envfile=/etc/default/locale\n@i"
},
{
"path": "instfiles/pam.d/xrdp-sesman.freebsd",
"chars": 134,
"preview": "#%PAM-1.0\nauth include system\naccount include system\npassword include system\nsession inclu"
},
{
"path": "instfiles/pam.d/xrdp-sesman.macos",
"chars": 576,
"preview": "# xrdp-sesman: auth account password session\n# based on Apple's sshd PAM configuration\nauth optional pam_krb"
},
{
"path": "instfiles/pam.d/xrdp-sesman.redhat",
"chars": 309,
"preview": "#%PAM-1.0\nauth include password-auth\naccount include password-auth\n\n# Set the loginuid process attrib"
},
{
"path": "instfiles/pam.d/xrdp-sesman.suse",
"chars": 317,
"preview": "#%PAM-1.0\nauth include common-auth\naccount include common-account\n\n# Set the loginuid process attribu"
},
{
"path": "instfiles/pam.d/xrdp-sesman.system",
"chars": 315,
"preview": "#%PAM-1.0\nauth include system-auth\naccount include system-auth\npassword include system-auth\n\n#"
},
{
"path": "instfiles/pam.d/xrdp-sesman.unix",
"chars": 400,
"preview": "#%PAM-1.0\n#\n# Really basic authentication set when nothing else is available\n#\n# You may need to edit this to suit your "
},
{
"path": "instfiles/pulse/Makefile.am",
"chars": 77,
"preview": "pulsedir = $(sysconfdir)/$(sysconfsubdir)/pulse\ndist_pulse_DATA = default.pa\n"
},
{
"path": "instfiles/pulse/default.pa",
"chars": 260,
"preview": ".nofail\n.fail\nload-module module-augment-properties\nload-module module-always-sink\n.ifexists module-xrdp-sink.so\nload-mo"
},
{
"path": "instfiles/rc.d/Makefile.am",
"chars": 80,
"preview": "startscriptdir = $(sysconfdir)/rc.d\ndist_startscript_SCRIPTS = xrdp xrdp-sesman\n"
},
{
"path": "instfiles/rc.d/xrdp",
"chars": 2733,
"preview": "#!/bin/sh\n#\n# Copyright (c) 1992-2018 The FreeBSD Project. All rights reserved.\n# Copyright (c) 2015-2018 Koichiro Iwao "
},
{
"path": "instfiles/rc.d/xrdp-sesman",
"chars": 1663,
"preview": "#!/bin/sh\n#\n# Copyright (c) 1992-2015 The FreeBSD Project. All rights reserved.\n# Copyright (c) 2015-2018 Koichiro Iwao "
},
{
"path": "instfiles/xrdp-sesman.service.in",
"chars": 391,
"preview": "[Unit]\nDescription=xrdp session manager\nDocumentation=man:xrdp-sesman(8) man:sesman.ini(5)\nAfter=network.target\nStopWhen"
},
{
"path": "instfiles/xrdp.service.in",
"chars": 708,
"preview": "[Unit]\nDescription=xrdp daemon\nDocumentation=man:xrdp(8) man:xrdp.ini(5)\nRequires=xrdp-sesman.service\nAfter=network-onli"
},
{
"path": "keygen/Makefile.am",
"chars": 1071,
"preview": "EXTRA_DIST = openssl.conf\n\nAM_CPPFLAGS = \\\n -DXRDP_CFG_PATH=\\\"${sysconfdir}/${sysconfsubdir}\\\" \\\n -DXRDP_SBIN_PATH=\\\"$"
},
{
"path": "keygen/keygen.c",
"chars": 19758,
"preview": "/**\n * xrdp: A Remote Desktop Protocol server.\n *\n * Copyright (C) Jay Sorg 2004-2014\n *\n * Licensed under the Apache Li"
},
{
"path": "keygen/openssl.conf",
"chars": 1084,
"preview": "[req]\ndistinguished_name = req_distinguished_name\n# The extensions to add to the self signed cert\nx509_extensions = v3_c"
},
{
"path": "libipm/Doxyfile",
"chars": 110721,
"preview": "# Doxyfile 1.8.17\n\n# This file describes the settings to be used by the documentation system\n# doxygen (www.doxygen.org)"
},
{
"path": "libipm/Makefile.am",
"chars": 537,
"preview": "\nAM_CPPFLAGS = \\\n -DXRDP_SOCKET_ROOT_PATH=\\\"${socketdir}\\\" \\\n -I$(top_srcdir)/common\n\nmodule_LTLIBRARIES = \\\n libipm."
},
{
"path": "libipm/ccp.c",
"chars": 3319,
"preview": "/**\n * xrdp: A Remote Desktop Protocol server.\n *\n * Copyright (C) Jay Sorg 2004-2022, all xrdp contributors\n *\n * Licen"
},
{
"path": "libipm/ccp.h",
"chars": 3711,
"preview": "/**\n * xrdp: A Remote Desktop Protocol server.\n *\n * Copyright (C) Jay Sorg 2004-2025, all xrdp contributors\n *\n * Licen"
},
{
"path": "libipm/ccp_application_types.c",
"chars": 1781,
"preview": "/**\n * xrdp: A Remote Desktop Protocol server.\n *\n * Copyright (C) Jay Sorg 2004-2022, all xrdp contributors\n *\n * Licen"
},
{
"path": "libipm/ccp_application_types.h",
"chars": 1542,
"preview": "/**\n * xrdp: A Remote Desktop Protocol server.\n *\n * Copyright (C) Jay Sorg 2004-2022, all xrdp contributors\n *\n * Licen"
},
{
"path": "libipm/eicp.c",
"chars": 10659,
"preview": "/**\n * xrdp: A Remote Desktop Protocol server.\n *\n * Copyright (C) Jay Sorg 2004-2022, all xrdp contributors\n *\n * Licen"
},
{
"path": "libipm/eicp.h",
"chars": 11473,
"preview": "/**\n * xrdp: A Remote Desktop Protocol server.\n *\n * Copyright (C) Jay Sorg 2004-2022, all xrdp contributors\n *\n * Licen"
},
{
"path": "libipm/ercp.c",
"chars": 9798,
"preview": "/**\n * xrdp: A Remote Desktop Protocol server.\n *\n * Copyright (C) Jay Sorg 2004-2022, all xrdp contributors\n *\n * Licen"
},
{
"path": "libipm/ercp.h",
"chars": 11056,
"preview": "/**\n * xrdp: A Remote Desktop Protocol server.\n *\n * Copyright (C) Jay Sorg 2004-2022, all xrdp contributors\n *\n * Licen"
},
{
"path": "libipm/libipm.c",
"chars": 6831,
"preview": "/**\n * Copyright (C) 2022 Matt Burt, all xrdp contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"Li"
},
{
"path": "libipm/libipm.h",
"chars": 11847,
"preview": "/**\n * Copyright (C) 2022 Matt Burt, all xrdp contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"Li"
},
{
"path": "libipm/libipm_facilities.h",
"chars": 1255,
"preview": "/**\n * Copyright (C) 2022 Matt Burt, all xrdp contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"Li"
},
{
"path": "libipm/libipm_private.h",
"chars": 2324,
"preview": "/**\n * Copyright (C) 2022 Matt Burt, all xrdp contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"Li"
},
{
"path": "libipm/libipm_recv.c",
"chars": 19376,
"preview": "/**\n * Copyright (C) 2022 Matt Burt, all xrdp contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"Li"
},
{
"path": "libipm/libipm_send.c",
"chars": 17464,
"preview": "/**\n * Copyright (C) 2022 Matt Burt, all xrdp contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"Li"
},
{
"path": "libipm/scp.c",
"chars": 25962,
"preview": "/**\n * xrdp: A Remote Desktop Protocol server.\n *\n * Copyright (C) Jay Sorg 2004-2022, all xrdp contributors\n *\n * Licen"
},
{
"path": "libipm/scp.h",
"chars": 17474,
"preview": "/**\n * xrdp: A Remote Desktop Protocol server.\n *\n * Copyright (C) Jay Sorg 2004-2022, all xrdp contributors\n *\n * Licen"
},
{
"path": "libipm/scp_application_types.c",
"chars": 3851,
"preview": "/**\n * xrdp: A Remote Desktop Protocol server.\n *\n * Copyright (C) Jay Sorg 2004-2022, all xrdp contributors\n *\n * Licen"
},
{
"path": "libipm/scp_application_types.h",
"chars": 6016,
"preview": "/**\n * xrdp: A Remote Desktop Protocol server.\n *\n * Copyright (C) Jay Sorg 2004-2022, all xrdp contributors\n *\n * Licen"
},
{
"path": "libipm/scp_sync.c",
"chars": 5671,
"preview": "/**\n * xrdp: A Remote Desktop Protocol server.\n *\n * Copyright (C) Jay Sorg 2004-2022\n *\n * Licensed under the Apache Li"
},
{
"path": "libipm/scp_sync.h",
"chars": 2891,
"preview": "/**\n * xrdp: A Remote Desktop Protocol server.\n *\n * Copyright (C) Jay Sorg 2004-2022, all xrdp contributors\n *\n * Licen"
},
{
"path": "libxrdp/Makefile.am",
"chars": 1188,
"preview": "EXTRA_DIST = \\\n xrdp_surface.c\n\nAM_CPPFLAGS = \\\n -DXRDP_CFG_PATH=\\\"${sysconfdir}/${sysconfsubdir}\\\" \\\n -DXRDP_SBIN_PA"
},
{
"path": "libxrdp/libxrdp.c",
"chars": 83405,
"preview": "/**\n * xrdp: A Remote Desktop Protocol server.\n *\n * Copyright (C) Jay Sorg 2004-2013\n *\n * Licensed under the Apache Li"
},
{
"path": "libxrdp/libxrdp.h",
"chars": 21840,
"preview": "/**\n * xrdp: A Remote Desktop Protocol server.\n *\n * Copyright (C) Jay Sorg 2004-2014\n *\n * Licensed under the Apache Li"
},
{
"path": "libxrdp/libxrdpinc.h",
"chars": 14378,
"preview": "/**\n * xrdp: A Remote Desktop Protocol server.\n *\n * Copyright (C) Jay Sorg 2004-2014\n *\n * Licensed under the Apache Li"
},
{
"path": "libxrdp/xrdp_bitmap32_compress.c",
"chars": 15198,
"preview": "/**\n * xrdp: A Remote Desktop Protocol server.\n *\n * Copyright (C) Jay Sorg 2014\n *\n * Licensed under the Apache License"
},
{
"path": "libxrdp/xrdp_bitmap_compress.c",
"chars": 51254,
"preview": "/**\n * xrdp: A Remote Desktop Protocol server.\n *\n * Copyright (C) Jay Sorg 2004-2014\n *\n * Licensed under the Apache Li"
},
{
"path": "libxrdp/xrdp_caps.c",
"chars": 57799,
"preview": "/**\n * xrdp: A Remote Desktop Protocol server.\n *\n * Copyright (C) Jay Sorg 2004-2014\n * Copyright (C) Idan Freiberg 200"
},
{
"path": "libxrdp/xrdp_channel.c",
"chars": 35652,
"preview": "/**\n * xrdp: A Remote Desktop Protocol server.\n *\n * Copyright (C) Jay Sorg 2006-2013\n *\n * Licensed under the Apache Li"
}
]
// ... and 491 more files (download for full content)
About this extraction
This page contains the full source code of the neutrinolabs/xrdp GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 691 files (6.1 MB), approximately 1.6M tokens, and a symbol index with 5165 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.