forked from pupnp/pupnp
-
Notifications
You must be signed in to change notification settings - Fork 0
/
ChangeLog
4045 lines (2794 loc) · 150 KB
/
ChangeLog
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
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
*******************************************************************************
Version 1.8.4
*******************************************************************************
2017-11-17 Marcelo Jimenez <mroberto(at)users.sourceforge.net>
GitHub #57 - 1.8.3 broke ABI without changing SONAME
Opened by jcowgill
This change in 1.8.3 broke the ABI and therefore the SONAME should have
been changed (ie: age reset to 0):
EXPORT_SPEC int UpnpAddVirtualDir(
/*! [in] The name of the new directory mapping to add. */
- const char *dirName);
+ const char *dirName,
+ /*! [in] The cookie to associated with this virtual directory */
+ const void *cookie,
+ /*! [out] The cookie previously associated, if mapping is already present */
+ const void **oldcookie);
If only the cookie argument was added, you could probably get away with
this because all that would happen is that a garbage value is passed
around without being used. With the addition of oldcookie, any old
programs will not initialise this value and will probably segfault when
libupnp tries to write to it.
*******************************************************************************
Version 1.8.3
*******************************************************************************
2017-09-07 Dave Overton <david(at)insomniavisions.com>
Add userdata/cookie to virtualDir callbacks
As with the main Device APIs (UpnpRegisterRootDevice etc), it is useful
to have a userdata/cookie pointer returned with each callback.
This patch allows one cookie per registered path which enables a variety
of functionality in client apps.
2017-09-03 Uwe Kleine-König <uwe@kleine-koenig.org>
Fix large file system support
libupnp uses large file support (if available). If a program linking to
libupnp does not however it creates mismatches in callframes. See
Issue #51 for the results.
This simplifies LFS support by using AC_SYS_LARGEFILE_SENSITIVE instead of
manually defining _LARGE_FILE_SOURCE and _FILE_OFFSET_BITS (which is
useless on architectures where the size of off_t is fixed).
Furthermore additional logic is introduced to catch a library user without
64 bit wide off_t on such a platform.
upnp.h also makes use of off_t, but as this file includes FileInfo.h, the
latter is the single right place for this check.
This fixes #52 which is a generalized variant of #51.
2017-08-19 Uwe Kleine-König <uwe@kleine-koenig.org>
configure.ac: Drop copying of include files
The comment suggests this is for windows compilation. It should be easily
possible to add the source directory as an include path to the windows
compiler, too, so drop this. (Otherwise this should better be done using
AC_CONFIG_COMMANDS.)
2017-09-03 Uwe Kleine-König <uwe@kleine-koenig.org>
Let source code use autoconfig.h not the public upnpconfig.h
The former is the one supposed to be used for internal code. upnpconfig.h is only
for public stuff.
2017-08-19 Uwe Kleine-König <uwe@kleine-koenig.org>
configure.ac: Fix typo s/optionnal/optional/
2017-08-08 Marcelo Jimenez <mroberto(at)users.sourceforge.net>
Fix broken samples when configured with --disable-ipv6.
*******************************************************************************
Version 1.8.2
*******************************************************************************
2017-07-24 Michael Osipov
Initialize in_addr and in6_addr to avoid garbage output if never written
If any of the address families isn't available in UpnpGetIfInfo(),
especially IPv6, always init both structs with zero to avoid garbage
output with inet_ntop() to gIF_IPV4 and gIF_IPV6.
See v00d00/gerbera#112 (https://github.com/v00d00/gerbera/issues/112)
for consequences: bind for IPv6 will fail.
2013-10-28 Vladimir Fedoseev <va-dos(at)users.sourceforge.net>
Attached patch allows to register multiple clients from single app.
2014-11-14 Philippe <philippe44ca(at)users.sourceforge.net>
Hi - I recently compiled libupnp on C++ Builder XE7 and had to do a few
changes to make it work. In thase this helps, I've generated a small
patch file.
2015-04-30 Hugo Beauzée-Luyssen <chouquette(at)users.sourceforge.net>
When building using a strict mode (-std=c++11 instead of -std=gnu++11,
for instance), the WIN32 macro isn't defined. The attached patch fixes
it by using _WIN32 instead.
2015-02-06 Jean-Francois Dockes <jf@dockes.org>
Queue events on their subscription object instead of adding them to the
thread pool immediately.
Events destined for a non-responding control point would flood the
thread pool and prevent correct dispatching to other clients, sometimes
to the point of disabling the device. Events are now queued without
allocating thread resources and properly discarded when a client is not
accepting them.
2015-02-03 Jean-Francois Dockes <jf@dockes.org>
genaInitNotify()/genaInitNotifyExt() and
genaNotifyAll()/genaNotifyAllExt() are relatively complicated methods
which only differ by the format of an input parameter. This update
extracts the common code for easier maintenance, esp. relating to the
queueing modifications to follow.
*******************************************************************************
Version 1.8.1
*******************************************************************************
2017-04-26 Marcelo Jimenez <mroberto(at)users.sourceforge.net>
Fix some compiler warning messages on md5.c
2017-03-07 Fabrice Fontaine <fontaine.fabrice(at)gmail.com>
Enable IPv6 by default
2017-03-07 Fabrice Fontaine <fontaine.fabrice(at)gmail.com>
Move threadutil source code to libupnp
With this patch, threadutil library is removed as the only public
header that has been kept in 1.8.x is ithread.h which is mainly a
wrapper to pthread with inline functions.
threadutil source code will now be a part of libupnp library.
*******************************************************************************
Version 1.8.0
*******************************************************************************
2014-01-15 Peng <howtofly(at)gmail.com>
Fix memory leaks.
2013-04-27 Thijs Schreijer <thijs(at)thijsschreijer.nl>
Renamed SCRIPTSUPPORT to IXML_HAVE_SCRIPTSUPPORT for consistency. Also
updated autoconfig and automake files, so it also works on non-windows.
Option is enabled by default, because it adds an element to the node
structure. Not using an available field is better than accidentally
using an unavailable field.
2012-07-11 Thijs Schreijer <thijs(at)thijsschreijer.nl>
Changed param to const UpnpAcceptSubscriptionExt() for consistency
2012-06-07 Thijs Schreijer <thijs(at)thijsschreijer.nl>
updated ixmlDocument_createAttributeEx() and ixmlDocument_createAttribute()
to use parameter DOMString instead of char * (same but now consistent)
2012-05-06 Thijs Schreijer <thijs(at)thijsschreijer.nl>
Added script support (directive SCRIPTSUPPORT) for better support of
garbage collected script languages. The node element gets a custom tag
through ixmlNode_setCTag() and ixmlNode_getCTag(). And a callback upon
releasing the node resources can be set using ixmlSetBeforeFree()
See updated readme for usage.
2012-03-24 Fabrice Fontaine <fabrice.fontaine(at)orange.com>
SF Bug Tracker id 3510595 - UpnpDownloadXmlDoc : can't get the file
Submitted: Marco Virgulti ( mvirg83 ) - 2012-03-23 10:08:08 PDT
There is a problem, perhaps, during downloading a document by
UpnpDownloadXmlDoc. During debugging i've found that in an not exported
api (unfortunately i forgot the code line...) where it is setted a
local variable "int timeout" to -1 then passed directly to another
function for sending data through tcp socket. I patched this setting it
to 0 (there is an IF section that exits if timeout < 0). It is normal
behavior or it is a bug?
2012-03-08 Fabrice Fontaine <fabrice.fontaine(at)orange-ftgroup.com>
Check for NULL pointer in TemplateSource.h
calloc can return NULL so check for NULL pointer in CLASS##_new and
CLASS##_dup.
2012-03-08 Fabrice Fontaine <fabrice.fontaine(at)orange-ftgroup.com>
Replace strcpy with strncpy in get_hoststr
Replace strcpy with strncpy to avoid buffer overflow.
2012-03-08 Fabrice Fontaine <fabrice.fontaine(at)orange-ftgroup.com>
Memory leak fix in handle_query_variable
variable was never freed.
2011-02-07 Chandra Penke <chandrapenke(at)mcntech.com>
Add HTTPS support using OpenSSL. HTTPS support is optional and can
be enabled by passing the --enable-open-ssl argument to the
configure script.
The following methods are introduced to the public API:
UpnpInitOpenSslContext
When enabled, HTTPS can be used by using "https://" instead of
"http://" when passing URLs to the HTTP Client API.
2011-02-07 Chandra Penke <chandrapenke(at)mcntech.com>
Refactor HTTP Client API to be more generic.
The following features are added:
- Support for persistent HTTP connections (reusing HTTP
connections). Tthis is still a work in progress and relies on
applications to interpret the 'Connection' header
appropriately.
- Support for specifying request headers when making
requests. Useful for interacting with web services that require
custom headers.
- Support for retrieving response headers (this is a API only
change, some more work needs to be done to implement the actual
functionality. Specifically copy_msg_headers in httpreadwrite.c
needs to be implemented)
- Common API for all HTTP methods.
- Support for PUT, and DELETE methods.
The following methods are introduced to the public HTTP Client API
UpnpOpenHttpConnection, UpnpCloseHttpConnection, UpnpMakeHttpRequest,
UpnpWriteHttpRequest, UpnpEndHttpRequest, UpnpGetHttpResponse,
UpnpReadHttpResponse.
Removed a lot of duplicate code in httpreadwrite.c
2011-01-17 Chandra Penke <chandrapenke(at)mcntech.com>
Include upnpconfig.h in FileInfo.h to automatically include large
file macros
2011-01-17 Chandra Penke <chandrapenke(at)mcntech.com>
Fix for warnings Apple systems related to macros defined in list.h.
In list.h, in apple systems, undefine the macros prior to defining them.
2011-01-16 Marcelo Jimenez <mroberto(at)users.sourceforge.net>
Fix for UpnpFileInfo_get_LastModified() in http_MakeMessage().
UpnpFileInfo_get_LastModified() returns time_t, and http_MakeMessage()
takes a "time_t *". Thanks to Chandra Penke for pointing the bug.
2010-11-22 Marcelo Jimenez <mroberto(at)users.sourceforge.net>
Template object for ssdp_ResultData.
2010-11-10 Fabrice Fontaine <fabrice.fontaine(at)orange-ftgroup.com>
Support for "polling" select in sock_read_write.
Currently, in sock_read_write function, if the timeout is 0, pupnp
realizes a "blocking" select (with an infinite timeout). With this
patch, if timeout is set to 0, pupnp will realize a "polling" select
and returns immediately if it can not read or write on the socket. This
is very useful for GENA notifications when pupnp is trying to send
events to a disconnected Control Point. "Blocking" select can now be
done by putting a negative timeout value.
2010-09-18 Chandra Penke <chandrapenke(at)mcntech.com>
This is a minor build fix. The new Template*.h files added in the latest
code need to be exported. Patch against the latest sources is attached.
2010-08-22 Marcelo Jimenez <mroberto(at)users.sourceforge.net>
* upnp/src/api/Discovery.c: Fix a serious bug and memory leak in
UpnpDiscovery_strcpy_DeviceType(). Thanks to David Blanchet for the
patch.
2010-04-25 Marcelo Jimenez <mroberto(at)users.sourceforge.net>
Separation of the ClientSubscription object.
2010-04-24 Marcelo Jimenez <mroberto(at)users.sourceforge.net>
Protect the object destructors agains null pointers on deletion, which
should be something valid.
2010-03-27 Marcelo Jimenez <mroberto(at)users.sourceforge.net>
SF Patch Tracker [ 2987390 ] upnp_debug vs. ixml_debug
Thanks for the load of updates, I'm still assimilating them ! Could I make
a suggestion though? The addition of printNodes(IXML_Node) to upnpdebug a
dds a new dependency on ixml.h for anything using upnpdebug.h. I'm making
quite a bit of use of upnpdebug in porting things to version 1.8.0, and I'd
prefer it if printNodes could be added to ixmldebug.h instead. I'm attach
ing a patch, what do you think ?
Nick
2010-03-27 Marcelo Jimenez <mroberto(at)users.sourceforge.net>
* Forward port of svn revision 505:
SF Patch Tracker [ 2836704 ] Patch for Solaris10 compilation and usage.
Submitted By: zephyrus ( zephyrus00jp )
2010-03-20 Marcelo Jimenez <mroberto(at)users.sourceforge.net>
* SF Patch Tracker [ 2969188 ] 1.8.0: patch for FreeBSD compilation
Submitted By: Nick Leverton (leveret)
Fix the order of header inclusion for FreeBSD.
2010-03-20 Marcelo Jimenez <mroberto(at)users.sourceforge.net>
* Forward port of svn revision 502:
SF Patch Tracker [ 2836704 ] Search for nested serviceList (not
stopping at the first lis
Submitted By: zephyrus ( zephyrus00jp )
Internet Gateway Device description contains nested serviceList (rootdevice
-> servicelist, subdevice
and subdevice has the lower-level serviceList, etc..)
Unfrotunately, the sample code sample_util.c used by tv_device sample,
etc.
has a code that looks for only the first top-level serviceList.
This results in the failure to read all the services of an IGD xml
description.
Attached patch modifies this behavior and looks for the service by
visiting all the serviceList in xml document in turn.
With the modified patch (ad additional modification), I could
simulate an IGD device and created a modified control program for that.
Patch against 1.6.6
TIA.
2010-03-20 Marcelo Jimenez <mroberto(at)users.sourceforge.net>
* SF Patch Tracker [ 2973319 ] Problem in commit 499
Submitted By: Nick Leverton (leveret)
Afraid that this doesn't compile, it seems retval should be retVal in two
places.
2010-03-16 Marcelo Jimenez <mroberto(at)users.sourceforge.net>
* Fix for the ithread_mutex_unlock() logic in UpnpInit().
Thanks for Nicholas Kraft.
2010-03-15 Marcelo Jimenez <mroberto(at)users.sourceforge.net>
* SF Patch Tracker [ 2962606 ] Autorenewal errors: invalid SID,
too-short renewal interval
Submitted By: Nick Leverton (leveret)
Auto-renewals send an invalid SID due to a missing UpnpString_get_String
call. They also send a renewal interval of 0 instead of copying it from
the original subscription.
2010-03-15 Marcelo Jimenez <mroberto(at)users.sourceforge.net>
* SF Patch Tracker [ 2964685 ] patch for avoiding inet_ntoa (1.8.0)
Submitted By: Nick Leverton (leveret)
Seems like SF's tracker won't let me add a patch to someone else's issue ?!
This refers to https://sourceforge.net/support/tracker.php?aid=2724578
The calls to inet_ntoa are in getlocalhostname(), which is called from
UpnpInit when it is returning the bound IP address.
UpnpInit/getlocalhostname hasn't been updated to IPv6, I presume this is
deliberate so that it doesn't start returning IPv6 addresses and
overwriting the caller's IPv4-sized allocation.
The attached patch just updates getlocalhostname to use inet_ntop instead
of inet_ntoa, and also documents the fact that UpnpInit is IPv4 only whilst
UpnpInnit2 is both IPv4 and IPv6.
A fuller solution might be to change UpnpInit to use some variant on
UpnpGetIfInfo. UpnpInit could still be left as IPv4 only if desired -
perhaps UpnpGetIfInfo could take an option for the desired address family.
getlocalhostname and its own copy of the interface scanning code would then
be redundant. I don't have IPv6 capability here though so I'm reluctant to
change the IPv6 code, as I have no way to test it.
2010-03-15 Marcelo Jimenez <mroberto(at)users.sourceforge.net>
* SF Patch Tracker [ 2724578 ] patch for avoiding memory leaks when
add devices
each time a device been added, UpnpInit() is called, on exit, UpnpFinish()
is called, but the memories allocated by ThreadPoolInit() may lost because
there's no code to call ThreadPoolShutdown() to release the memories. And
inet_ntoa() is not thread safe, so in my patch, I substitute inet_ntoa()
with inet_ntop().
2010-03-14 Marcelo Jimenez <mroberto(at)users.sourceforge.net>
* SF Patch Tracker [ 2964687 ] Add new string based accessors to upnp
object API
As per email to pupnp-devel, this is the patch to add the _strget_
accessors for string-like objects in the interface.
Will add a further patch shortly to udpate the sample programs.
2008-06-27 Marcelo Jimenez <mroberto(at)users.sourceforge.net>
* Nicholas Kraft's patch to fix some IPv6 copy/paste issues. He
reported to be getting infinite loops with the svn code.
2008-06-13 Marcelo Jimenez <mroberto(at)users.sourceforge.net>
* SF Bug Tracker [ 1984541 ]
ixmlDocumenttoString does not render the namespace tag.
Submitted By: Beliveau - belivo
Undoing the patch that fixed this problem. In fact, there was no
problem and the patch was wrong.
2008-06-11 Marcelo Jimenez <mroberto(at)users.sourceforge.net>
* Ingo Hofmann's patch for "Content-Type in Subscription responses".
Adds charset="utf-8" attribute to the CONTENT-TYPE header line.
Hi,
I have found an inconsistency regarding the text/xml content-type
returned by libupnp. It looks like only subscription responses send
"text/xml" where all other messages contain "text/xml; charset="utf-8"".
Since I'm working on an DLNA device the latter behaviour is mandatory.
I changed the according lines in gena_device.c (see attached patch).
I'm not sure if it would be ok for other device to have the charset
field but it would help me a lot :)
Best regards,
Ingo
2008-06-04 Marcelo Jimenez <mroberto(at)users.sourceforge.net>
* SF Bug Tracker [ 1984541 ]
ixmlDocumenttoString does not render the namespace tag.
Submitted By: Beliveau - belivo
The problem occurs when converting a xml document using
ixmlDocumenttoString containing a namespace tag created with
ixmlDocument_createElementNS. The namespace tag doesn't get rendered.
example: The following code fragment prints:
<?xml version="1.0"?>
<root></root>
instead of:
<?xml version="1.0"?>
<root xmlns="urn:schemas-upnp-org:device-1-0"></root>
Code:
#include <stdlib.h>
#include <upnp/ixml.h>
int main()
{
IXML_Document* wDoc = ixmlDocument_createDocument();
IXML_Element* wRoot = ixmlDocument_createElementNS(wDoc,
"urn:schemas-upnp-org:device-1-0", "root");
ixmlNode_appendChild((IXML_Node *)wDoc,(IXML_Node *)wRoot);
DOMString wString = ixmlDocumenttoString(wDoc);
printf(wString);
free(wString);
ixmlDocument_free(wDoc);
return 0;
}
The problem was in the printing routine, not in the library data
structure.
2008-05-31 Marcelo Jimenez <mroberto(at)users.sourceforge.net>
* Charles Nepveu's suggestion of not allocating a thread for
MiniServer when it is not compiled.
2008-05-24 Marcelo Jimenez <mroberto(at)users.sourceforge.net>
* Ported Peter Hartley's patch to compile with mingw.
2008-05-24 Marcelo Jimenez <mroberto(at)users.sourceforge.net>
* Added some debug capability to ixml.
2008-05-02 Marcelo Jimenez <mroberto(at)users.sourceforge.net>
* Merged Charles Nepveu's IPv6 work. libupnp now is IPv6 enabled.
2008-02-06 Marcelo Jimenez <mroberto(at)users.sourceforge.net>
* Breaking API so that we now hide internal data structures.
2008-02-06 Marcelo Jimenez <mroberto(at)users.sourceforge.net>
* Rewrote Peter Hartley's patch to include a new extra header field in
FileInfo.
*******************************************************************************
Version 1.6.22
*******************************************************************************
2017-07-07 James Cowgill <james410(at)cowgill.org.uk>
Replace MD5 impmplementation with public-domain version
Currently the RSA MD5 implementation is used. Unfortunately the license
has some potential issues:
* The license does not explicitly allow distributing derivative works.
This was the original argument used in
[Debian #459516](https://bugs.debian.org/459516).
* The license contains an advertising clause similar to the BSD 4-clause
license. This is incompatible with the GPL and if it were enforced,
would require RSA to be mentioned by pretty much everyone who uses pupnp.
The simple solution is to replace it with a public domain
implementation. I've taken OpenBSDs implementation and tweaked it
slightly for use by pupnp by:
- Adjusting the includes.
- Removing the __bounded__ attributes which are specific to OpenBSD.
- Using the standard integer types from stdint.h.
- Using memset instead of explicit_bzero.
2016-12-16 Peter Pramberger <peterpramb(at)users.sf.net>
ixml/test/test_document.c is missing the string.h include, therefore
the compiler complains about an implicit declaration.
*******************************************************************************
Version 1.6.21
*******************************************************************************
2016-12-16 Gabriel Burca <gburca(at)github>
If the error or info log files can not be created, use stderr and
stdout instead.
2016-12-08 Uwe Kleine-König <uwe(at)kleine-koenig.org>
Fix out-of-bound access in create_url_list() (CVE-2016-8863)
If there is an invalid URL in URLS->buf after a valid one, uri_parse is
called with out pointing after the allocated memory. As uri_parse writes
to *out before returning an error the loop in create_url_list must be
stopped early to prevent an out-of-bound access
Bug: https://sourceforge.net/p/pupnp/bugs/133/
Bug-CVE: https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-8863
Bug-Debian: https://bugs.debian.org/842093
Bug-Redhat: https://bugzilla.redhat.com/show_bug.cgi?id=1388771
2016-11-30 Uwe Kleine-König <uwe(at)kleine-koenig.org>
miniserver: fix binding to ipv6 link-local addresses
Linux requires to have sin6_scope_id hold the interface id when binding to
link-local addresses. This is already in use in other parts of upnp, so
portability shouldn't be in the way here. Without this bind(2) fails with
errno=EINVAL (although ipv6(7) from manpages 4.08 specifies ENODEV in this
case).
Fixes: https://bugs.debian.org/813249
2016-09-15 Mathew Garret <(at)mjg59 (twitter)>
SF Bug Tracker #132 CVE-2016-6255: write files via POST
Submitted by: Balint Reczey in 2016-08-02
From Debian's BTS https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=831857 :
From: Salvatore Bonaccorso carnil@debian.org
To: Debian Bug Tracking System submit@bugs.debian.org
Subject: libupnp: write files via POST
Date: Wed, 20 Jul 2016 11:03:34 +0200
Source: libupnp
Version: 1:1.6.17-1
Severity: grave
Tags: security upstream
Justification: user security hole
Hi
See http://www.openwall.com/lists/oss-security/2016/07/18/13 and
https://twitter.com/mjg59/status/755062278513319936 .
Proposed fix:
https://github.com/mjg59/pupnp-code/commit/be0a01bdb83395d9f3a5ea09c1308a4f1a972cbd
Regards,
Salvatore
From Mathew Garret's commit: Don't allow unhandled POSTs to write to the filesystem by default
*******************************************************************************
Version 1.6.20
*******************************************************************************
2016-02-22 Jean-Francois Dockes <medoc(at)users.sf.net>
SF Bugs #131, Creator: Jean-Francois Dockes
I know it sounds crazy that nobody ever saw this, but the CONTENT-LENGTH
value in GENA NOTIFY messages is too small by one.
It appears that most current control points don't notice the extra
character (an LF, which is validly there but not included in
Content-Length), probably because their protocol handler is reasonably
lenient, and because the missing body LF does not prevent parsing the
XML. But there is a least one anal CP (Linn Kazoo) which barfs, because
it reads all data until connection close and the size mismatch triggers
a bug.
"Proof":
In gena_device.c:217 (notify_send_and_recv())
ret_code = http_SendMessage(&info, &timeout,
"bbb",
start_msg.buf, start_msg.length,
propertySet, strlen(propertySet),
CRLF, strlen(CRLF));
start_msg has all the headers, including the empty line.
Content-length should be strlen(propertySet) + strlen(CRLF) (2)
In gena_device.c:433 (AllocGenaHeaders())
rc = snprintf(headers, headers_size, "%s%s%"PRIzu"%s%s%s",
HEADER_LINE_1,
HEADER_LINE_2A,
strlen(propertySet) + 1,
HEADER_LINE_2B,
HEADER_LINE_3,
HEADER_LINE_4);
HEADER_LINE_2A is "CONTENT-LENGTH: ".
The following value should be strlen(propertySet) + 2
2016-01-07 Marcelo Roberto Jimenez <mroberto(at)users.sourceforge.net>
Fix for a reported integer overflow
2016-01-07 Jean-Francois Dockes <medoc(at)users.sf.net>
2016-01-07 Nick Leverton <nick(at)leverton.org>
SF Patches #60, Creator: Jean-Francois Dockes
When libupnp is configured with --enable-ipv6 but ipv6 is not available
on the system (for example because the ipv6 code is not loaded in a Linux
kernel as is the case by default on Raspbian), the ipv6 socket creation
call will fail in miniserver.c and the library init will fail, even if
the ipv4 initialisation would have succeeded.
Let a library configured with --enable-ipv6 initialize in ipv4-only
mode if ipv6 is not available instead of failing. This can happen
if no ipv6 code is configured or loaded in the kernel.
Don't fail if IPv6 is unavailable.
We might be an IPv6 enabled distro build running on an IPv4-only custom kernel.
2016-01-07 Nick Leverton <nick(at)leverton.org>
SF Bug Tracker #128, Creator: Nick Leverton
redefining strndup causes "error: expected identifier or '(' before '__extension__'"
Fix redefinition of strnlen and strndup
These are available when HAVE_STRNDUP and HAVE_STRNLEN are defined, but
libupnp provides an extern prototype anyway. Recent versions of glibc
define this prototype differently, causing the following compile error:
src/api/UpnpString.c:47:15: error: expected identifier or '(' before '__extension__'
extern char *strndup(__const char *__string, size_t __n);
2016-01-07 Nick Leverton <nick(at)leverton.org>
SF Bug Tracker #129, Creator: Nick Leverton
shutdown() on UDP sockets logs ENOTCONN message.
https://sourceforge.net/p/pupnp/bugs/129/
Fix ENOTCONN "Error in shutdown: Transport endpoint is not connected"
When logging is enabled, ssdpserver logs bursts of
"Error in shutdown: Transport endpoint is not connected"
This is because shutdown() is not supported for UDP sockets and under
recent UNIX specifications it returns ENOTCONN if used.
2016-01-07 Nick Leverton <nick(at)leverton.org>
SF Bug Tracker #127, Creator: Klaus Fischer
Miniserver uses INADDR_ANY instead of HostIP
https://sourceforge.net/p/pupnp/bugs/127/
The internal miniserver.c uses INADDR_ANY instead of the HostIP/IfName
provided when initializing libupnp. But, this HostIP/IfName gets used
for the UDP socket when multicasting SSDP messages. Because of this,
miniserver may end up sending from different IP address than ssdpserver.
This patch causes miniserver to use the already known interface address.
2016-01-07 Marcelo Roberto Jimenez <mroberto(at)users.sourceforge.net>
SF Bug Tracker #130, Creator: Shaddy Baddah
infinite loop in UpnpGetIfInfo() under WIN32
Original code makes no sense. This patch should fix it.
2015-02-04 Shaun Marko <semarko@users.sf.net>
Bug tracker #124 Build fails with --enable-debug
Build environment
Fedora 21
X86-64
* gcc 4.9.2
How to repeat
$ ./configure --enable debug
$ make
libtool: compile: gcc -DHAVE_CONFIG_H -I. -I.. -I../upnp/inc -I./inc -I../threadutil/inc
-I../ixml/inc -I./src/inc -pthread -g -O2 -Wall -MT src/api/libupnp_la-UpnpString.lo
-MD -MP -MF src/api/.deps/libupnp_la-UpnpString.Tpo -c src/api/UpnpString.c
-fPIC -DPIC -o src/api .libs/libupnp_la-UpnpString.o src/api/UpnpString.c:47:16:
error: expected identifier or '(' before 'extension'
extern char *strndup(const char *string, size_t __n);
^
Makefile:1016: recipe for target 'src/api/libupnp_la-UpnpString.lo' failed
Reason for failure
Build enables -O2 optimization flags which causes the inclusion of a
macro implementation of strndup from include/bits/string2.h.
Workarounds
Disable optimization when configuring or making:
$ configure CFLAGS='-g -pthread -O0' --enable-debug
$ make
or
$ configure --enable-debug
$ make CFLAGS='-g -pthread -O0' Define NO_STRING_INLINES
$ export CFLAGS="-DNO_STRING_INLINES -O2"
$ ./configure --enagble-debug
$ make
Fix
* Don't declare strndup in src/api/UpnpString.c if it exists
2015-02-01 Jean-Francois Dockes <medoc@users.sf.net>
Out-of-tree builds seem to be currently broken, because ixml and
threadutil files need an include path to include UpnpGlobal.h, and
configure tries to copy files into a directory which it does not create.
The patch fixes both issues.
2014-01-03 Peng <howtofly(at)gmail.com>
rewrite soap_device.c
1) separate HTTP handling from SOAP handling
2) remove repeated validity check, each check is performed exactly once
3) fix HTTP status code per UPnP spec, SOAP spec and RFC 2774
*******************************************************************************
Version 1.6.19
*******************************************************************************
2013-11-14 Marcelo Roberto Jimenez <mroberto(at)users.sourceforge.net>
SF Bug Tracker #119, Creator: Klaus Fischer
Access violation due to changed usage of pthreads-win32
Dear libupnp developers,
I have experienced a crash (access violation) when using libupnp on
Windows. The crash is actually located in pthreads-win32 and happens
when repeatedly de-/initializing libupnp on Win32 in the same process
and both libupnp and pthreads-win32 are compiled as static libraries.
So I'm doing this:
- UpnpInit()
- UpnpFinish()
- UpnpInit() <- Crash
I am already in touch with Ross Johnson on the pthreads-win32 mailing
list regarding this issue:
http://sourceware.org/ml/pthreads-win32/2013/msg00020.html
He told me the problem is that the functions
pthread_win32_process_attach/detach_np() should no longer be called
directly, but are invoked automatically now since version 2.9.0 of
pthreads-win32, which has been released approx. 1.5 years ago. Please
refer to above link for in-depth information.
So for proper using of latest pthreads-win32 library, those function
calls should vanish inside libupnp. Could you consider adapting libupnp
in that way? I would really like to use both libraries out-of-the-box
without local modifications, and this issue prevents that.
Best regards,
Klaus
2013-11-08 Peng <howtofly(at)gmail.com>
Fix several minor bugs in soap_device.c
1) remove redundant free
2) avoid user-provided ErrStr being overwritten by the default one
3) eliminated memory leak possiblity in handle_query_variable
2013-11-08 Peng <howtofly(at)gmail.com>
Fix return value check of parse_uri.
2012-06-19 Yoichi NAKAYAMA <yoichi.nakayama(at)gmail.com>
SF Bug Tracker #118, Creator: T.Iwamoto
tv_ctrlpt crashes after detecting a later version of tvcontrol service
From: gon3456@users.sf.net
Steps to reproduce:
1. Extracts and build libupnp-1.6.18
$ tar -xjf /path/to/archive/libupnp-1.6.18.tar.bz2
$ cd libupnp-1.6.18
$ ./configure
$ make
2. Applies the attached patch and remake.
$ patch -p1 < /path/to/patch/libupnp-1.6.18.patch
$ make
3. Run tv_device.
$ cd upnp/sample
$ ./tv_device
4. Run tv_ctrlpt; the tv_ctrlpt crashes soon.
$ ./tv_ctrlpt
Segmentation fault (core dumped)
This is an issue report about the sample program of control point.
The tv_ctrlpt crashes after detecting a tvdevice that contains tvcontrol:2 or higher version of tvcontrol service.
tv_ctrlpt should detect correctly such devices due to forward compatibility of control points with device.
For more information about the compatibility, please refer the following document:
DLNA Architectures and Protocols Part 1 2011 December - 7.3.2.1.3 (GUN:GZJXU)
The attached patch changes the sample programs as below:
- device: changes version of tvcontrol service from 1 to 2. This change may occur in the future.
- cp: nothing changed: cp knows version 1 of tvcontrol service only.
I know many vendors implements their control points based on the tv_ctrlpt, so I hope to fix this issue ASAP.
==
From: Yoichi NAKAYAMA
SEGV is caused by strcpy with NULL argument.
Attached patch will avoid SEGV in strcpy, but there may be other inconsistencies.
> I know many vendors implements their control points based on the tv_ctrlpt,
I don't think so. I think tv_ctrlpt is just a sample to be used with tv_device.
2013-10-28 Pino Toscano <pinotree(at)users.sourceforge.net>
Fix compilation on GNU/Hurd
2013-10-28 Peng <howtofly(at)gmail.com>
Fix return value of http_RecvPostMessage and update httpparser.c's comments
2013-10-17 Peng <howtofly(at)gmail.com>
Fix return value of process_request and related subroutines
1) Only HTTP_XXX should be return
2) Make default return value work for process_request
2013-10-15 Peng <howtofly(at)gmail.com>
Fix Content-Range generation bug
2013-09-10 zexian chen <chenzexian88(at)gmail.com>
Hi,
I had found some bugs about memory leak on libupnp-1.6.18.
It may lead to memory leak when calling ThreadPoolAdd() or
ThreadPoolAddPersistent() which does not return 0.
See the attachment for patch.
2013-09-03 Peng <howtofly(at)gmail.com>
Fix return value of config_description_doc.
UPNP_E_XXX should not be used instead of IXML_XXX
2013-09-03 Peng <howtofly(at)gmail.com>
Remove faulty free in GetDescDocumentAndURL.
temp_str, which points to part of description, should not be freed.
2013-09-02 Peng <howtofly(at)gmail.com>
Suppose the UPnP device is listening on 192.168.1.102:49152. Use the following to send
garbage bytes to the device:
while true; do echo "\""; done | netcat 192.168.1.102 49152
The device just keeps receiving these bytes and its memory usage keeps growing.
Malicious client may exploit it to exhaust the device's memory.
The attached patch eliminates this possibility.
2013-09-02 Peng <howtofly(at)gmail.com>
1) restore the scanner's original cursor position in case of
insufficient input;
2) free the memories allocated for a new header in case of a failure.
2013-08-13 Peng <howtofly(at)gmail.com>
Patch to fix behaviou when char is signed
it seems to me that there is still something wrong:
1) the new is_qdtext_char() is incorrect.
There is a trap if char is implemented as signed char.
Suppose that c is '\xFF', it will be -1 when converted to an int.
By definition, c should be qdtext:
qdtext = <any TEXT except <">>
TEXT = <any OCTET except CTLs, but including LWS>
OCTET = <any 8-bit sequence of data>
2) the character after '\\' could be either part of a quoted-pair
(together with '\\'), or a normal qdtext, since '\\' itself can
be treated as a qdtext. This is equivalent to saying that the
character after '\\' in a quoted string could be ANY octet.
A patch based on the above two observations is attached.
Peng
2013-08-13 Marcelo Roberto Jimenez <mroberto(at)users.sourceforge.net>
Enforce RFC 2616 and accept "0" after a backslash for quoted-strings.
Reported by Peng <howtofly(at)gmail.com>
2013-08-13 Peng <howtofly(at)gmail.com>
Patch to make scanner_get_token more robust (avoid over-reading).
2013-07-30 Zheng Peng <darkelf2010(at)users.sf.net>
SF ticket #116 UpnpRemoveVirtualDir wrong linked list operation
What if pVirtualDirList has two nodes and what we want to delete is the
first one. Patch attached.
2013-07-30 Sebastian Brandt <s.brandt(at)aixtrusion.de>
Dear libupnp-devels,
when POST'ing to the simple web server in libupnp, the application crashes.
This is caused by a missing "..." argument in webserver.c:1533.
Seems it has been there for a long time ... 1.6.9 and 1.6.18 have it.
webserver.c:1533 calls http_MakeMessage
/* Send response. */
http_MakeMessage(&headers, 1, 1,
"RTLSXcCc",
ret, "text/html", X_USER_AGENT);
The format parameter RTLSXcCc needs four arguments -
R - response code - ret,
T- content type - text/html,
L - struct SendInstruction * - NOT PRESENT
X - user agent - X_USER_AGENT
This results in a crash.
Changing to
http_MakeMessage(&headers, 1, 1,
"RTLSXcCc",
ret, "text/html", &RespInstr, X_USER_AGENT);
solves the situation.
Yours,
Sebastian Brandt
*******************************************************************************
Version 1.6.18
*******************************************************************************
2012-12-06 Marcelo Roberto Jimenez <mroberto(at)users.sourceforge.net>
Security fix for CERT issue VU#922681
This patch addresses three possible buffer overflows in function
unique_service_name(). The three issues have the folowing CVE numbers: