Check LMS offsets are sane at runtime
@@ -733,6 +733,12 @@ int mbedtls_lms_sign( mbedtls_lms_private_t *ctx,
*/
ctx->q_next_usable_key += 1;
+ if ( MBEDTLS_LMS_SIG_LEN(ctx->params.type, ctx->params.otstype)
+ < SIG_OTS_SIG_OFFSET )
+ {
+ return MBEDTLS_ERR_LMS_BAD_INPUT_DATA;
+ }
+
ret = mbedtls_lmots_sign( &ctx->ots_private_keys[q_leaf_identifier],
f_rng, p_rng, msg, msg_size,
sig + SIG_OTS_SIG_OFFSET,
