Skip to content

Commit 8555ea7

Browse files
committed
libupnp: don't leak local headers
Issue found while compiling on FreeBSD. Signed-off-by: Rosen Penev <[email protected]>
1 parent 8c8e7d6 commit 8555ea7

File tree

5 files changed

+125
-121
lines changed

5 files changed

+125
-121
lines changed

releases.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2450,6 +2450,7 @@
24502450
"libupnp"
24512451
],
24522452
"versions": [
2453+
"1.14.25-2",
24532454
"1.14.25-1",
24542455
"1.14.24-1",
24552456
"1.14.23-1",

subprojects/libupnp.wrap

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,4 @@ source_hash = 36fdf15767573f4f92320f01b3fd3c1cb41732b91cfc24d10d1e6a55969c9f56
66
patch_directory = libupnp
77

88
[provide]
9-
libupnp = libupnp_dep
9+
dependency_names = libupnp
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
libixml = static_library(
2+
'ixml',
3+
'src/attr.c',
4+
'src/document.c',
5+
'src/element.c',
6+
'src/ixml.c',
7+
'src/ixmldebug.c',
8+
'src/ixmlmembuf.c',
9+
'src/ixmlparser.c',
10+
'src/namedNodeMap.c',
11+
'src/node.c',
12+
'src/nodeList.c',
13+
include_directories: ['src/inc', libupnp_incdir],
14+
override_options: cstd,
15+
pic: true,
16+
)
17+
18+

subprojects/packagefiles/libupnp/meson.build

Lines changed: 11 additions & 120 deletions
Original file line numberDiff line numberDiff line change
@@ -6,109 +6,13 @@ project(
66
meson_version: '>=0.54.1',
77
)
88

9+
cstd = 'c_std=gnu99'
10+
911
cc = meson.get_compiler('c')
1012
if cc.get_argument_syntax() == 'msvc'
1113
error('MSVC is unsupported. Requires custom pthread library')
1214
endif
1315

14-
libupnp_incdir = include_directories(
15-
'.',
16-
'upnp/inc',
17-
'upnp/src/inc',
18-
'upnp/src/threadutil',
19-
)
20-
libixml_incdir = include_directories('ixml/inc', 'ixml/src/inc')
21-
22-
libixml = static_library(
23-
'ixml',
24-
'ixml/src/attr.c',
25-
'ixml/src/document.c',
26-
'ixml/src/element.c',
27-
'ixml/src/ixml.c',
28-
'ixml/src/ixmldebug.c',
29-
'ixml/src/ixmlmembuf.c',
30-
'ixml/src/ixmlparser.c',
31-
'ixml/src/namedNodeMap.c',
32-
'ixml/src/node.c',
33-
'ixml/src/nodeList.c',
34-
include_directories: [libixml_incdir, libupnp_incdir],
35-
pic: true,
36-
)
37-
38-
upnp_sources = files(
39-
'upnp/src/api/UpnpActionComplete.c',
40-
'upnp/src/api/UpnpActionRequest.c',
41-
'upnp/src/api/UpnpDiscovery.c',
42-
'upnp/src/api/UpnpEvent.c',
43-
'upnp/src/api/UpnpEventSubscribe.c',
44-
'upnp/src/api/UpnpExtraHeaders.c',
45-
'upnp/src/api/UpnpFileInfo.c',
46-
'upnp/src/api/UpnpStateVarComplete.c',
47-
'upnp/src/api/UpnpStateVarRequest.c',
48-
'upnp/src/api/UpnpString.c',
49-
'upnp/src/api/UpnpSubscriptionRequest.c',
50-
'upnp/src/api/upnpapi.c',
51-
'upnp/src/api/upnpdebug.c',
52-
'upnp/src/genlib/client_table/GenlibClientSubscription.c',
53-
'upnp/src/genlib/client_table/client_table.c',
54-
'upnp/src/genlib/miniserver/miniserver.c',
55-
'upnp/src/genlib/net/http/httpparser.c',
56-
'upnp/src/genlib/net/http/httpreadwrite.c',
57-
'upnp/src/genlib/net/http/parsetools.c',
58-
'upnp/src/genlib/net/http/statcodes.c',
59-
'upnp/src/genlib/net/http/webserver.c',
60-
'upnp/src/genlib/net/sock.c',
61-
'upnp/src/genlib/net/uri/uri.c',
62-
'upnp/src/genlib/service_table/service_table.c',
63-
'upnp/src/genlib/util/list.c',
64-
'upnp/src/genlib/util/membuffer.c',
65-
'upnp/src/genlib/util/strintmap.c',
66-
'upnp/src/genlib/util/util.c',
67-
'upnp/src/threadutil/FreeList.c',
68-
'upnp/src/threadutil/LinkedList.c',
69-
'upnp/src/threadutil/ThreadPool.c',
70-
'upnp/src/threadutil/TimerThread.c',
71-
'upnp/src/urlconfig/urlconfig.c',
72-
)
73-
74-
if get_option('gena') or get_option('optssdp')
75-
upnp_sources += files(
76-
'upnp/src/uuid/md5.c',
77-
'upnp/src/uuid/sysdep.c',
78-
'upnp/src/uuid/uuid.c',
79-
)
80-
endif
81-
82-
if get_option('gena')
83-
upnp_sources += files(
84-
'upnp/src/gena/gena_callback2.c',
85-
'upnp/src/gena/gena_ctrlpt.c',
86-
'upnp/src/gena/gena_device.c',
87-
)
88-
endif
89-
90-
if get_option('soap')
91-
upnp_sources += files(
92-
'upnp/src/soap/soap_common.c',
93-
'upnp/src/soap/soap_ctrlpt.c',
94-
'upnp/src/soap/soap_device.c',
95-
)
96-
endif
97-
98-
if get_option('ssdp')
99-
upnp_sources += files(
100-
'upnp/src/ssdp/SSDPResultData.c',
101-
'upnp/src/ssdp/SSDPResultDataCallback.c',
102-
'upnp/src/ssdp/ssdp_ctrlpt.c',
103-
'upnp/src/ssdp/ssdp_device.c',
104-
'upnp/src/ssdp/ssdp_server.c',
105-
)
106-
endif
107-
108-
if get_option('tools')
109-
upnp_sources += files('upnp/src/api/upnptools.c')
110-
endif
111-
11216
ver = meson.project_version().split('.')
11317
uconf = configuration_data()
11418
uconf.set('IXML_HAVE_SCRIPTSUPPORT', true)
@@ -184,24 +88,6 @@ deps += dependency(
18488
'libcrypto',
18589
required: get_option('open_ssl'),
18690
)
187-
threads_dep = dependency('threads')
188-
189-
libupnp = library(
190-
'upnp',
191-
upnp_sources,
192-
include_directories: [libixml_incdir, libupnp_incdir],
193-
dependencies: [deps, threads_dep],
194-
link_with: libixml,
195-
install: true,
196-
version: '17.2.4',
197-
)
198-
199-
pkg = import('pkgconfig')
200-
pkg.generate(
201-
libupnp,
202-
name: 'libupnp',
203-
subdirs: 'upnp',
204-
)
20591

20692
headers = files(
20793
'ixml/inc/ixml.h',
@@ -238,10 +124,12 @@ install_headers(
238124
subdir: 'upnp',
239125
)
240126

241-
libupnp_dep = declare_dependency(
242-
include_directories: [libixml_incdir, libupnp_incdir],
243-
link_with: libupnp,
244-
)
127+
libupnp_incdir = include_directories('.', 'ixml/inc', 'upnp/inc')
128+
depinc = include_directories('ixml/inc', 'upnp/inc')
129+
threads_dep = dependency('threads')
130+
131+
subdir('ixml')
132+
subdir('upnp')
245133

246134
if get_option('samples') and get_option('tools')
247135
sample_conf = configuration_data()
@@ -260,6 +148,7 @@ if get_option('samples') and get_option('tools')
260148
'upnp/sample/linux/tv_ctrlpt_main.c',
261149
include_directories: toolinc,
262150
dependencies: [libupnp_dep, threads_dep],
151+
override_options: cstd,
263152
install: true,
264153
)
265154
endif
@@ -273,6 +162,7 @@ if get_option('samples') and get_option('tools')
273162
'upnp/sample/linux/tv_combo_main.c',
274163
include_directories: toolinc,
275164
dependencies: [libupnp_dep, threads_dep],
165+
override_options: cstd,
276166
install: true,
277167
)
278168
endif
@@ -285,6 +175,7 @@ if get_option('samples') and get_option('tools')
285175
'upnp/sample/linux/tv_device_main.c',
286176
include_directories: toolinc,
287177
dependencies: [libupnp_dep, threads_dep],
178+
override_options: cstd,
288179
install: true,
289180
)
290181

