Compare commits
3 Commits
Author | SHA256 | Date | |
---|---|---|---|
a014ea3d0d | |||
d8f52ad15d | |||
94d47b9540 |
25
0001-CMake-require-at-least-CMake-3.5.patch
Normal file
25
0001-CMake-require-at-least-CMake-3.5.patch
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
From e64fa928170f22a2e21b5bbd6d46c8f8e7dd7a96 Mon Sep 17 00:00:00 2001
|
||||||
|
From: =?UTF-8?q?Matti=20Lehtim=C3=A4ki?= <matti.lehtimaki@jolla.com>
|
||||||
|
Date: Tue, 13 May 2025 08:37:07 +0300
|
||||||
|
Subject: [PATCH] CMake: require at least CMake 3.5
|
||||||
|
|
||||||
|
CMake 4 dropped support for version requirements < 3.5.
|
||||||
|
|
||||||
|
Fixes building with CMake >= 4.
|
||||||
|
---
|
||||||
|
CMakeLists.txt | 2 +-
|
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/CMakeLists.txt b/CMakeLists.txt
|
||||||
|
index 205f3928..9b8118c8 100644
|
||||||
|
--- a/CMakeLists.txt
|
||||||
|
+++ b/CMakeLists.txt
|
||||||
|
@@ -1,4 +1,4 @@
|
||||||
|
-cmake_minimum_required(VERSION 3.4)
|
||||||
|
+cmake_minimum_required(VERSION 3.5)
|
||||||
|
|
||||||
|
set(PROJECT_LANGUAGES C)
|
||||||
|
|
||||||
|
--
|
||||||
|
2.50.0
|
||||||
|
|
@@ -1,22 +1,66 @@
|
|||||||
From e4849b01fec4494057728d1aa3a165ed21705682 Mon Sep 17 00:00:00 2001
|
From e4849b01fec4494057728d1aa3a165ed21705682 Mon Sep 17 00:00:00 2001
|
||||||
From: =?UTF-8?q?Jonas=20=C3=85dahl?= <jadahl@gmail.com>
|
From: =?UTF-8?q?Jonas=20=C3=85dahl?= <jadahl@gmail.com>
|
||||||
Date: Mon, 11 Jun 2018 23:47:02 +0200
|
Date: Mon, 11 Jun 2018 23:47:02 +0200
|
||||||
Subject: [PATCH 1/4] libvncserver: Add API to add custom I/O entry points
|
Subject: [PATCH] libvncserver: Add API to add custom I/O entry points
|
||||||
|
|
||||||
Add API to make it possible to channel RFB input and output through
|
Add API to make it possible to channel RFB input and output through
|
||||||
another layer, for example TLS. This is done by making it possible to
|
another layer, for example TLS. This is done by making it possible to
|
||||||
override the default read/write/peek functions.
|
override the default read/write/peek functions.
|
||||||
---
|
---
|
||||||
libvncserver/rfbserver.c | 4 ++
|
include/rfb/rfb.h | 17 ++++++++
|
||||||
libvncserver/sockets.c | 79 ++++++++++++++++++++++++++++++++++++----
|
src/libvncserver/rfbserver.c | 4 ++
|
||||||
rfb/rfb.h | 17 +++++++++
|
src/libvncserver/sockets.c | 79 ++++++++++++++++++++++++++++++++----
|
||||||
3 files changed, 93 insertions(+), 7 deletions(-)
|
3 files changed, 93 insertions(+), 7 deletions(-)
|
||||||
|
|
||||||
Index: libvncserver-LibVNCServer-0.9.14/libvncserver/rfbserver.c
|
diff --git a/include/rfb/rfb.h b/include/rfb/rfb.h
|
||||||
===================================================================
|
index 50acf24..204fa05 100644
|
||||||
--- libvncserver-LibVNCServer-0.9.14.orig/libvncserver/rfbserver.c
|
--- a/include/rfb/rfb.h
|
||||||
+++ libvncserver-LibVNCServer-0.9.14/libvncserver/rfbserver.c
|
+++ b/include/rfb/rfb.h
|
||||||
@@ -321,6 +321,10 @@ rfbNewTCPOrUDPClient(rfbScreenInfoPtr rf
|
@@ -402,6 +402,14 @@ typedef struct sraRegion* sraRegionPtr;
|
||||||
|
typedef void (*ClientGoneHookPtr)(struct _rfbClientRec* cl);
|
||||||
|
typedef void (*ClientFramebufferUpdateRequestHookPtr)(struct _rfbClientRec* cl, rfbFramebufferUpdateRequestMsg* furMsg);
|
||||||
|
|
||||||
|
+typedef int (*ClientReadFromSocket)(struct _rfbClientRec* cl,
|
||||||
|
+ char *buf, int len);
|
||||||
|
+typedef int (*ClientPeekAtSocket)(struct _rfbClientRec* cl,
|
||||||
|
+ char *buf, int len);
|
||||||
|
+typedef rfbBool (*ClientHasPendingOnSocket)(struct _rfbClientRec* cl);
|
||||||
|
+typedef int (*ClientWriteToSocket)(struct _rfbClientRec* cl,
|
||||||
|
+ const char *buf, int len);
|
||||||
|
+
|
||||||
|
typedef struct _rfbFileTransferData {
|
||||||
|
int fd;
|
||||||
|
int compressionEnabled;
|
||||||
|
@@ -711,6 +719,11 @@ typedef struct _rfbClientRec {
|
||||||
|
int tightPngDstDataLen;
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
+
|
||||||
|
+ ClientReadFromSocket readFromSocket; /* Read data from socket */
|
||||||
|
+ ClientPeekAtSocket peekAtSocket; /* Peek at data from socket */
|
||||||
|
+ ClientHasPendingOnSocket hasPendingOnSocket; /* Peek at data from socket */
|
||||||
|
+ ClientWriteToSocket writeToSocket; /* Write data to socket */
|
||||||
|
} rfbClientRec, *rfbClientPtr;
|
||||||
|
|
||||||
|
/**
|
||||||
|
@@ -763,8 +776,12 @@ extern void rfbDisconnectUDPSock(rfbScreenInfoPtr rfbScreen);
|
||||||
|
extern void rfbCloseClient(rfbClientPtr cl);
|
||||||
|
extern int rfbReadExact(rfbClientPtr cl, char *buf, int len);
|
||||||
|
extern int rfbReadExactTimeout(rfbClientPtr cl, char *buf, int len,int timeout);
|
||||||
|
+extern int rfbDefaultReadFromSocket(rfbClientPtr cl, char *buf, int len);
|
||||||
|
extern int rfbPeekExactTimeout(rfbClientPtr cl, char *buf, int len,int timeout);
|
||||||
|
+extern int rfbDefaultPeekAtSocket(rfbClientPtr cl, char *buf, int len);
|
||||||
|
+extern rfbBool rfbDefaultHasPendingOnSocket(rfbClientPtr cl);
|
||||||
|
extern int rfbWriteExact(rfbClientPtr cl, const char *buf, int len);
|
||||||
|
+extern int rfbDefaultWriteToSocket(rfbClientPtr cl, const char *buf, int len);
|
||||||
|
extern int rfbCheckFds(rfbScreenInfoPtr rfbScreen,long usec);
|
||||||
|
extern rfbSocket rfbConnect(rfbScreenInfoPtr rfbScreen, char* host, int port);
|
||||||
|
extern rfbSocket rfbConnectToTcpAddr(char* host, int port);
|
||||||
|
diff --git a/src/libvncserver/rfbserver.c b/src/libvncserver/rfbserver.c
|
||||||
|
index 8e3c3f6..2385dba 100644
|
||||||
|
--- a/src/libvncserver/rfbserver.c
|
||||||
|
+++ b/src/libvncserver/rfbserver.c
|
||||||
|
@@ -321,6 +321,10 @@ rfbNewTCPOrUDPClient(rfbScreenInfoPtr rfbScreen,
|
||||||
|
|
||||||
cl->screen = rfbScreen;
|
cl->screen = rfbScreen;
|
||||||
cl->sock = sock;
|
cl->sock = sock;
|
||||||
@@ -27,21 +71,21 @@ Index: libvncserver-LibVNCServer-0.9.14/libvncserver/rfbserver.c
|
|||||||
cl->viewOnly = FALSE;
|
cl->viewOnly = FALSE;
|
||||||
/* setup pseudo scaling */
|
/* setup pseudo scaling */
|
||||||
cl->scaledScreen = rfbScreen;
|
cl->scaledScreen = rfbScreen;
|
||||||
Index: libvncserver-LibVNCServer-0.9.14/libvncserver/sockets.c
|
diff --git a/src/libvncserver/sockets.c b/src/libvncserver/sockets.c
|
||||||
===================================================================
|
index c18493c..51cc86b 100644
|
||||||
--- libvncserver-LibVNCServer-0.9.14.orig/libvncserver/sockets.c
|
--- a/src/libvncserver/sockets.c
|
||||||
+++ libvncserver-LibVNCServer-0.9.14/libvncserver/sockets.c
|
+++ b/src/libvncserver/sockets.c
|
||||||
@@ -102,6 +102,9 @@ int rfbMaxClientWait = 20000; /* time
|
@@ -101,6 +101,9 @@ int deny_severity=LOG_WARNING;
|
||||||
|
int rfbMaxClientWait = 20000; /* time (ms) after which we decide client has
|
||||||
gone away - needed to stop us hanging */
|
gone away - needed to stop us hanging */
|
||||||
|
|
||||||
static rfbBool
|
+static rfbBool
|
||||||
+rfbHasPendingOnSocket(rfbClientPtr cl);
|
+rfbHasPendingOnSocket(rfbClientPtr cl);
|
||||||
+
|
+
|
||||||
+static rfbBool
|
static rfbBool
|
||||||
rfbNewConnectionFromSock(rfbScreenInfoPtr rfbScreen, rfbSocket sock)
|
rfbNewConnectionFromSock(rfbScreenInfoPtr rfbScreen, rfbSocket sock)
|
||||||
{
|
{
|
||||||
const int one = 1;
|
@@ -364,16 +367,20 @@ rfbCheckFds(rfbScreenInfoPtr rfbScreen,long usec)
|
||||||
@@ -364,16 +367,20 @@ rfbCheckFds(rfbScreenInfoPtr rfbScreen,l
|
|
||||||
tv.tv_usec = usec;
|
tv.tv_usec = usec;
|
||||||
nfds = select(rfbScreen->maxFd + 1, &fds, NULL, NULL /* &fds */, &tv);
|
nfds = select(rfbScreen->maxFd + 1, &fds, NULL, NULL /* &fds */, &tv);
|
||||||
if (nfds == 0) {
|
if (nfds == 0) {
|
||||||
@@ -63,7 +107,7 @@ Index: libvncserver-LibVNCServer-0.9.14/libvncserver/sockets.c
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (nfds < 0) {
|
if (nfds < 0) {
|
||||||
@@ -449,9 +456,11 @@ rfbCheckFds(rfbScreenInfoPtr rfbScreen,l
|
@@ -449,9 +456,11 @@ rfbCheckFds(rfbScreenInfoPtr rfbScreen,long usec)
|
||||||
if (cl->onHold)
|
if (cl->onHold)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
@@ -77,9 +121,9 @@ Index: libvncserver-LibVNCServer-0.9.14/libvncserver/sockets.c
|
|||||||
{
|
{
|
||||||
#ifdef LIBVNCSERVER_WITH_WEBSOCKETS
|
#ifdef LIBVNCSERVER_WITH_WEBSOCKETS
|
||||||
do {
|
do {
|
||||||
@@ -638,6 +647,30 @@ rfbConnect(rfbScreenInfoPtr rfbScreen,
|
@@ -649,6 +658,30 @@ size_t fuzz_size;
|
||||||
return sock;
|
const uint8_t *fuzz_data;
|
||||||
}
|
#endif
|
||||||
|
|
||||||
+int
|
+int
|
||||||
+rfbDefaultReadFromSocket(rfbClientPtr cl, char *buf, int len)
|
+rfbDefaultReadFromSocket(rfbClientPtr cl, char *buf, int len)
|
||||||
@@ -108,7 +152,7 @@ Index: libvncserver-LibVNCServer-0.9.14/libvncserver/sockets.c
|
|||||||
/*
|
/*
|
||||||
* ReadExact reads an exact number of bytes from a client. Returns 1 if
|
* ReadExact reads an exact number of bytes from a client. Returns 1 if
|
||||||
* those bytes have been read, 0 if the other end has closed, or -1 if an error
|
* those bytes have been read, 0 if the other end has closed, or -1 if an error
|
||||||
@@ -659,10 +692,10 @@ rfbReadExactTimeout(rfbClientPtr cl, cha
|
@@ -678,10 +711,10 @@ rfbReadExactTimeout(rfbClientPtr cl, char* buf, int len, int timeout)
|
||||||
} else if (cl->sslctx) {
|
} else if (cl->sslctx) {
|
||||||
n = rfbssl_read(cl, buf, len);
|
n = rfbssl_read(cl, buf, len);
|
||||||
} else {
|
} else {
|
||||||
@@ -121,7 +165,7 @@ Index: libvncserver-LibVNCServer-0.9.14/libvncserver/sockets.c
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (n > 0) {
|
if (n > 0) {
|
||||||
@@ -694,6 +727,10 @@ rfbReadExactTimeout(rfbClientPtr cl, cha
|
@@ -713,6 +746,10 @@ rfbReadExactTimeout(rfbClientPtr cl, char* buf, int len, int timeout)
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
@@ -132,7 +176,7 @@ Index: libvncserver-LibVNCServer-0.9.14/libvncserver/sockets.c
|
|||||||
FD_ZERO(&fds);
|
FD_ZERO(&fds);
|
||||||
FD_SET(sock, &fds);
|
FD_SET(sock, &fds);
|
||||||
tv.tv_sec = timeout / 1000;
|
tv.tv_sec = timeout / 1000;
|
||||||
@@ -730,6 +767,18 @@ int rfbReadExact(rfbClientPtr cl,char* b
|
@@ -749,6 +786,18 @@ int rfbReadExact(rfbClientPtr cl,char* buf,int len)
|
||||||
return(rfbReadExactTimeout(cl,buf,len,rfbMaxClientWait));
|
return(rfbReadExactTimeout(cl,buf,len,rfbMaxClientWait));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -151,7 +195,7 @@ Index: libvncserver-LibVNCServer-0.9.14/libvncserver/sockets.c
|
|||||||
/*
|
/*
|
||||||
* PeekExact peeks at an exact number of bytes from a client. Returns 1 if
|
* PeekExact peeks at an exact number of bytes from a client. Returns 1 if
|
||||||
* those bytes have been read, 0 if the other end has closed, or -1 if an
|
* those bytes have been read, 0 if the other end has closed, or -1 if an
|
||||||
@@ -750,7 +799,7 @@ rfbPeekExactTimeout(rfbClientPtr cl, cha
|
@@ -777,7 +826,7 @@ rfbPeekExactTimeout(rfbClientPtr cl, char* buf, int len, int timeout)
|
||||||
n = rfbssl_peek(cl, buf, len);
|
n = rfbssl_peek(cl, buf, len);
|
||||||
else
|
else
|
||||||
#endif
|
#endif
|
||||||
@@ -160,7 +204,7 @@ Index: libvncserver-LibVNCServer-0.9.14/libvncserver/sockets.c
|
|||||||
|
|
||||||
if (n == len) {
|
if (n == len) {
|
||||||
|
|
||||||
@@ -806,6 +855,22 @@ rfbPeekExactTimeout(rfbClientPtr cl, cha
|
@@ -833,6 +882,22 @@ rfbPeekExactTimeout(rfbClientPtr cl, char* buf, int len, int timeout)
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -183,7 +227,7 @@ Index: libvncserver-LibVNCServer-0.9.14/libvncserver/sockets.c
|
|||||||
/*
|
/*
|
||||||
* WriteExact writes an exact number of bytes to a client. Returns 1 if
|
* WriteExact writes an exact number of bytes to a client. Returns 1 if
|
||||||
* those bytes have been written, or -1 if an error occurred (errno is set to
|
* those bytes have been written, or -1 if an error occurred (errno is set to
|
||||||
@@ -863,7 +928,7 @@ rfbWriteExact(rfbClientPtr cl,
|
@@ -893,7 +958,7 @@ rfbWriteExact(rfbClientPtr cl,
|
||||||
n = rfbssl_write(cl, buf, len);
|
n = rfbssl_write(cl, buf, len);
|
||||||
else
|
else
|
||||||
#endif
|
#endif
|
||||||
@@ -192,47 +236,6 @@ Index: libvncserver-LibVNCServer-0.9.14/libvncserver/sockets.c
|
|||||||
|
|
||||||
if (n > 0) {
|
if (n > 0) {
|
||||||
|
|
||||||
Index: libvncserver-LibVNCServer-0.9.14/rfb/rfb.h
|
--
|
||||||
===================================================================
|
2.50.0
|
||||||
--- libvncserver-LibVNCServer-0.9.14.orig/rfb/rfb.h
|
|
||||||
+++ libvncserver-LibVNCServer-0.9.14/rfb/rfb.h
|
|
||||||
@@ -398,6 +398,14 @@ typedef struct sraRegion* sraRegionPtr;
|
|
||||||
typedef void (*ClientGoneHookPtr)(struct _rfbClientRec* cl);
|
|
||||||
typedef void (*ClientFramebufferUpdateRequestHookPtr)(struct _rfbClientRec* cl, rfbFramebufferUpdateRequestMsg* furMsg);
|
|
||||||
|
|
||||||
+typedef int (*ClientReadFromSocket)(struct _rfbClientRec* cl,
|
|
||||||
+ char *buf, int len);
|
|
||||||
+typedef int (*ClientPeekAtSocket)(struct _rfbClientRec* cl,
|
|
||||||
+ char *buf, int len);
|
|
||||||
+typedef rfbBool (*ClientHasPendingOnSocket)(struct _rfbClientRec* cl);
|
|
||||||
+typedef int (*ClientWriteToSocket)(struct _rfbClientRec* cl,
|
|
||||||
+ const char *buf, int len);
|
|
||||||
+
|
|
||||||
typedef struct _rfbFileTransferData {
|
|
||||||
int fd;
|
|
||||||
int compressionEnabled;
|
|
||||||
@@ -707,6 +715,11 @@ typedef struct _rfbClientRec {
|
|
||||||
int tightPngDstDataLen;
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
+
|
|
||||||
+ ClientReadFromSocket readFromSocket; /* Read data from socket */
|
|
||||||
+ ClientPeekAtSocket peekAtSocket; /* Peek at data from socket */
|
|
||||||
+ ClientHasPendingOnSocket hasPendingOnSocket; /* Peek at data from socket */
|
|
||||||
+ ClientWriteToSocket writeToSocket; /* Write data to socket */
|
|
||||||
} rfbClientRec, *rfbClientPtr;
|
|
||||||
|
|
||||||
/**
|
|
||||||
@@ -759,8 +772,12 @@ extern void rfbDisconnectUDPSock(rfbScre
|
|
||||||
extern void rfbCloseClient(rfbClientPtr cl);
|
|
||||||
extern int rfbReadExact(rfbClientPtr cl, char *buf, int len);
|
|
||||||
extern int rfbReadExactTimeout(rfbClientPtr cl, char *buf, int len,int timeout);
|
|
||||||
+extern int rfbDefaultReadFromSocket(rfbClientPtr cl, char *buf, int len);
|
|
||||||
extern int rfbPeekExactTimeout(rfbClientPtr cl, char *buf, int len,int timeout);
|
|
||||||
+extern int rfbDefaultPeekAtSocket(rfbClientPtr cl, char *buf, int len);
|
|
||||||
+extern rfbBool rfbDefaultHasPendingOnSocket(rfbClientPtr cl);
|
|
||||||
extern int rfbWriteExact(rfbClientPtr cl, const char *buf, int len);
|
|
||||||
+extern int rfbDefaultWriteToSocket(rfbClientPtr cl, const char *buf, int len);
|
|
||||||
extern int rfbCheckFds(rfbScreenInfoPtr rfbScreen,long usec);
|
|
||||||
extern rfbSocket rfbConnect(rfbScreenInfoPtr rfbScreen, char* host, int port);
|
|
||||||
extern rfbSocket rfbConnectToTcpAddr(char* host, int port);
|
|
||||||
|
@@ -1,7 +1,7 @@
|
|||||||
From c9131a78878a785c3de21e9d49521d7b68400ad7 Mon Sep 17 00:00:00 2001
|
From c9131a78878a785c3de21e9d49521d7b68400ad7 Mon Sep 17 00:00:00 2001
|
||||||
From: =?UTF-8?q?Jonas=20=C3=85dahl?= <jadahl@gmail.com>
|
From: =?UTF-8?q?Jonas=20=C3=85dahl?= <jadahl@gmail.com>
|
||||||
Date: Mon, 11 Jun 2018 23:50:05 +0200
|
Date: Mon, 11 Jun 2018 23:50:05 +0200
|
||||||
Subject: [PATCH 2/4] libvncserver: Add channel security handlers
|
Subject: [PATCH] libvncserver: Add channel security handlers
|
||||||
|
|
||||||
Add another type of security handler that is meant to be used initially
|
Add another type of security handler that is meant to be used initially
|
||||||
to set up a secure channel. Regular security handlers would be
|
to set up a secure channel. Regular security handlers would be
|
||||||
@@ -13,16 +13,67 @@ done by adding a single channel security handler with the rfbTLS (18)
|
|||||||
with a handler that initiates a TLS session, and when a TLS session is
|
with a handler that initiates a TLS session, and when a TLS session is
|
||||||
initiated, the regular security handler list is sent.
|
initiated, the regular security handler list is sent.
|
||||||
---
|
---
|
||||||
libvncserver/auth.c | 164 ++++++++++++++++++++++++++++++---------
|
include/rfb/rfb.h | 12 ++-
|
||||||
libvncserver/rfbserver.c | 1 +
|
src/libvncserver/auth.c | 164 +++++++++++++++++++++++++++--------
|
||||||
rfb/rfb.h | 15 +++-
|
src/libvncserver/rfbserver.c | 1 +
|
||||||
3 files changed, 142 insertions(+), 38 deletions(-)
|
3 files changed, 140 insertions(+), 37 deletions(-)
|
||||||
|
|
||||||
Index: libvncserver-LibVNCServer-0.9.14/libvncserver/auth.c
|
diff --git a/include/rfb/rfb.h b/include/rfb/rfb.h
|
||||||
===================================================================
|
index 204fa05..cac953c 100644
|
||||||
--- libvncserver-LibVNCServer-0.9.14.orig/libvncserver/auth.c
|
--- a/include/rfb/rfb.h
|
||||||
+++ libvncserver-LibVNCServer-0.9.14/libvncserver/auth.c
|
+++ b/include/rfb/rfb.h
|
||||||
@@ -37,18 +37,17 @@ void rfbClientSendString(rfbClientPtr cl
|
@@ -147,6 +147,11 @@ typedef struct {
|
||||||
|
} data; /**< there have to be count*3 entries */
|
||||||
|
} rfbColourMap;
|
||||||
|
|
||||||
|
+enum rfbSecurityTag {
|
||||||
|
+ RFB_SECURITY_TAG_NONE = 0,
|
||||||
|
+ RFB_SECURITY_TAG_CHANNEL = 1 << 0
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
/**
|
||||||
|
* Security handling (RFB protocol version 3.7)
|
||||||
|
*/
|
||||||
|
@@ -155,6 +160,7 @@ typedef struct _rfbSecurity {
|
||||||
|
uint8_t type;
|
||||||
|
void (*handler)(struct _rfbClientRec* cl);
|
||||||
|
struct _rfbSecurity* next;
|
||||||
|
+ enum rfbSecurityTag securityTags;
|
||||||
|
} rfbSecurityHandler;
|
||||||
|
|
||||||
|
/**
|
||||||
|
@@ -495,7 +501,7 @@ typedef struct _rfbClientRec {
|
||||||
|
/** Possible client states: */
|
||||||
|
enum {
|
||||||
|
RFB_PROTOCOL_VERSION, /**< establishing protocol version */
|
||||||
|
- RFB_SECURITY_TYPE, /**< negotiating security (RFB v.3.7) */
|
||||||
|
+ RFB_SECURITY_TYPE, /**< negotiating security (RFB v.3.7) */
|
||||||
|
RFB_AUTHENTICATION, /**< authenticating */
|
||||||
|
RFB_INITIALISATION, /**< sending initialisation messages */
|
||||||
|
RFB_NORMAL, /**< normal protocol messages */
|
||||||
|
@@ -504,6 +510,7 @@ typedef struct _rfbClientRec {
|
||||||
|
* using LibVNCServer to provide services: */
|
||||||
|
|
||||||
|
RFB_INITIALISATION_SHARED, /**< sending initialisation messages with implicit shared-flag already true */
|
||||||
|
+ RFB_CHANNEL_SECURITY_TYPE, /**< negotiating security (RFB v.3.7) */
|
||||||
|
RFB_SHUTDOWN /**< Client is shutting down */
|
||||||
|
} state;
|
||||||
|
|
||||||
|
@@ -874,6 +881,9 @@ extern void rfbProcessClientSecurityType(rfbClientPtr cl);
|
||||||
|
extern void rfbAuthProcessClientMessage(rfbClientPtr cl);
|
||||||
|
extern void rfbRegisterSecurityHandler(rfbSecurityHandler* handler);
|
||||||
|
extern void rfbUnregisterSecurityHandler(rfbSecurityHandler* handler);
|
||||||
|
+extern void rfbRegisterChannelSecurityHandler(rfbSecurityHandler* handler);
|
||||||
|
+extern void rfbUnregisterChannelSecurityHandler(rfbSecurityHandler* handler);
|
||||||
|
+extern void rfbSendSecurityTypeList(rfbClientPtr cl, enum rfbSecurityTag exclude);
|
||||||
|
|
||||||
|
/* rre.c */
|
||||||
|
|
||||||
|
diff --git a/src/libvncserver/auth.c b/src/libvncserver/auth.c
|
||||||
|
index 748027b..fc74c80 100644
|
||||||
|
--- a/src/libvncserver/auth.c
|
||||||
|
+++ b/src/libvncserver/auth.c
|
||||||
|
@@ -37,18 +37,17 @@ void rfbClientSendString(rfbClientPtr cl, const char *reason);
|
||||||
* Handle security types
|
* Handle security types
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@@ -48,7 +99,7 @@ Index: libvncserver-LibVNCServer-0.9.14/libvncserver/auth.c
|
|||||||
|
|
||||||
if(handler == NULL)
|
if(handler == NULL)
|
||||||
return;
|
return;
|
||||||
@@ -57,39 +56,35 @@ rfbRegisterSecurityHandler(rfbSecurityHa
|
@@ -57,39 +56,35 @@ rfbRegisterSecurityHandler(rfbSecurityHandler* handler)
|
||||||
|
|
||||||
while(head != NULL) {
|
while(head != NULL) {
|
||||||
if(head == handler) {
|
if(head == handler) {
|
||||||
@@ -99,7 +150,7 @@ Index: libvncserver-LibVNCServer-0.9.14/libvncserver/auth.c
|
|||||||
|
|
||||||
while(cur) {
|
while(cur) {
|
||||||
if(cur == handler) {
|
if(cur == handler) {
|
||||||
@@ -99,7 +94,50 @@ rfbUnregisterSecurityHandler(rfbSecurity
|
@@ -99,7 +94,50 @@ rfbUnregisterSecurityHandler(rfbSecurityHandler* handler)
|
||||||
pre = cur;
|
pre = cur;
|
||||||
cur = cur->next;
|
cur = cur->next;
|
||||||
}
|
}
|
||||||
@@ -151,7 +202,7 @@ Index: libvncserver-LibVNCServer-0.9.14/libvncserver/auth.c
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -197,9 +235,22 @@ static rfbSecurityHandler VncSecurityHan
|
@@ -197,9 +235,22 @@ static rfbSecurityHandler VncSecurityHandlerNone = {
|
||||||
NULL
|
NULL
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -176,7 +227,7 @@ Index: libvncserver-LibVNCServer-0.9.14/libvncserver/auth.c
|
|||||||
{
|
{
|
||||||
/* The size of the message is the count of security types +1,
|
/* The size of the message is the count of security types +1,
|
||||||
* since the first byte is the number of types. */
|
* since the first byte is the number of types. */
|
||||||
@@ -207,9 +258,10 @@ rfbSendSecurityTypeList(rfbClientPtr cl,
|
@@ -207,9 +258,10 @@ rfbSendSecurityTypeList(rfbClientPtr cl, int primaryType)
|
||||||
rfbSecurityHandler* handler;
|
rfbSecurityHandler* handler;
|
||||||
#define MAX_SECURITY_TYPES 255
|
#define MAX_SECURITY_TYPES 255
|
||||||
uint8_t buffer[MAX_SECURITY_TYPES+1];
|
uint8_t buffer[MAX_SECURITY_TYPES+1];
|
||||||
@@ -188,7 +239,7 @@ Index: libvncserver-LibVNCServer-0.9.14/libvncserver/auth.c
|
|||||||
switch (primaryType) {
|
switch (primaryType) {
|
||||||
case rfbSecTypeNone:
|
case rfbSecTypeNone:
|
||||||
rfbUnregisterSecurityHandler(&VncSecurityHandlerVncAuth);
|
rfbUnregisterSecurityHandler(&VncSecurityHandlerVncAuth);
|
||||||
@@ -223,6 +275,9 @@ rfbSendSecurityTypeList(rfbClientPtr cl,
|
@@ -223,6 +275,9 @@ rfbSendSecurityTypeList(rfbClientPtr cl, int primaryType)
|
||||||
|
|
||||||
for (handler = securityHandlers;
|
for (handler = securityHandlers;
|
||||||
handler && size<MAX_SECURITY_TYPES; handler = handler->next) {
|
handler && size<MAX_SECURITY_TYPES; handler = handler->next) {
|
||||||
@@ -198,7 +249,7 @@ Index: libvncserver-LibVNCServer-0.9.14/libvncserver/auth.c
|
|||||||
buffer[size] = handler->type;
|
buffer[size] = handler->type;
|
||||||
size++;
|
size++;
|
||||||
}
|
}
|
||||||
@@ -251,7 +306,29 @@ rfbSendSecurityTypeList(rfbClientPtr cl,
|
@@ -251,7 +306,29 @@ rfbSendSecurityTypeList(rfbClientPtr cl, int primaryType)
|
||||||
cl->state = RFB_SECURITY_TYPE;
|
cl->state = RFB_SECURITY_TYPE;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -228,7 +279,7 @@ Index: libvncserver-LibVNCServer-0.9.14/libvncserver/auth.c
|
|||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -299,18 +376,19 @@ rfbSendSecurityType(rfbClientPtr cl, int
|
@@ -299,18 +376,19 @@ rfbSendSecurityType(rfbClientPtr cl, int32_t securityType)
|
||||||
void
|
void
|
||||||
rfbAuthNewClient(rfbClientPtr cl)
|
rfbAuthNewClient(rfbClientPtr cl)
|
||||||
{
|
{
|
||||||
@@ -270,7 +321,7 @@ Index: libvncserver-LibVNCServer-0.9.14/libvncserver/auth.c
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -334,6 +416,7 @@ rfbProcessClientSecurityType(rfbClientPt
|
@@ -334,6 +416,7 @@ rfbProcessClientSecurityType(rfbClientPtr cl)
|
||||||
int n;
|
int n;
|
||||||
uint8_t chosenType;
|
uint8_t chosenType;
|
||||||
rfbSecurityHandler* handler;
|
rfbSecurityHandler* handler;
|
||||||
@@ -278,7 +329,7 @@ Index: libvncserver-LibVNCServer-0.9.14/libvncserver/auth.c
|
|||||||
|
|
||||||
/* Read the security type. */
|
/* Read the security type. */
|
||||||
n = rfbReadExact(cl, (char *)&chosenType, 1);
|
n = rfbReadExact(cl, (char *)&chosenType, 1);
|
||||||
@@ -346,8 +429,17 @@ rfbProcessClientSecurityType(rfbClientPt
|
@@ -346,8 +429,17 @@ rfbProcessClientSecurityType(rfbClientPtr cl)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -297,11 +348,11 @@ Index: libvncserver-LibVNCServer-0.9.14/libvncserver/auth.c
|
|||||||
if (chosenType == handler->type) {
|
if (chosenType == handler->type) {
|
||||||
rfbLog("rfbProcessClientSecurityType: executing handler for type %d\n", chosenType);
|
rfbLog("rfbProcessClientSecurityType: executing handler for type %d\n", chosenType);
|
||||||
handler->handler(cl);
|
handler->handler(cl);
|
||||||
Index: libvncserver-LibVNCServer-0.9.14/libvncserver/rfbserver.c
|
diff --git a/src/libvncserver/rfbserver.c b/src/libvncserver/rfbserver.c
|
||||||
===================================================================
|
index 2385dba..b2804ad 100644
|
||||||
--- libvncserver-LibVNCServer-0.9.14.orig/libvncserver/rfbserver.c
|
--- a/src/libvncserver/rfbserver.c
|
||||||
+++ libvncserver-LibVNCServer-0.9.14/libvncserver/rfbserver.c
|
+++ b/src/libvncserver/rfbserver.c
|
||||||
@@ -670,6 +670,7 @@ rfbProcessClientMessage(rfbClientPtr cl)
|
@@ -679,6 +679,7 @@ rfbProcessClientMessage(rfbClientPtr cl)
|
||||||
case RFB_PROTOCOL_VERSION:
|
case RFB_PROTOCOL_VERSION:
|
||||||
rfbProcessClientProtocolVersion(cl);
|
rfbProcessClientProtocolVersion(cl);
|
||||||
return;
|
return;
|
||||||
@@ -309,54 +360,6 @@ Index: libvncserver-LibVNCServer-0.9.14/libvncserver/rfbserver.c
|
|||||||
case RFB_SECURITY_TYPE:
|
case RFB_SECURITY_TYPE:
|
||||||
rfbProcessClientSecurityType(cl);
|
rfbProcessClientSecurityType(cl);
|
||||||
return;
|
return;
|
||||||
Index: libvncserver-LibVNCServer-0.9.14/rfb/rfb.h
|
--
|
||||||
===================================================================
|
2.50.0
|
||||||
--- libvncserver-LibVNCServer-0.9.14.orig/rfb/rfb.h
|
|
||||||
+++ libvncserver-LibVNCServer-0.9.14/rfb/rfb.h
|
|
||||||
@@ -147,6 +147,11 @@ typedef struct {
|
|
||||||
} data; /**< there have to be count*3 entries */
|
|
||||||
} rfbColourMap;
|
|
||||||
|
|
||||||
+enum rfbSecurityTag {
|
|
||||||
+ RFB_SECURITY_TAG_NONE = 0,
|
|
||||||
+ RFB_SECURITY_TAG_CHANNEL = 1 << 0
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
/**
|
|
||||||
* Security handling (RFB protocol version 3.7)
|
|
||||||
*/
|
|
||||||
@@ -155,6 +160,7 @@ typedef struct _rfbSecurity {
|
|
||||||
uint8_t type;
|
|
||||||
void (*handler)(struct _rfbClientRec* cl);
|
|
||||||
struct _rfbSecurity* next;
|
|
||||||
+ enum rfbSecurityTag securityTags;
|
|
||||||
} rfbSecurityHandler;
|
|
||||||
|
|
||||||
/**
|
|
||||||
@@ -491,7 +497,7 @@ typedef struct _rfbClientRec {
|
|
||||||
/** Possible client states: */
|
|
||||||
enum {
|
|
||||||
RFB_PROTOCOL_VERSION, /**< establishing protocol version */
|
|
||||||
- RFB_SECURITY_TYPE, /**< negotiating security (RFB v.3.7) */
|
|
||||||
+ RFB_SECURITY_TYPE, /**< negotiating security (RFB v.3.7) */
|
|
||||||
RFB_AUTHENTICATION, /**< authenticating */
|
|
||||||
RFB_INITIALISATION, /**< sending initialisation messages */
|
|
||||||
RFB_NORMAL, /**< normal protocol messages */
|
|
||||||
@@ -500,6 +506,7 @@ typedef struct _rfbClientRec {
|
|
||||||
* using LibVNCServer to provide services: */
|
|
||||||
|
|
||||||
RFB_INITIALISATION_SHARED, /**< sending initialisation messages with implicit shared-flag already true */
|
|
||||||
+ RFB_CHANNEL_SECURITY_TYPE, /**< negotiating security (RFB v.3.7) */
|
|
||||||
RFB_SHUTDOWN /**< Client is shutting down */
|
|
||||||
} state;
|
|
||||||
|
|
||||||
@@ -870,6 +877,9 @@ extern void rfbProcessClientSecurityType
|
|
||||||
extern void rfbAuthProcessClientMessage(rfbClientPtr cl);
|
|
||||||
extern void rfbRegisterSecurityHandler(rfbSecurityHandler* handler);
|
|
||||||
extern void rfbUnregisterSecurityHandler(rfbSecurityHandler* handler);
|
|
||||||
+extern void rfbRegisterChannelSecurityHandler(rfbSecurityHandler* handler);
|
|
||||||
+extern void rfbUnregisterChannelSecurityHandler(rfbSecurityHandler* handler);
|
|
||||||
+extern void rfbSendSecurityTypeList(rfbClientPtr cl, enum rfbSecurityTag exclude);
|
|
||||||
|
|
||||||
/* rre.c */
|
|
||||||
|
|
||||||
|
BIN
LibVNCServer-0.9.14.tar.gz
(Stored with Git LFS)
BIN
LibVNCServer-0.9.14.tar.gz
(Stored with Git LFS)
Binary file not shown.
3
LibVNCServer-0.9.15.tar.gz
Normal file
3
LibVNCServer-0.9.15.tar.gz
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
version https://git-lfs.github.com/spec/v1
|
||||||
|
oid sha256:62352c7795e231dfce044beb96156065a05a05c974e5de9e023d688d8ff675d7
|
||||||
|
size 600387
|
@@ -1,3 +1,20 @@
|
|||||||
|
-------------------------------------------------------------------
|
||||||
|
Thu Jun 26 07:53:57 UTC 2025 - Christophe Marin <christophe@krop.fr>
|
||||||
|
|
||||||
|
- Update to 0.9.15
|
||||||
|
https://github.com/LibVNC/libvncserver/releases/tag/LibVNCServer-0.9.15
|
||||||
|
* internal code structure cleanup
|
||||||
|
* UTF-8 clipboard handling improvements
|
||||||
|
* HTTP server support for multithreaded VNC servers
|
||||||
|
* Fixed building with OpenSSL >= 3.0.0
|
||||||
|
- Rebase patches
|
||||||
|
- Fix devel package dependencies. The libraries have public link
|
||||||
|
targets that must be present when LibVNCServer-devel is
|
||||||
|
installed
|
||||||
|
- Add upstream change to fix build failures with CMake 4:
|
||||||
|
* 0001-CMake-require-at-least-CMake-3.5.patch
|
||||||
|
- Spec refresh
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Fri Jun 23 14:44:58 UTC 2023 - pgajdos@suse.com
|
Fri Jun 23 14:44:58 UTC 2023 - pgajdos@suse.com
|
||||||
|
|
||||||
@@ -581,4 +598,3 @@ Sun Aug 21 03:27:19 CEST 2005 - garloff@suse.de
|
|||||||
|
|
||||||
- Initial creation of package LibVNCServer-0.7.1.
|
- Initial creation of package LibVNCServer-0.7.1.
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
|
||||||
|
@@ -18,7 +18,7 @@
|
|||||||
|
|
||||||
%define libnum 1
|
%define libnum 1
|
||||||
Name: LibVNCServer
|
Name: LibVNCServer
|
||||||
Version: 0.9.14
|
Version: 0.9.15
|
||||||
Release: 0
|
Release: 0
|
||||||
Summary: VNC Development Library
|
Summary: VNC Development Library
|
||||||
License: GPL-2.0-or-later
|
License: GPL-2.0-or-later
|
||||||
@@ -29,6 +29,8 @@ Source0: https://github.com/LibVNC/libvncserver/archive/%{name}-%{version
|
|||||||
Source1: baselibs.conf
|
Source1: baselibs.conf
|
||||||
#PATCH-FIX-OPENSUSE: redefine keysyms only if needed
|
#PATCH-FIX-OPENSUSE: redefine keysyms only if needed
|
||||||
Patch0: redef-keysym.patch
|
Patch0: redef-keysym.patch
|
||||||
|
# PATCH-FIX-UPSTREAM -- CMake 4 compat
|
||||||
|
Patch1: 0001-CMake-require-at-least-CMake-3.5.patch
|
||||||
#PATCH-FEATURE-UPSTREAM TLS security type enablement patches gh#LibVNC/libvncserver!234
|
#PATCH-FEATURE-UPSTREAM TLS security type enablement patches gh#LibVNC/libvncserver!234
|
||||||
Patch10: 0001-libvncserver-Add-API-to-add-custom-I-O-entry-points.patch
|
Patch10: 0001-libvncserver-Add-API-to-add-custom-I-O-entry-points.patch
|
||||||
Patch11: 0002-libvncserver-Add-channel-security-handlers.patch
|
Patch11: 0002-libvncserver-Add-channel-security-handlers.patch
|
||||||
@@ -43,7 +45,6 @@ BuildRequires: lzo-devel
|
|||||||
BuildRequires: openssl-devel
|
BuildRequires: openssl-devel
|
||||||
BuildRequires: pkgconfig
|
BuildRequires: pkgconfig
|
||||||
BuildRequires: slang-devel
|
BuildRequires: slang-devel
|
||||||
BuildRoot: %{_tmppath}/%{name}-%{version}-build
|
|
||||||
|
|
||||||
%description
|
%description
|
||||||
VNC is a set of programs using the RFB (Remote Frame Buffer) protocol.
|
VNC is a set of programs using the RFB (Remote Frame Buffer) protocol.
|
||||||
@@ -60,8 +61,8 @@ real running X11 server) has been split off into its own package on
|
|||||||
%package -n libvncclient%{libnum}
|
%package -n libvncclient%{libnum}
|
||||||
Summary: Library implementing a VNC client
|
Summary: Library implementing a VNC client
|
||||||
Group: System/Libraries
|
Group: System/Libraries
|
||||||
|
Conflicts: LibVNCServer < %{version}
|
||||||
Obsoletes: linuxvnc < %{version}
|
Obsoletes: linuxvnc < %{version}
|
||||||
Conflicts: LibVNCServer < %version
|
|
||||||
|
|
||||||
%description -n libvncclient%{libnum}
|
%description -n libvncclient%{libnum}
|
||||||
LibVNCServer/LibVNCClient are cross-platform C libraries that allow
|
LibVNCServer/LibVNCClient are cross-platform C libraries that allow
|
||||||
@@ -76,12 +77,18 @@ LibVNCServer/LibVNCClient are cross-platform C libraries that allow
|
|||||||
implementing VNC server or client functionality in your program.
|
implementing VNC server or client functionality in your program.
|
||||||
|
|
||||||
%package devel
|
%package devel
|
||||||
Requires: gnutls-devel
|
|
||||||
Requires: libvncclient%{libnum} = %version
|
|
||||||
Requires: libvncserver%{libnum} = %version
|
|
||||||
Requires: zlib-devel
|
|
||||||
Summary: VNC Development Library
|
Summary: VNC Development Library
|
||||||
Group: Development/Libraries/X11
|
Group: Development/Libraries/X11
|
||||||
|
Requires: gnutls-devel
|
||||||
|
Requires: libgcrypt-devel
|
||||||
|
Requires: libgnutls-devel
|
||||||
|
Requires: libjpeg-devel
|
||||||
|
Requires: libpng-devel
|
||||||
|
Requires: libvncclient%{libnum} = %{version}
|
||||||
|
Requires: libvncserver%{libnum} = %{version}
|
||||||
|
Requires: lzo-devel
|
||||||
|
Requires: openssl-devel
|
||||||
|
Requires: zlib-devel
|
||||||
|
|
||||||
%description devel
|
%description devel
|
||||||
VNC is a set of programs using the RFB (Remote Frame Buffer) protocol.
|
VNC is a set of programs using the RFB (Remote Frame Buffer) protocol.
|
||||||
@@ -97,8 +104,7 @@ The LibVNCServer-devel package contains the static libraries and header
|
|||||||
files for LibVNCServer.
|
files for LibVNCServer.
|
||||||
|
|
||||||
%prep
|
%prep
|
||||||
%setup -q -n libvncserver-%{name}-%{version}
|
%autosetup -p1 -n libvncserver-%{name}-%{version}
|
||||||
%autopatch -p1
|
|
||||||
|
|
||||||
# fix encoding
|
# fix encoding
|
||||||
for file in ChangeLog ; do
|
for file in ChangeLog ; do
|
||||||
@@ -109,38 +115,34 @@ done
|
|||||||
|
|
||||||
%build
|
%build
|
||||||
%cmake
|
%cmake
|
||||||
make %{?_smp_mflags}
|
%cmake_build
|
||||||
|
|
||||||
%check
|
%check
|
||||||
pushd build
|
%ctest
|
||||||
export LD_LIBRARY_PATH="$(pwd)"
|
|
||||||
make test
|
|
||||||
|
|
||||||
%install
|
%install
|
||||||
%cmake_install
|
%cmake_install
|
||||||
|
|
||||||
%post -n libvncclient%{libnum} -p /sbin/ldconfig
|
%ldconfig_scriptlets -n libvncclient%{libnum}
|
||||||
%postun -n libvncclient%{libnum} -p /sbin/ldconfig
|
%ldconfig_scriptlets -n libvncserver%{libnum}
|
||||||
%post -n libvncserver%{libnum} -p /sbin/ldconfig
|
|
||||||
%postun -n libvncserver%{libnum} -p /sbin/ldconfig
|
|
||||||
|
|
||||||
%files -n libvncserver%{libnum}
|
%files -n libvncserver%{libnum}
|
||||||
%defattr(-,root,root)
|
%license COPYING
|
||||||
%doc COPYING README.md
|
%doc README.md
|
||||||
%_libdir/libvncserver.so.%{version}
|
%{_libdir}/libvncserver.so.%{version}
|
||||||
%_libdir/libvncserver.so.%{libnum}*
|
%{_libdir}/libvncserver.so.%{libnum}*
|
||||||
|
|
||||||
%files -n libvncclient%{libnum}
|
%files -n libvncclient%{libnum}
|
||||||
%defattr(-,root,root)
|
%license COPYING
|
||||||
%doc COPYING README.md
|
%doc README.md
|
||||||
%_libdir/libvncclient.so.%{version}
|
%{_libdir}/libvncclient.so.%{version}
|
||||||
%_libdir/libvncclient.so.%{libnum}*
|
%{_libdir}/libvncclient.so.%{libnum}*
|
||||||
|
|
||||||
%files devel
|
%files devel
|
||||||
%defattr(-,root,root)
|
%license COPYING
|
||||||
%doc AUTHORS COPYING ChangeLog NEWS.md README.md
|
%doc AUTHORS ChangeLog NEWS.md README.md
|
||||||
%{_includedir}/rfb/*
|
%{_includedir}/rfb/*
|
||||||
%dir /usr/include/rfb
|
%dir %{_includedir}/rfb
|
||||||
%{_libdir}/libvncclient.so
|
%{_libdir}/libvncclient.so
|
||||||
%{_libdir}/libvncserver.so
|
%{_libdir}/libvncserver.so
|
||||||
%{_libdir}/pkgconfig/*.pc
|
%{_libdir}/pkgconfig/*.pc
|
||||||
|
@@ -1,7 +1,7 @@
|
|||||||
Index: LibVNCServer-0.8.2/rfb/keysym.h
|
Index: LibVNCServer-0.8.2/include/rfb/keysym.h
|
||||||
===================================================================
|
===================================================================
|
||||||
--- LibVNCServer-0.8.2.orig/rfb/keysym.h
|
--- LibVNCServer-0.8.2.orig/include/rfb/keysym.h
|
||||||
+++ LibVNCServer-0.8.2/rfb/keysym.h
|
+++ LibVNCServer-0.8.2/include/rfb/keysym.h
|
||||||
@@ -50,15 +50,29 @@ SOFTWARE.
|
@@ -50,15 +50,29 @@ SOFTWARE.
|
||||||
|
|
||||||
******************************************************************/
|
******************************************************************/
|
||||||
|
Reference in New Issue
Block a user