Package: cubemap
Version: 1.3.1-3
Severity: important
Tags: patch

Hi,

There's a bug in Cubemap where, if one makes a stream with path exactly
7 characters long (e.g. “/abc.ts”), it would match the check for ?backlog
at the end (since find() returns -1 on not found). This would cause
massively increased latency (depending on the size of the backlog), and also
problems with clients such as VLC which don't properly empty socket buffers.

The following trivial patch fixes the issue:

diff --git a/server.cpp b/server.cpp
index afaab9b..608ed6b 100644
--- a/server.cpp
+++ b/server.cpp
@@ -653,7 +653,7 @@ int Server::parse_request(Client *client)
 
        string url = request_tokens[1];
        client->url = url;
-       if (url.find("?backlog") == url.size() - 8) {
+       if (url.size() > 8 && url.find("?backlog") == url.size() - 8) {
                client->stream_pos = -2;
                url = url.substr(0, url.size() - 8);
        } else {

The patch has been included in Cubemap 1.3.2, which contains no other changes.
Please consider fixing it for stretch, as it's a confusing and potentially
pretty bad bug.

-- System Information:
Debian Release: 9.0
  APT prefers testing-proposed-updates
  APT policy: (500, 'testing-proposed-updates'), (500, 'testing')
Architecture: amd64
 (x86_64)
Foreign Architectures: i386

Kernel: Linux 4.11.2 (SMP w/40 CPU cores)
Locale: LANG=en_DK.UTF-8, LC_CTYPE=en_DK.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
Init: systemd (via /run/systemd/system)

Versions of packages cubemap depends on:
ii  adduser              3.115
ii  init-system-helpers  1.48
ii  libc6                2.24-10
ii  libgcc1              1:6.3.0-18
pn  libprotobuf7         <none>
ii  libstdc++6           6.3.0-18
ii  lsb-base             9.20161125

cubemap recommends no packages.

Versions of packages cubemap suggests:
ii  logrotate   3.11.0-0.1
ii  munin-node  2.0.33-1

Reply via email to