From: Arran Cudbard-Bell Date: Fri, 10 Feb 2023 03:17:10 +0000 (-0600) Subject: tacacs: Clear leftover when we decode a complete packet and no data is left in the... X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=f5f52fe521e8bbb589cfd2985ab53e1e1452b7c2;p=thirdparty%2Ffreeradius-server.git tacacs: Clear leftover when we decode a complete packet and no data is left in the buffer This caused a spurious read, which lead to the socket being destroyed and no data being returned to the TACACS client when the initial request was fragmented --- diff --git a/src/listen/tacacs/proto_tacacs_tcp.c b/src/listen/tacacs/proto_tacacs_tcp.c index f9543b9ad65..26c51369cd2 100644 --- a/src/listen/tacacs/proto_tacacs_tcp.c +++ b/src/listen/tacacs/proto_tacacs_tcp.c @@ -191,6 +191,12 @@ static ssize_t mod_read(fr_listen_t *li, UNUSED void **packet_ctx, fr_time_t *re */ if (in_buffer > (size_t) packet_len) { *leftover = in_buffer - packet_len; + + /* + * We now have a complete packet, clear leftover. + */ + } else { + *leftover = 0; } *recv_time_p = fr_time();