]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
tacacs: Clear leftover when we decode a complete packet and no data is left in the...
authorArran Cudbard-Bell <a.cudbardb@freeradius.org>
Fri, 10 Feb 2023 03:17:10 +0000 (21:17 -0600)
committerArran Cudbard-Bell <a.cudbardb@freeradius.org>
Fri, 10 Feb 2023 03:17:10 +0000 (21:17 -0600)
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

src/listen/tacacs/proto_tacacs_tcp.c

index f9543b9ad65535ab9bf5dcf7adaccbde7105dd84..26c51369cd26c271ffd9981b28d7bb15dc121134 100644 (file)
@@ -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();