diff options
-rw-r--r-- | .github/workflows/build.yml | 8 | ||||
-rw-r--r-- | CMakeLists.txt | 1 | ||||
-rw-r--r-- | common/rfb/EncodeManager.cxx | 7 | ||||
-rw-r--r-- | common/rfb/EncodeManager.h | 2 | ||||
-rw-r--r-- | common/rfb/VNCSConnectionST.cxx | 1 | ||||
-rw-r--r-- | contrib/packages/deb/ubuntu-focal/debian/rules | 2 | ||||
-rw-r--r-- | contrib/packages/deb/ubuntu-jammy/debian/rules | 2 | ||||
-rw-r--r-- | contrib/packages/deb/ubuntu-noble/debian/rules | 2 | ||||
-rw-r--r-- | unix/vncserver/vncsession.c | 10 | ||||
-rw-r--r-- | vncviewer/vncviewer.cxx | 4 |
10 files changed, 32 insertions, 7 deletions
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 9d5f33af..578c49c2 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -6,6 +6,8 @@ jobs: build-linux: runs-on: ubuntu-latest timeout-minutes: 10 + env: + VERBOSE: 1 steps: - uses: actions/checkout@v4 - name: Install dependencies @@ -42,6 +44,8 @@ jobs: build-windows: runs-on: windows-latest timeout-minutes: 20 + env: + VERBOSE: 1 defaults: run: shell: msys2 {0} @@ -88,6 +92,8 @@ jobs: build-macos: runs-on: macos-latest timeout-minutes: 20 + env: + VERBOSE: 1 steps: - uses: actions/checkout@v4 - name: Install dependencies @@ -121,6 +127,8 @@ jobs: build-java: runs-on: ubuntu-latest timeout-minutes: 5 + env: + VERBOSE: 1 strategy: matrix: java: [ '8', '11', '17', '21' ] diff --git a/CMakeLists.txt b/CMakeLists.txt index 75773460..0c0344df 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -75,6 +75,7 @@ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=gnu99") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++11") # Tell the compiler to be stringent +add_compile_definitions(_FORTIFY_SOURCE=2) set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Wextra -Wformat=2 -Wvla") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -Wformat=2 -Wvla") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wzero-as-null-pointer-constant") diff --git a/common/rfb/EncodeManager.cxx b/common/rfb/EncodeManager.cxx index 7ec70e69..6a63fa6f 100644 --- a/common/rfb/EncodeManager.cxx +++ b/common/rfb/EncodeManager.cxx @@ -278,6 +278,13 @@ void EncodeManager::pruneLosslessRefresh(const core::Region& limits) pendingRefreshRegion.assign_intersect(limits); } +void EncodeManager::forceRefresh(const core::Region& req) +{ + lossyRegion.assign_union(req); + if (!recentChangeTimer.isStarted()) + pendingRefreshRegion.assign_union(req); +} + void EncodeManager::writeUpdate(const UpdateInfo& ui, const PixelBuffer* pb, const RenderedCursor* renderedCursor) { diff --git a/common/rfb/EncodeManager.h b/common/rfb/EncodeManager.h index 959c13d6..4ce6d0ce 100644 --- a/common/rfb/EncodeManager.h +++ b/common/rfb/EncodeManager.h @@ -54,6 +54,8 @@ namespace rfb { void pruneLosslessRefresh(const core::Region& limits); + void forceRefresh(const core::Region& req); + void writeUpdate(const UpdateInfo& ui, const PixelBuffer* pb, const RenderedCursor* renderedCursor); diff --git a/common/rfb/VNCSConnectionST.cxx b/common/rfb/VNCSConnectionST.cxx index 0b3537ad..0038daff 100644 --- a/common/rfb/VNCSConnectionST.cxx +++ b/common/rfb/VNCSConnectionST.cxx @@ -467,6 +467,7 @@ void VNCSConnectionST::setPixelFormat(const PixelFormat& pf) pf.print(buffer, 256); vlog.info("Client pixel format %s", buffer); setCursor(); + encodeManager.forceRefresh(server->getPixelBuffer()->getRect()); } void VNCSConnectionST::pointerEvent(const core::Point& pos, diff --git a/contrib/packages/deb/ubuntu-focal/debian/rules b/contrib/packages/deb/ubuntu-focal/debian/rules index 0245a065..6c3fd051 100644 --- a/contrib/packages/deb/ubuntu-focal/debian/rules +++ b/contrib/packages/deb/ubuntu-focal/debian/rules @@ -126,7 +126,7 @@ build-arch-stamp: # Add here command to compile/build the package. # Build first things. # Build Xvnc - make $(NUMJOBS) LDFLAGS="-lpng" + make $(NUMJOBS) LDFLAGS="-lpng" VERBOSE=1 make $(NUMJOBS) -C unix/xserver touch build-arch-stamp diff --git a/contrib/packages/deb/ubuntu-jammy/debian/rules b/contrib/packages/deb/ubuntu-jammy/debian/rules index 1b4fd6f8..9ed05508 100644 --- a/contrib/packages/deb/ubuntu-jammy/debian/rules +++ b/contrib/packages/deb/ubuntu-jammy/debian/rules @@ -126,7 +126,7 @@ build-arch-stamp: # Add here command to compile/build the package. # Build first things. # Build Xvnc - make $(NUMJOBS) LDFLAGS="-lpng" + make $(NUMJOBS) LDFLAGS="-lpng" VERBOSE=1 make $(NUMJOBS) -C unix/xserver touch build-arch-stamp diff --git a/contrib/packages/deb/ubuntu-noble/debian/rules b/contrib/packages/deb/ubuntu-noble/debian/rules index 1b4fd6f8..9ed05508 100644 --- a/contrib/packages/deb/ubuntu-noble/debian/rules +++ b/contrib/packages/deb/ubuntu-noble/debian/rules @@ -126,7 +126,7 @@ build-arch-stamp: # Add here command to compile/build the package. # Build first things. # Build Xvnc - make $(NUMJOBS) LDFLAGS="-lpng" + make $(NUMJOBS) LDFLAGS="-lpng" VERBOSE=1 make $(NUMJOBS) -C unix/xserver touch build-arch-stamp diff --git a/unix/vncserver/vncsession.c b/unix/vncserver/vncsession.c index 0830e81a..79683ff9 100644 --- a/unix/vncserver/vncsession.c +++ b/unix/vncserver/vncsession.c @@ -134,7 +134,7 @@ begin_daemon(void) static void finish_daemon(void) { - write(daemon_pipe_fd, "+", 1); + if (write(daemon_pipe_fd, "+", 1) == -1) {} close(daemon_pipe_fd); daemon_pipe_fd = -1; } @@ -545,8 +545,12 @@ run_script(const char *username, const char *display, char **envp) switch_user(pwent->pw_name, pwent->pw_uid, pwent->pw_gid); - if (chdir(pwent->pw_dir) == -1) - chdir("/"); + if (chdir(pwent->pw_dir) == -1) { + syslog(LOG_CRIT, "chdir(\"%s\") failed: %s", pwent->pw_dir, strerror(errno)); + // fallback to "/" + if (chdir("/") == -1) + syslog(LOG_CRIT, "chdir(\"%s\") failed: %s", "/", strerror(errno)); + } close_fds(); diff --git a/vncviewer/vncviewer.cxx b/vncviewer/vncviewer.cxx index 29cf4ca0..3db9bd64 100644 --- a/vncviewer/vncviewer.cxx +++ b/vncviewer/vncviewer.cxx @@ -607,7 +607,9 @@ createTunnel(const char *gatewayHost, const char *remoteHost, cmd2 = strdup(cmd); while ((percent = strchr(cmd2, '%')) != nullptr) *percent = '$'; - system(cmd2); + int res = system(cmd2); + if (res != 0) + fprintf(stderr, "Failed to create tunnel: '%s' returned %d\n", cmd2, res); free(cmd2); } |