From: Alan T. DeKok Date: Wed, 19 Aug 2020 12:08:25 +0000 (-0400) Subject: we only support TACACS+ version 12.0 or 12.1 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=654c3fed63c7697b1f193bf91307ddbbad2f569f;p=thirdparty%2Ffreeradius-server.git we only support TACACS+ version 12.0 or 12.1 --- diff --git a/src/protocols/tacacs/base.c b/src/protocols/tacacs/base.c index 94106d0fc00..94010f3dc6c 100644 --- a/src/protocols/tacacs/base.c +++ b/src/protocols/tacacs/base.c @@ -194,6 +194,14 @@ ssize_t fr_tacacs_length(uint8_t const *buffer, size_t buffer_len) return sizeof(pkt->hdr); } + /* + * TACACS major / minor version MUST be 12.0 or 12.1 + */ + if (!((buffer[0] == 0xc0) || (buffer[0] == 0xc1))) { + fr_strerror_printf("Unsupported TACACS+ version %02x", buffer[0]); + return -1; + } + /* * There's no reason to accept 64K TACACS+ packets. */ diff --git a/src/protocols/tacacs/decode.c b/src/protocols/tacacs/decode.c index 1137d135e39..4dbb8adc97a 100644 --- a/src/protocols/tacacs/decode.c +++ b/src/protocols/tacacs/decode.c @@ -185,6 +185,14 @@ ssize_t fr_tacacs_decode(TALLOC_CTX *ctx, uint8_t const *buffer, size_t buffer_l return -1; } + /* + * TACACS major / minor version MUST be 12.0 or 12.1 + */ + if (!((buffer[0] == 0xc0) || (buffer[0] == 0xc1))) { + fr_strerror_printf("Unsupported TACACS+ version %02x", buffer[0]); + return -1; + } + /* * There's no reason to accept 64K TACACS+ packets. */