[baremetal] Avoid narrow loop counters etc
Use `uint_fast8_t` instead of `unsigned char` in various loop-type
situations. This avoids the need for a 16 or 32-bit system to insert
explicit narrow-to-8-bit instructions.
Not the result of an exhaustive source analysis, rather inspecting
the disassembly output for a cut-down Cortex-M0+ build looking for
UXTB etc instructions, so there could well be more in the complete
configuration.
Signed-off-by: Kevin Bracey <kevin.bracey@arm.com>
diff --git a/library/cipher.c b/library/cipher.c
index e0fd39d..6eab899 100644
--- a/library/cipher.c
+++ b/library/cipher.c
@@ -36,6 +36,7 @@
#include "mbedtls/platform_util.h"
#include <stdlib.h>
+#include <stdint.h>
#include <string.h>
#if defined(MBEDTLS_CHACHAPOLY_C)
@@ -591,7 +592,7 @@
size_t data_len )
{
size_t padding_len = output_len - data_len;
- unsigned char i;
+ uint_fast8_t i;
for( i = 0; i < padding_len; i++ )
output[data_len + i] = (unsigned char) padding_len;
@@ -601,7 +602,7 @@
size_t *data_len )
{
size_t i, pad_idx;
- unsigned char padding_len, bad = 0;
+ uint_fast8_t padding_len, bad = 0;
if( NULL == input || NULL == data_len )
return( MBEDTLS_ERR_CIPHER_BAD_INPUT_DATA );
@@ -631,7 +632,7 @@
size_t output_len, size_t data_len )
{
size_t padding_len = output_len - data_len;
- unsigned char i = 0;
+ uint_fast8_t i = 0;
output[data_len] = 0x80;
for( i = 1; i < padding_len; i++ )
@@ -642,7 +643,7 @@
size_t *data_len )
{
size_t i;
- unsigned char done = 0, prev_done, bad;
+ uint_fast8_t done = 0, prev_done, bad;
if( NULL == input || NULL == data_len )
return( MBEDTLS_ERR_CIPHER_BAD_INPUT_DATA );
@@ -670,7 +671,7 @@
size_t output_len, size_t data_len )
{
size_t padding_len = output_len - data_len;
- unsigned char i = 0;
+ uint_fast8_t i = 0;
for( i = 1; i < padding_len; i++ )
output[data_len + i - 1] = 0x00;