From: Arran Cudbard-Bell Date: Sun, 8 Nov 2020 14:55:03 +0000 (-0600) Subject: More minor length fixes in fr_radius_ascend_secret X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=ed3bd6ee6fbc0e2c59f8441c31cd373f0281ccaa;p=thirdparty%2Ffreeradius-server.git More minor length fixes in fr_radius_ascend_secret --- diff --git a/src/protocols/radius/base.c b/src/protocols/radius/base.c index dcb5cc601e3..b628b169833 100644 --- a/src/protocols/radius/base.c +++ b/src/protocols/radius/base.c @@ -231,7 +231,7 @@ size_t fr_radius_attr_len(fr_pair_t const *vp) * encrypting passwords to RADIUS. */ ssize_t fr_radius_ascend_secret(fr_dbuff_t *dbuff, uint8_t const *in, size_t inlen, - char const *secret, uint8_t const *vector) + char const *secret, uint8_t const vector[static RADIUS_AUTH_VECTOR_LENGTH]) { fr_md5_ctx_t *md5_ctx; size_t i; @@ -246,7 +246,7 @@ ssize_t fr_radius_ascend_secret(fr_dbuff_t *dbuff, uint8_t const *in, size_t inl fr_md5_final(digest, md5_ctx); fr_md5_ctx_free(&md5_ctx); - if (inlen > RADIUS_AUTH_VECTOR_LENGTH) inlen = RADIUS_AUTH_VECTOR_LENGTH; + if (inlen > sizeof(digest)) inlen = sizeof(digest); for (i = 0; i < inlen; i++) digest[i] ^= in[i]; fr_dbuff_memcpy_in(&work_dbuff, digest, sizeof(digest)); diff --git a/src/protocols/radius/radius.h b/src/protocols/radius/radius.h index 54024884146..7eb0aff5769 100644 --- a/src/protocols/radius/radius.h +++ b/src/protocols/radius/radius.h @@ -119,7 +119,7 @@ bool fr_radius_ok(uint8_t const *packet, size_t *packet_len_p, uint32_t max_attributes, bool require_ma, decode_fail_t *reason) CC_HINT(nonnull (1,2)); ssize_t fr_radius_ascend_secret(fr_dbuff_t *dbuff, uint8_t const *in, size_t inlen, - char const *secret, uint8_t const *vector); + char const *secret, uint8_t const vector[static RADIUS_AUTH_VECTOR_LENGTH]); ssize_t fr_radius_recv_header(int sockfd, fr_ipaddr_t *src_ipaddr, uint16_t *src_port, unsigned int *code);