Skip to content

Commit 9858b63

Browse files
committed
Merge branch 'master' into multicastvnc
2 parents 2950700 + b686f37 commit 9858b63

57 files changed

Lines changed: 1431 additions & 179 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/ci.yml

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
name: CI
2+
3+
on: [push, pull_request]
4+
5+
jobs:
6+
build:
7+
strategy:
8+
matrix:
9+
os:
10+
- ubuntu-latest
11+
- macos-latest
12+
- windows-latest
13+
cmake_options:
14+
- "-DWITH_OPENSSL=ON -DWITH_GNUTLS=OFF -DWITH_GCRYPT=OFF" # build with OpenSSL
15+
- "-DWITH_OPENSSL=OFF -DWITH_GNUTLS=ON -DWITH_GCRYPT=ON" # build with GnuTLS and Libgrypt
16+
- "-DWITH_OPENSSL=OFF -DWITH_GNUTLS=OFF -DWITH_GCRYPT=OFF" # build without external encryption libraries
17+
- "-DCMAKE_TOOLCHAIN_FILE=../cmake/Toolchain-cross-mingw32-linux.cmake" # crosscompile with MinGW toolchain
18+
include:
19+
- os: macos-latest
20+
macos_cmake_options: "-DOPENSSL_ROOT_DIR=/usr/local/opt/openssl" # set this extra var for OSX
21+
exclude:
22+
- os: macos-latest
23+
cmake_options: "-DCMAKE_TOOLCHAIN_FILE=../cmake/Toolchain-cross-mingw32-linux.cmake" # don't test MinGW from OSX
24+
- os: windows-latest
25+
cmake_options: "-DCMAKE_TOOLCHAIN_FILE=../cmake/Toolchain-cross-mingw32-linux.cmake" # don't test MinGW from OSX
26+
runs-on: ${{ matrix.os }}
27+
steps:
28+
- uses: actions/checkout@v3
29+
- name: Install Ubuntu Build Dependencies
30+
if: ${{ matrix.os == 'ubuntu-latest' }}
31+
run: |
32+
sudo apt update
33+
sudo apt install libsdl2-dev liblzo2-dev libssl-dev gnutls-dev libgcrypt-dev mingw-w64-x86-64-dev binutils-mingw-w64-x86-64 gcc-mingw-w64-x86-64 wine
34+
- name: Install MacOS Build Dependencies
35+
if: ${{ matrix.os == 'macos-latest' }}
36+
run: |
37+
brew update
38+
brew install sdl2 lzo
39+
- name: Build
40+
run: |
41+
mkdir build
42+
cd build
43+
cmake ${{ matrix.cmake_options }} ${{ matrix.macos_cmake_options }} ..
44+
cmake --build .
45+
- name: Prepare Test
46+
if: ${{ matrix.os == 'ubuntu-latest' }} # only ubuntu does crosscompile with MinGW toolchain
47+
run: |
48+
cp /usr/x86_64-w64-mingw32/lib/libwinpthread-1.dll build/test/
49+
- name: Test
50+
run: |
51+
cd build
52+
ctest -C Debug --output-on-failure
53+
fuzzing_build:
54+
runs-on: ubuntu-latest
55+
steps:
56+
- uses: actions/checkout@v3
57+
- name: Install Ubuntu Build Dependencies
58+
run: |
59+
sudo apt update
60+
sudo apt install libsdl2-dev liblzo2-dev libssl-dev gnutls-dev libgcrypt-dev mingw-w64-x86-64-dev binutils-mingw-w64-x86-64 gcc-mingw-w64-x86-64 wine clang
61+
- name: Build
62+
env:
63+
CC: "clang"
64+
LIB_FUZZING_ENGINE: "-fsanitize=fuzzer"
65+
CFLAGS: "-fsanitize=address,fuzzer-no-link -DFUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION=1"
66+
run: |
67+
mkdir build
68+
cd build
69+
cmake ..
70+
cmake --build .

.gitignore

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ examples/simple
3434
examples/simple15
3535
examples/storepasswd
3636
examples/vncev
37+
examples/x11
3738
test/blooptest
3839
test/cargstest
3940
test/copyrecttest
@@ -47,7 +48,6 @@ vncterm/example
4748
/vncterm/linuxvnc
4849
/vncterm/vncommand
4950
CMakeCache.txt
50-
*.cmake
5151
/CMakeFiles
5252
/rfbproto.pdf
5353
/rfbproto.rst

.travis.yml

Lines changed: 0 additions & 40 deletions
This file was deleted.

