[Pkg-mpd-maintainers] Bug#953110: libmpdclient2: broken request when size exceeds 4096 bytes
Damyan Ivanov
dmn at debian.org
Wed Mar 4 17:23:24 GMT 2020
Package: libmpdclient2
Version: 2.16-1
Severity: normal
Tags: upstream
Control: found -1 2.18-1
Reproducer:
Uses mpc to send a 'find' request, containing an invalid search expression. The
expected result is an error message about the invalid search expression.
working:
$ strace -s 40 -e trace=sendto,recvfrom mpc find '('$(for i in $(seq 1 4086); do echo -n "+"; done)')'
recvfrom(3, "OK MPD 0.21.4\n", 4096, MSG_DONTWAIT, NULL, NULL) = 14
sendto(3, "find \"(+++++++++++++++++++++++++++++++++"..., 4096, MSG_DONTWAIT, NULL, 0) = 4096
recvfrom(3, "ACK [2 at 0] {find} Word expected\n", 4096, MSG_DONTWAIT, NULL, NULL) = 31
mpd error: Word expected
+++ exited with 1 +++
Note the request size on line 3: 4096 bytes.
broken:
The only difference is one more '+' in the expression, which would result in a
request of 4097 bytes.
$ strace -s 40 -e trace=sendto,recvfrom mpc find '('$(for i in $(seq 1 4087); do echo -n "+"; done)')'
recvfrom(3, "OK MPD 0.21.4\n", 4096, MSG_DONTWAIT, NULL, NULL) = 14
mpd error: Timeout
+++ exited with 1 +++
Instead of error about the invalid request, a timeout occurs after 30 seconds
because the request is not really sent (note the missing sendto() call).
Ideally, libmpdclient should support requests of arbitrary size (eventually
reaching the server limit), but if that is not feasible, at least a proper
error reporting would be nice.
Thanks for taking care of mpd software in Debian.
Cheers,
dam
-- System Information:
Debian Release: 10.3
APT prefers stable
APT policy: (990, 'stable'), (500, 'unstable'), (500, 'testing')
Architecture: amd64 (x86_64)
Kernel: Linux 4.19.0-8-amd64 (SMP w/2 CPU cores)
Locale: LANG=bg_BG.UTF-8, LC_CTYPE=bg_BG.UTF-8 (charmap=UTF-8), LANGUAGE=bg_BG.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/bash
Init: systemd (via /run/systemd/system)
Versions of packages libmpdclient2 depends on:
ii libc6 2.29-3
libmpdclient2 recommends no packages.
libmpdclient2 suggests no packages.
-- no debconf information
More information about the Pkg-mpd-maintainers
mailing list