diff --git a/server/modules/authenticator/cdc_plain_auth.c b/server/modules/authenticator/cdc_plain_auth.c index 0c605f675..e50dcb482 100644 --- a/server/modules/authenticator/cdc_plain_auth.c +++ b/server/modules/authenticator/cdc_plain_auth.c @@ -285,6 +285,12 @@ cdc_auth_set_client_data(CDC_session *client_data, uint8_t *client_auth_packet, int client_auth_packet_size) { + if (client_auth_packet_size % 2 != 0) + { + /** gw_hex2bin expects an even number of bytes */ + client_auth_packet_size--; + } + int rval = CDC_STATE_AUTH_ERR; int decoded_size = client_auth_packet_size / 2; char decoded_buffer[decoded_size + 1]; // Extra for terminating null