[crypto] Allow for zero-length big integer literals

Ensure that zero-length big integer literals are treated as containing
a zero value.  Avoid tests on every big integer arithmetic operation
by ensuring that bigint_required_size() always returns a non-zero
value: the zero-length tests can therefore be restricted to only
bigint_init() and bigint_done().

Signed-off-by: Michael Brown <mcb30@ipxe.org>
This commit is contained in:
Michael Brown
2025-12-29 14:01:46 +00:00
parent 01038893a3
commit 7c39c04a53
3 changed files with 15 additions and 4 deletions

View File

@@ -28,8 +28,8 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
* @ret size Number of elements
*/
#define bigint_required_size( len ) \
( ( (len) + sizeof ( bigint_element_t ) - 1 ) / \
sizeof ( bigint_element_t ) )
( (len) ? ( ( (len) + sizeof ( bigint_element_t ) - 1 ) / \
sizeof ( bigint_element_t ) ) : 1 )
/**
* Determine number of elements in big-integer type