Lines changed: 94 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,94 @@
1+
upnp_sources = files(
2+
'src/api/UpnpActionComplete.c',
3+
'src/api/UpnpActionRequest.c',
4+
'src/api/UpnpDiscovery.c',
5+
'src/api/UpnpEvent.c',
6+
'src/api/UpnpEventSubscribe.c',
7+
'src/api/UpnpExtraHeaders.c',
8+
'src/api/UpnpFileInfo.c',
9+
'src/api/UpnpStateVarComplete.c',
10+
'src/api/UpnpStateVarRequest.c',
11+
'src/api/UpnpString.c',
12+
'src/api/UpnpSubscriptionRequest.c',
13+
'src/api/upnpapi.c',
14+
'src/api/upnpdebug.c',
15+
'src/genlib/client_table/GenlibClientSubscription.c',
16+
'src/genlib/client_table/client_table.c',
17+
'src/genlib/miniserver/miniserver.c',
18+
'src/genlib/net/http/httpparser.c',
19+
'src/genlib/net/http/httpreadwrite.c',
20+
'src/genlib/net/http/parsetools.c',
21+
'src/genlib/net/http/statcodes.c',
22+
'src/genlib/net/http/webserver.c',
23+
'src/genlib/net/sock.c',
24+
'src/genlib/net/uri/uri.c',
25+
'src/genlib/service_table/service_table.c',
26+
'src/genlib/util/list.c',
27+
'src/genlib/util/membuffer.c',
28+
'src/genlib/util/strintmap.c',
29+
'src/genlib/util/util.c',
30+
'src/threadutil/FreeList.c',
31+
'src/threadutil/LinkedList.c',
32+
'src/threadutil/ThreadPool.c',
33+
'src/threadutil/TimerThread.c',
34+
'src/urlconfig/urlconfig.c',
35+
)
36+
37+
if get_option('gena') or get_option('optssdp')
38+
upnp_sources += files('src/uuid/md5.c', 'src/uuid/sysdep.c', 'src/uuid/uuid.c')
39+
endif
40+
41+
if get_option('gena')
42+
upnp_sources += files(
43+
'src/gena/gena_callback2.c',
44+
'src/gena/gena_ctrlpt.c',
45+
'src/gena/gena_device.c',
46+
)
47+
endif
48+
49+
if get_option('soap')
50+
upnp_sources += files(
51+
'src/soap/soap_common.c',
52+
'src/soap/soap_ctrlpt.c',
53+
'src/soap/soap_device.c',
54+
)
55+
endif
56+
57+
if get_option('ssdp')
58+
upnp_sources += files(
59+
'src/ssdp/SSDPResultData.c',
60+
'src/ssdp/SSDPResultDataCallback.c',
61+
'src/ssdp/ssdp_ctrlpt.c',
62+
'src/ssdp/ssdp_device.c',
63+
'src/ssdp/ssdp_server.c',
64+
)
65+
endif
66+
67+
if get_option('tools')
68+
upnp_sources += files('src/api/upnptools.c')
69+
endif
70+
71+
libupnp = library(
72+
'libupnp',
73+
upnp_sources,
74+
include_directories: ['src/inc', 'src/threadutil', libupnp_incdir],
75+
dependencies: [deps, threads_dep],
76+
name_prefix: '',
77+
link_with: libixml,
78+
override_options: cstd,
79+
install: true,
80+
version: '17.2.4',
81+
)
82+
83+
libupnp_dep = declare_dependency(
84+
include_directories: depinc,
85+
link_with: libupnp,
86+
)
87+
88+
meson.override_dependency('libupnp', libupnp_dep)
89+
90+
pkg = import('pkgconfig')
91+
pkg.generate(
92+
libupnp,
93+
subdirs: 'upnp',
94+
)

0 commit comments

Comments
 (0)