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@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