Format: 1.8 Date: Tue, 22 Dec 2015 00:45:59 +0300 Source: vdr-plugin-vnsiserver Binary: vdr-plugin-vnsiserver Architecture: source Version: 1.3.1-882~d96f211-precise Distribution: precise Urgency: medium Maintainer: Andrey Pavlenko Changed-By: Andrey Pavlenko Description: vdr-plugin-vnsiserver - VDR-Network-Streaming-Interface Changes: vdr-plugin-vnsiserver (1.3.1-882~d96f211-precise) precise; urgency=medium . * [74fb8d2292b8f62c194e1372247cc13f5de1183f] vnsiclient: "timeout" is optional in ChannelStream_Open() . Current pvr.vdr.vnsi causes the "Malformed VNSI packet" error to be triggered because it omits the "timeout" in the ChannelStream_Open packet. It's hard to tell what's right and what's wrong, because there is no VNSI protocol definition. This worked before (due to lack of error handling), so let's make the "timeout" optional. . . * [178a4d7fa589076a7ca5b7275abba20f4ad10a53] requestpacket: throw exception on error . Instead of returning bogus data, throw an exception to jump right to the error handler. . This adds verification to all packet parsers. As a side effect, this fixes various NULL pointer dereferences and other critical bugs. . . * [110fba4a93877fdcc065530c812e035ced245208] vnsiclient: use strcpy() instead of strncpy() . The use of strncpy() pretends that care was taken to avoid a buffer overflow, but the nature of strncpy() was misunderstood by the original code author. The size parameter is supposed to specify the buffer size, not the input string size. By passing the input string size, the null terminator is omitted, which is only mitigated by the fact that the replacement string has the same size as the original string, so the null terminator is already there. . So let's stop pretending, and do what we were really doing all the time. . . * [dc01e5a27590f3539871e8699c86f7b844b524fc] vnsiclient: use std::string in processRECORDINGS_Rename() . For exception-safety. This also fixes a buffer overflow bug due to use of unsafe string functions. . . * [6935d3e46c231e369621c7eb343d71dfc0613a0d] vnsiclient: allocate cIndexFile on the stack . . . * [43d68ccb1f21c10bdb616a837a5eb37e93b5a8ef] vnsiclient: use std::auto_ptr to be exception-safe . I'd prefer to use std::unique_ptr, but I was asked not to use C++11 features in this project. . . * [1da5ca12c51a14c05bda9a6e6ad375fcaae158a3] vnsiclient: fix two memory leaks . A VNSI client can cause memory leaks on the server process by sending "OSD_Connect" or "ChannelStream_Open" packets repeatedly. . . * [1b3b46a1b465eb4346c974cc2de53ac1e0830732] vnsiclient: remove nullptr checks before "delete" . "delete nullptr" is legal in C++. . . * [ae2c53f180bfcc0a063af0d98db8060bf90a9cb3] requestpacket, vnsiclient: allocate data with new[] . * [15515fd257e91bd4786ae34bd9bdcadba30a5f0f] status: use clear() instead of erase(begin, end) . * [9685cbed2ff31566ff00d56438ba136d6bb7e003] vnsi: allocate cDvbVsniDeviceProbe statically . * [f4e8f11671e7449e856fc8df0698beae228f28e9] vnsi: move cDvbVsniDeviceProbe, no forward declaration . * [bac1534e38e4ed8af636a0bba7ca6a387fc4a290] videobuffer: remove NULL check before free() . * [4a2334cba53ac6bc92ee11f6ea77ed00a31c870b] videobuffer: allocate cRingBufferLinear statically . * [3ea53c524afecf9b530d8712bed698432926ddce] parser, parser_MPEGAudio: fix memory leak during realloc() . If realloc() fails, the buffer pointer is cleared, but not freed. . . * [6167cd81aeee290cd862ff6b8c4c8205ffdd3d11] parser, parser_MPEGAudio: remove NULL check before free() . . * [07a687cdd62fe836921c4104af83245a9c028e02] parser_MPEGAudio: use free() instead of delete . The buffer was allocated with malloc(), and it's illegal to use delete. . . * [d2112ca4cae9b8fabf90c593e8027cdbe742ca39] channelscancontrol: remove NULL checks before free() . free(NULL) is legal. Remove the freeAndNull() macro because we never need to assign NULL in the destructor. Remove the deleteAndNull() macro because it's unused. . . * [8f8d56a5712c60de785e63b8e2fe8e1c039e29c9] recplayer: allocate cIndexFile statically . Fixes a memory leak, because the cIndexFile instance was never freed. . . * [0a762dbf2c6bc42a0b79accdcc7e87119f6a9433] recplayer: use std::string instead of manual string allocation . * [4860712f3b428fb9cd06197936d049208feea188] recplayer: m_segments stores instances, not pointers . Less overhead. . . * [7f3d9b2e6cf94be27270b0ee589e2888235a0429] recplayer: use std::vector instead of cVector . cVector is a badly designed class: it has virtual methods (overhead!), and it requires its storage type to have a constructor taking an integer. . . * [e70a91ac20950ad0bf1cf27b91c87c891491aa9b] recplayer: use C++ initializers in constructor . * [1f377a9b78c44abf16968e0c04e14a88e7d3c6df] vnsiclient: convert m_req to parameter . This must be a parameter, because it belongs to one protocol request, not to the object. . . * [b9a44cefaba74d843dec1acc70317d00edf67737] vnsiclient: allocate cRequestPacket on the stack . Guaranteed automatic deallocation. . . * [fdebdf6f7b7f4816deada6ecb4e3c379470f36f8] vnsiclient: add more local cResponsePacket variables . Create instances where they are needed. This makes the code more robust, because the lifetime of all instances is clear and managed by the C++ compiler. . . * [bbdcbd349e256bc005f4dd4e68f1bb6fcace7498] vnsiclient, streamer: allocate cResponsePacket on the stack . Less overhead and better exception-safety. . . * [32b3f8424654bf6873144d6998d81154faa2d03b] vnsiosd: make the cResponsePacket variable local . * [6f1ccbd8eb7498052f031400e9babae9f6ab0468] requestpacket: init*() returns void . None of the implementations has an error condition. This change allows us to remove lots of unnecessary error handlers in callers. . . * [40f5618791dc14b8e27a451a1224bd6c2d7df3a5] include cleanup . . * [4fd100eeb4cf0705b3ef73ad60369eb5fbc6d136] requestpacket: use size_t instead of uint32_t for memory sizes . * [409119bbf73ae3b864635c5bfb0cfce880371017] requestpacket: make read-only methods "const" . * [108e077fc6dcdead148db1748488a2d9d9910546] requestpacket: remove method serverError() . As described in my commit message of 120fb57, the method serverError() was used in a way that was never going to work as designed. Let's remove this. . . * [8698e18487d879cb04081e3b2804b67000cba2b4] requestpacket: do not transfer ownership in getData() . This is a fragile thing to do, and cumbersome for callers to implement. This change is pretty safe because there's no caller. Checksums-Sha1: 2e03e08d9a5829802eefd58ebf3afecaf117e5e3 1877 vdr-plugin-vnsiserver_1.3.1-882~d96f211-precise.dsc 1ec4cbfc49ea99281d87cdc9460b5d5a847732da 74885 vdr-plugin-vnsiserver_1.3.1-882~d96f211.orig.tar.bz2 bc326f68826fecc6d5e0fd34ae02f99952457741 3919 vdr-plugin-vnsiserver_1.3.1-882~d96f211-precise.debian.tar.bz2 Checksums-Sha256: dc9ddc426028bca74a38fbb4d92c47629eb627bd10edfe50846b887988cade82 1877 vdr-plugin-vnsiserver_1.3.1-882~d96f211-precise.dsc f188c939e125b0cb4c5c0d23b5163b0566f2c56207cfe389d0e9fede32eff940 74885 vdr-plugin-vnsiserver_1.3.1-882~d96f211.orig.tar.bz2 88e25dd3d32f8bbdf1c9e12a1f6f13070abd9e1b863daf279cedce6335e5dfdc 3919 vdr-plugin-vnsiserver_1.3.1-882~d96f211-precise.debian.tar.bz2 Files: c14d6f4ff2ea3a70db6c61a1e5a48241 1877 video extra vdr-plugin-vnsiserver_1.3.1-882~d96f211-precise.dsc 5e2070dd51e38858dcefbbf9b411a9c8 74885 video extra vdr-plugin-vnsiserver_1.3.1-882~d96f211.orig.tar.bz2 626948de31620b15687f20b299a40fa3 3919 video extra vdr-plugin-vnsiserver_1.3.1-882~d96f211-precise.debian.tar.bz2