summaryrefslogtreecommitdiff
blob: 202519b9f1524da6482731cc2b760e6910d2f56f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
From 766fc7694a58b7e01c003356db94276f07b791b5 Mon Sep 17 00:00:00 2001
From: Johannes Huber <johu@gentoo.org>
Date: Thu, 31 Jul 2014 19:41:01 +0200
Subject: [PATCH] CVE-2014-4607: Unbundle libvncserver

http://seclists.org/oss-sec/2014/q2/676

REVIEW: 119548
---
 CMakeLists.txt                       |  7 +++---
 cmake/modules/FindLibVNCServer.cmake | 41 ++++++++++++++++++++++++++++++++++++
 krfb/CMakeLists.txt                  |  2 ++
 krfb/rfb.h                           |  2 +-
 4 files changed, 47 insertions(+), 5 deletions(-)
 create mode 100644 cmake/modules/FindLibVNCServer.cmake

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 4aa24dd..0b29da0 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -32,6 +32,8 @@ set(CMAKE_MODULE_PATH
     ${CMAKE_MODULE_PATH}
 )
 
+find_package(LibVNCServer REQUIRED)
+
 macro_optional_find_package(TelepathyQt4)
 macro_log_feature(TelepathyQt4_FOUND "telepathy-qt" "Telepathy Qt Bindings" "http://telepathy.freedesktop.org" FALSE "0.9" "Needed to build Telepathy Tubes support.")
 
@@ -44,8 +46,6 @@ macro_bool_to_01(X11_XShm_FOUND HAVE_XSHM)
 include_directories ("${CMAKE_CURRENT_BINARY_DIR}/krfb"
                      "${CMAKE_CURRENT_SOURCE_DIR}/krfb"
                      "${CMAKE_CURRENT_SOURCE_DIR}/krfb/ui"
-                     "${CMAKE_CURRENT_SOURCE_DIR}/libvncserver/"
-                     "${CMAKE_CURRENT_BINARY_DIR}/libvncserver/"
 )
 
 if(Q_WS_X11)
@@ -54,9 +54,8 @@ if(Q_WS_X11)
   endif(NOT X11_XTest_FOUND)
 endif(Q_WS_X11)
 
-add_subdirectory(libvncserver)
 add_subdirectory(krfb)
-add_subdirectory (framebuffers)
+add_subdirectory(framebuffers)
 add_subdirectory(doc)
 
 if (NOT INSIDE_KDENETWORK)
diff --git a/cmake/modules/FindLibVNCServer.cmake b/cmake/modules/FindLibVNCServer.cmake
new file mode 100644
index 0000000..5927ab2
--- /dev/null
+++ b/cmake/modules/FindLibVNCServer.cmake
@@ -0,0 +1,41 @@
+# cmake macro to test LIBVNCSERVER LIB
+
+# Copyright (c) 2006, Alessandro Praduroux <pradu@pradu.it>
+# Copyright (c) 2007, Urs Wolfer <uwolfer @ kde.org>
+#
+# Redistribution and use is allowed according to the terms of the BSD license.
+# For details see the accompanying COPYING-CMAKE-SCRIPTS file.
+
+INCLUDE(CheckPointerMember)
+
+IF (LIBVNCSERVER_INCLUDE_DIR AND LIBVNCSERVER_LIBRARIES)
+    # Already in cache, be silent
+    SET(LIBVNCSERVER_FIND_QUIETLY TRUE)
+ENDIF (LIBVNCSERVER_INCLUDE_DIR AND LIBVNCSERVER_LIBRARIES)
+
+FIND_PATH(LIBVNCSERVER_INCLUDE_DIR rfb/rfb.h)
+
+FIND_LIBRARY(LIBVNCSERVER_LIBRARIES NAMES vncserver libvncserver)
+
+# libvncserver and libvncclient are in the same package, so it does
+# not make sense to add a new cmake script for finding libvncclient.
+# instead just find the libvncclient also in this file.
+FIND_PATH(LIBVNCCLIENT_INCLUDE_DIR rfb/rfbclient.h)
+FIND_LIBRARY(LIBVNCCLIENT_LIBRARIES NAMES vncclient libvncclient)
+
+IF (LIBVNCSERVER_INCLUDE_DIR AND LIBVNCSERVER_LIBRARIES)
+   SET(CMAKE_REQUIRED_INCLUDES "${LIBVNCSERVER_INCLUDE_DIR}" "${CMAKE_REQUIRED_INCLUDES}")
+   CHECK_POINTER_MEMBER(rfbClient* GotXCutText rfb/rfbclient.h LIBVNCSERVER_FOUND)
+ENDIF (LIBVNCSERVER_INCLUDE_DIR AND LIBVNCSERVER_LIBRARIES)
+
+IF (LIBVNCSERVER_FOUND)
+  IF (NOT LIBVNCSERVER_FIND_QUIETLY)
+    MESSAGE(STATUS "Found LibVNCServer: ${LIBVNCSERVER_LIBRARIES}")
+  ENDIF (NOT LIBVNCSERVER_FIND_QUIETLY)
+ELSE (LIBVNCSERVER_FOUND)
+  IF (LIBVNCSERVER_FIND_REQUIRED)
+    MESSAGE(FATAL_ERROR "Could NOT find acceptable version of LibVNCServer (version 0.9 or later required).")
+  ENDIF (LIBVNCSERVER_FIND_REQUIRED)
+ENDIF (LIBVNCSERVER_FOUND)
+
+MARK_AS_ADVANCED(LIBVNCSERVER_INCLUDE_DIR LIBVNCSERVER_LIBRARIES)
\ No newline at end of file
diff --git a/krfb/CMakeLists.txt b/krfb/CMakeLists.txt
index a65eea8..100b49b 100644
--- a/krfb/CMakeLists.txt
+++ b/krfb/CMakeLists.txt
@@ -20,6 +20,7 @@ target_link_libraries (krfbprivate
                        ${QT_QTCORE_LIBRARY}
                        ${QT_QTGUI_LIBRARY}
                        ${X11_X11_LIB}
+                       ${LIBVNCSERVER_LIBRARIES}
 )
 
 set_target_properties (krfbprivate PROPERTIES
@@ -103,6 +104,7 @@ target_link_libraries (krfb
                        ${QT_QTNETWORK_LIBRARY}
                        ${KDE4_KDNSSD_LIBS}
                        ${KDE4_KDEUI_LIBS}
+                       ${LIBVNCSERVER_LIBRARIES}
 )
 
 if(TelepathyQt4_FOUND)
diff --git a/krfb/rfb.h b/krfb/rfb.h
index 40308a2..fa94eda 100644
--- a/krfb/rfb.h
+++ b/krfb/rfb.h
@@ -6,7 +6,7 @@
 #ifndef KRFB_RFB_H
 #define KRFB_RFB_H
 
-#include "../libvncserver/rfb/rfb.h"
+#include "rfb/rfb.h"
 
 #undef TRUE
 #undef FALSE
-- 
2.0.2