AUTHORS

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,10 @@ Alexander Tsoy, Albert Astals Cid, Iordan Iordanov, Samuel Mannehed,
4545
Remi Gacogne, Petr Písař, Peter Spiess-Knafl, Kyle Russell, Josef Gajdusek,
4646
Fabien Proriol, Bert van Hall, Benjamin Dürholt, Quentin Buathier,
4747
Fabrice Fontaine, Cédric Georges, Stefan Weil, Rolf Eike Beer, Andreas Weigel,
48-
Gaurav Ujjwal and Tobias Junghans.
48+
Gaurav Ujjwal, Tobias Junghans, Efim Bushmanov, Jonas Ådahl, Andri Yngvason,
49+
Tim Gates, Dinglan Peng, Ryo Ota, Kyle Evans, Kang Lin, Derek Schrock,
50+
Alex Converse, Thorsten Scherer, Marco Fortina, Antenore Gatta, Maxim Devaev
51+
and Maksym Sobolyev.
4952

5053
Probably we forgot quite a few people sending a patch here and there, which
5154
really made a difference. Without those, some obscure bugs still would

CMakeLists.txt

Lines changed: 33 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
cmake_minimum_required(VERSION 3.4)
22

3-
project(LibVNCServer VERSION 0.9.13 LANGUAGES C)
3+
project(LibVNCServer VERSION 0.9.14 LANGUAGES C)
44
include(CheckFunctionExists)
55
include(CheckSymbolExists)
66
include(CheckIncludeFile)
@@ -19,8 +19,8 @@ set(PROJECT_BUGREPORT_PATH "https://github.com/LibVNC/libvncserver/issues")
1919
set(LIBVNCSERVER_DIR ${CMAKE_CURRENT_SOURCE_DIR}/libvncserver)
2020
set(COMMON_DIR ${CMAKE_CURRENT_SOURCE_DIR}/common)
2121
set(LIBVNCCLIENT_DIR ${CMAKE_CURRENT_SOURCE_DIR}/libvncclient)
22-
set(LIBVNCSRVEXAMPLE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/examples)
23-
set(LIBVNCCLIEXAMPLE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/client_examples)
22+
set(LIBVNCSRVEXAMPLE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/examples/server)
23+
set(LIBVNCCLIEXAMPLE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/examples/client)
2424
set(TESTS_DIR ${CMAKE_CURRENT_SOURCE_DIR}/test)
2525
set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON)
2626
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_SOURCE_DIR}/cmake/Modules/")
@@ -59,6 +59,7 @@ option(WITH_24BPP "Allow 24 bpp" ON)
5959
option(WITH_IPv6 "Enable IPv6 Support" ON)
6060
option(WITH_WEBSOCKETS "Build with websockets support" ON)
6161
option(WITH_SASL "Build with SASL support" ON)
62+
option(WITH_XCB "Build with XCB support" ON)
6263
option(WITH_EXAMPLES "Build examples" ON)
6364
option(WITH_TESTS "Build tests" ON)
6465

@@ -71,6 +72,10 @@ if(WITH_LZO)
7172
find_package(LZO)
7273
endif()
7374

75+
if(WITH_XCB)
76+
find_package(X11) # Need CMake 3.24.0 to find XCB libraries. see https://cmake.org/cmake/help/v3.24/module/FindX11.html
77+
endif()
78+
7479
if(WITH_JPEG)
7580
find_package(JPEG)
7681
if(JPEG_FOUND)
@@ -372,6 +377,7 @@ set(LIBVNCSERVER_SOURCES
372377
${LIBVNCSERVER_DIR}/draw.c
373378
${LIBVNCSERVER_DIR}/selbox.c
374379
${COMMON_DIR}/vncauth.c
380+
${COMMON_DIR}/sockets.c
375381
${LIBVNCSERVER_DIR}/cargs.c
376382
${LIBVNCSERVER_DIR}/ultra.c
377383
${LIBVNCSERVER_DIR}/scale.c
@@ -386,6 +392,7 @@ set(LIBVNCCLIENT_SOURCES
386392
${LIBVNCCLIENT_DIR}/sockets.c
387393
${LIBVNCCLIENT_DIR}/vncviewer.c
388394
${COMMON_DIR}/ghpringbuf.c
395+
${COMMON_DIR}/sockets.c
389396
${CRYPTO_SOURCES}
390397
)
391398

@@ -585,6 +592,18 @@ if(ANDROID)
585592
)
586593
endif(ANDROID)
587594

595+
if(X11_xcb_FOUND AND X11_xcb_xtest_FOUND AND X11_xcb_keysyms_FOUND)
596+
set(LIBVNCSERVER_EXAMPLES
597+
${LIBVNCSERVER_EXAMPLES}
598+
x11
599+
)
600+
else()
601+
# clear NOTFOUND
602+
unset(X11_xcb_LIB CACHE)
603+
unset(X11_xcb_xtest_LIB CACHE)
604+
unset(X11_xcb_keysyms_LIB CACHE)
605+
endif(X11_xcb_FOUND AND X11_xcb_xtest_FOUND AND X11_xcb_keysyms_FOUND)
606+
588607
set(LIBVNCCLIENT_EXAMPLES
589608
backchannel
590609
ppmtest
@@ -629,14 +648,14 @@ if(WITH_EXAMPLES)
629648
foreach(e ${LIBVNCSERVER_EXAMPLES})
630649
add_executable(examples_${e} ${LIBVNCSRVEXAMPLE_DIR}/${e}.c)
631650
set_target_properties(examples_${e} PROPERTIES OUTPUT_NAME ${e})
632-
set_target_properties(examples_${e} PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/examples)
633-
target_link_libraries(examples_${e} vncserver ${CMAKE_THREAD_LIBS_INIT} ${CARBON_LIBRARY} ${IOKIT_LIBRARY} ${IOSURFACE_LIBRARY})
651+
set_target_properties(examples_${e} PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/examples/server)
652+
target_link_libraries(examples_${e} vncserver ${CMAKE_THREAD_LIBS_INIT} ${CARBON_LIBRARY} ${IOKIT_LIBRARY} ${IOSURFACE_LIBRARY} ${X11_xcb_LIB} ${X11_xcb_xtest_LIB} ${X11_xcb_keysyms_LIB})
634653
endforeach(e ${LIBVNCSERVER_EXAMPLES})
635654

636655
foreach(e ${LIBVNCCLIENT_EXAMPLES})
637656
add_executable(client_examples_${e} ${LIBVNCCLIEXAMPLE_DIR}/${e}.c ${LIBVNCCLIEXAMPLE_DIR}/${${e}_EXTRA_SOURCES} )
638657
set_target_properties(client_examples_${e} PROPERTIES OUTPUT_NAME ${e})
639-
set_target_properties(client_examples_${e} PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/client_examples)
658+
set_target_properties(client_examples_${e} PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/examples/client)
640659
target_link_libraries(client_examples_${e} vncclient ${CMAKE_THREAD_LIBS_INIT} ${SDL2_LIBRARY} ${GTK2_LIBRARIES} ${FFMPEG_LIBRARIES} ${LIBSSH2_LIBRARY})
641660
endforeach(e ${LIBVNCCLIENT_EXAMPLES})
642661
endif(WITH_EXAMPLES)
@@ -647,6 +666,12 @@ endif(WITH_EXAMPLES)
647666

648667
if(WITH_TESTS)
649668

669+
# First fuzzing
670+
if(DEFINED ENV{LIB_FUZZING_ENGINE})
671+
add_executable(fuzz_server ${TESTS_DIR}/fuzz_server.c)
672+
target_link_libraries(fuzz_server vncserver ${CMAKE_THREAD_LIBS_INIT} ${CARBON_LIBRARY} ${IOKIT_LIBRARY} ${IOSURFACE_LIBRARY} $ENV{LIB_FUZZING_ENGINE})
673+
endif()
674+
650675
if(UNIX)
651676
set(ADDITIONAL_TEST_LIBS m)
652677
endif(UNIX)
@@ -744,9 +769,9 @@ function(get_link_libraries OUT TARGET)
744769
endfunction()
745770

746771
get_link_libraries(PRIVATE_LIBS vncserver)
747-
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/libvncserver.pc.cmakein ${CMAKE_CURRENT_BINARY_DIR}/libvncserver.pc @ONLY)
772+
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/libvncserver/libvncserver.pc.cmakein ${CMAKE_CURRENT_BINARY_DIR}/libvncserver.pc @ONLY)
748773
get_link_libraries(PRIVATE_LIBS vncclient)
749-
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/libvncclient.pc.cmakein ${CMAKE_CURRENT_BINARY_DIR}/libvncclient.pc @ONLY)
774+
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/libvncclient/libvncclient.pc.cmakein ${CMAKE_CURRENT_BINARY_DIR}/libvncclient.pc @ONLY)
750775

751776
if(LIBVNCSERVER_INSTALL)
752777
set(INSTALL_HEADER_FILES

0 commit comments

Comments
 (0)