Skip to content

Commit 795c6ba

Browse files
authored
Merge pull request #323 from yanesca/iotcrypt-942-initialise-return-values
Initialise return values to an error
2 parents 1602795 + 9c2ccd2 commit 795c6ba

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

46 files changed

+342
-282
lines changed

include/mbedtls/error.h

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,9 +52,10 @@
5252
* For historical reasons, low-level error codes are divided in even and odd,
5353
* even codes were assigned first, and -1 is reserved for other errors.
5454
*
55-
* Low-level module errors (0x0002-0x007E, 0x0003-0x007F)
55+
* Low-level module errors (0x0002-0x007E, 0x0001-0x007F)
5656
*
5757
* Module Nr Codes assigned
58+
* ERROR 2 0x006E 0x0001
5859
* MPI 7 0x0002-0x0010
5960
* GCM 3 0x0012-0x0014 0x0013-0x0013
6061
* BLOWFISH 3 0x0016-0x0018 0x0017-0x0017
@@ -86,7 +87,7 @@
8687
* CHACHA20 3 0x0051-0x0055
8788
* POLY1305 3 0x0057-0x005B
8889
* CHACHAPOLY 2 0x0054-0x0056
89-
* PLATFORM 1 0x0070-0x0072
90+
* PLATFORM 2 0x0070-0x0072
9091
*
9192
* High-level module nr (3 bits - 0x0...-0x7...)
9293
* Name ID Nr of Errors
@@ -112,6 +113,9 @@
112113
extern "C" {
113114
#endif
114115

116+
#define MBEDTLS_ERR_ERROR_GENERIC_ERROR -0x0001 /**< Generic error */
117+
#define MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED -0x006E /**< This is a bug in the library */
118+
115119
/**
116120
* \brief Translate a mbed TLS error code into a string representation,
117121
* Result is truncated if necessary and always includes a terminating

library/aes.c

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@
3838
#include "mbedtls/aes.h"
3939
#include "mbedtls/platform.h"
4040
#include "mbedtls/platform_util.h"
41+
#include "mbedtls/error.h"
4142
#if defined(MBEDTLS_PADLOCK_C)
4243
#include "mbedtls/padlock.h"
4344
#endif
@@ -766,7 +767,7 @@ int mbedtls_aes_xts_setkey_enc( mbedtls_aes_xts_context *ctx,
766767
const unsigned char *key,
767768
unsigned int keybits)
768769
{
769-
int ret;
770+
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
770771
const unsigned char *key1, *key2;
771772
unsigned int key1bits, key2bits;
772773

@@ -791,7 +792,7 @@ int mbedtls_aes_xts_setkey_dec( mbedtls_aes_xts_context *ctx,
791792
const unsigned char *key,
792793
unsigned int keybits)
793794
{
794-
int ret;
795+
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
795796
const unsigned char *key1, *key2;
796797
unsigned int key1bits, key2bits;
797798

@@ -1175,7 +1176,7 @@ int mbedtls_aes_crypt_xts( mbedtls_aes_xts_context *ctx,
11751176
const unsigned char *input,
11761177
unsigned char *output )
11771178
{
1178-
int ret;
1179+
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
11791180
size_t blocks = length / 16;
11801181
size_t leftover = length % 16;
11811182
unsigned char tweak[16];

library/asn1parse.c

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929

3030
#include "mbedtls/asn1.h"
3131
#include "mbedtls/platform_util.h"
32+
#include "mbedtls/error.h"
3233

3334
#include <string.h>
3435

@@ -124,7 +125,7 @@ int mbedtls_asn1_get_bool( unsigned char **p,
124125
const unsigned char *end,
125126
int *val )
126127
{
127-
int ret;
128+
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
128129
size_t len;
129130

130131
if( ( ret = mbedtls_asn1_get_tag( p, end, &len, MBEDTLS_ASN1_BOOLEAN ) ) != 0 )
@@ -143,7 +144,7 @@ static int asn1_get_tagged_int( unsigned char **p,
143144
const unsigned char *end,
144145
int tag, int *val )
145146
{
146-
int ret;
147+
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
147148
size_t len;
148149

149150
if( ( ret = mbedtls_asn1_get_tag( p, end, &len, tag ) ) != 0 )
@@ -202,7 +203,7 @@ int mbedtls_asn1_get_mpi( unsigned char **p,
202203
const unsigned char *end,
203204
mbedtls_mpi *X )
204205
{
205-
int ret;
206+
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
206207
size_t len;
207208

208209
if( ( ret = mbedtls_asn1_get_tag( p, end, &len, MBEDTLS_ASN1_INTEGER ) ) != 0 )
@@ -219,7 +220,7 @@ int mbedtls_asn1_get_mpi( unsigned char **p,
219220
int mbedtls_asn1_get_bitstring( unsigned char **p, const unsigned char *end,
220221
mbedtls_asn1_bitstring *bs)
221222
{
222-
int ret;
223+
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
223224

224225
/* Certificate type is a single byte bitstring */
225226
if( ( ret = mbedtls_asn1_get_tag( p, end, &bs->len, MBEDTLS_ASN1_BIT_STRING ) ) != 0 )
@@ -252,7 +253,7 @@ int mbedtls_asn1_get_bitstring( unsigned char **p, const unsigned char *end,
252253
int mbedtls_asn1_get_bitstring_null( unsigned char **p, const unsigned char *end,
253254
size_t *len )
254255
{
255-
int ret;
256+
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
256257

257258
if( ( ret = mbedtls_asn1_get_tag( p, end, len, MBEDTLS_ASN1_BIT_STRING ) ) != 0 )
258259
return( ret );
@@ -278,7 +279,7 @@ int mbedtls_asn1_get_sequence_of( unsigned char **p,
278279
mbedtls_asn1_sequence *cur,
279280
int tag)
280281
{
281-
int ret;
282+
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
282283
size_t len;
283284
mbedtls_asn1_buf *buf;
284285

@@ -327,7 +328,7 @@ int mbedtls_asn1_get_alg( unsigned char **p,
327328
const unsigned char *end,
328329
mbedtls_asn1_buf *alg, mbedtls_asn1_buf *params )
329330
{
330-
int ret;
331+
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
331332
size_t len;
332333

333334
if( ( ret = mbedtls_asn1_get_tag( p, end, &len,
@@ -371,7 +372,7 @@ int mbedtls_asn1_get_alg_null( unsigned char **p,
371372
const unsigned char *end,
372373
mbedtls_asn1_buf *alg )
373374
{
374-
int ret;
375+
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
375376
mbedtls_asn1_buf params;
376377

377378
memset( &params, 0, sizeof(mbedtls_asn1_buf) );

library/asn1write.c

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
#if defined(MBEDTLS_ASN1_WRITE_C)
2929

3030
#include "mbedtls/asn1write.h"
31+
#include "mbedtls/error.h"
3132

3233
#include <string.h>
3334

@@ -131,7 +132,7 @@ int mbedtls_asn1_write_raw_buffer( unsigned char **p, unsigned char *start,
131132
#if defined(MBEDTLS_BIGNUM_C)
132133
int mbedtls_asn1_write_mpi( unsigned char **p, unsigned char *start, const mbedtls_mpi *X )
133134
{
134-
int ret;
135+
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
135136
size_t len = 0;
136137

137138
// Write the MPI
@@ -168,7 +169,7 @@ int mbedtls_asn1_write_mpi( unsigned char **p, unsigned char *start, const mbedt
168169

169170
int mbedtls_asn1_write_null( unsigned char **p, unsigned char *start )
170171
{
171-
int ret;
172+
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
172173
size_t len = 0;
173174

174175
// Write NULL
@@ -182,7 +183,7 @@ int mbedtls_asn1_write_null( unsigned char **p, unsigned char *start )
182183
int mbedtls_asn1_write_oid( unsigned char **p, unsigned char *start,
183184
const char *oid, size_t oid_len )
184185
{
185-
int ret;
186+
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
186187
size_t len = 0;
187188

188189
MBEDTLS_ASN1_CHK_ADD( len, mbedtls_asn1_write_raw_buffer( p, start,
@@ -197,7 +198,7 @@ int mbedtls_asn1_write_algorithm_identifier( unsigned char **p, unsigned char *s
197198
const char *oid, size_t oid_len,
198199
size_t par_len )
199200
{
200-
int ret;
201+
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
201202
size_t len = 0;
202203

203204
if( par_len == 0 )
@@ -216,7 +217,7 @@ int mbedtls_asn1_write_algorithm_identifier( unsigned char **p, unsigned char *s
216217

217218
int mbedtls_asn1_write_bool( unsigned char **p, unsigned char *start, int boolean )
218219
{
219-
int ret;
220+
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
220221
size_t len = 0;
221222

222223
if( *p - start < 1 )
@@ -233,7 +234,7 @@ int mbedtls_asn1_write_bool( unsigned char **p, unsigned char *start, int boolea
233234

234235
static int asn1_write_tagged_int( unsigned char **p, unsigned char *start, int val, int tag )
235236
{
236-
int ret;
237+
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
237238
size_t len = 0;
238239

239240
do
@@ -273,7 +274,7 @@ int mbedtls_asn1_write_enum( unsigned char **p, unsigned char *start, int val )
273274
int mbedtls_asn1_write_tagged_string( unsigned char **p, unsigned char *start, int tag,
274275
const char *text, size_t text_len )
275276
{
276-
int ret;
277+
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
277278
size_t len = 0;
278279

279280
MBEDTLS_ASN1_CHK_ADD( len, mbedtls_asn1_write_raw_buffer( p, start,
@@ -349,7 +350,7 @@ int mbedtls_asn1_write_named_bitstring( unsigned char **p,
349350
int mbedtls_asn1_write_bitstring( unsigned char **p, unsigned char *start,
350351
const unsigned char *buf, size_t bits )
351352
{
352-
int ret;
353+
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
353354
size_t len = 0;
354355
size_t unused_bits, byte_len;
355356

@@ -382,7 +383,7 @@ int mbedtls_asn1_write_bitstring( unsigned char **p, unsigned char *start,
382383
int mbedtls_asn1_write_octet_string( unsigned char **p, unsigned char *start,
383384
const unsigned char *buf, size_t size )
384385
{
385-
int ret;
386+
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
386387
size_t len = 0;
387388

388389
MBEDTLS_ASN1_CHK_ADD( len, mbedtls_asn1_write_raw_buffer( p, start, buf, size ) );

library/bignum.c

Lines changed: 18 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@
4646
#include "mbedtls/bignum.h"
4747
#include "mbedtls/bn_mul.h"
4848
#include "mbedtls/platform_util.h"
49+
#include "mbedtls/error.h"
4950

5051
#include <string.h>
5152

@@ -314,7 +315,7 @@ int mbedtls_mpi_safe_cond_swap( mbedtls_mpi *X, mbedtls_mpi *Y, unsigned char sw
314315
*/
315316
int mbedtls_mpi_lset( mbedtls_mpi *X, mbedtls_mpi_sint z )
316317
{
317-
int ret;
318+
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
318319
MPI_VALIDATE_RET( X != NULL );
319320

320321
MBEDTLS_MPI_CHK( mbedtls_mpi_grow( X, 1 ) );
@@ -457,7 +458,7 @@ static int mpi_get_digit( mbedtls_mpi_uint *d, int radix, char c )
457458
*/
458459
int mbedtls_mpi_read_string( mbedtls_mpi *X, int radix, const char *s )
459460
{
460-
int ret;
461+
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
461462
size_t i, j, slen, n;
462463
mbedtls_mpi_uint d;
463464
mbedtls_mpi T;
@@ -532,7 +533,7 @@ int mbedtls_mpi_read_string( mbedtls_mpi *X, int radix, const char *s )
532533
static int mpi_write_hlp( mbedtls_mpi *X, int radix,
533534
char **p, const size_t buflen )
534535
{
535-
int ret;
536+
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
536537
mbedtls_mpi_uint r;
537538
size_t length = 0;
538539
char *p_end = *p + buflen;
@@ -697,7 +698,7 @@ int mbedtls_mpi_read_file( mbedtls_mpi *X, int radix, FILE *fin )
697698
*/
698699
int mbedtls_mpi_write_file( const char *p, const mbedtls_mpi *X, int radix, FILE *fout )
699700
{
700-
int ret;
701+
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
701702
size_t n, slen, plen;
702703
/*
703704
* Buffer should have space for (short) label and decimal formatted MPI,
@@ -832,7 +833,7 @@ static void mpi_bigendian_to_host( mbedtls_mpi_uint * const p, size_t limbs )
832833
int mbedtls_mpi_read_binary_le( mbedtls_mpi *X,
833834
const unsigned char *buf, size_t buflen )
834835
{
835-
int ret;
836+
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
836837
size_t i;
837838
size_t const limbs = CHARS_TO_LIMBS( buflen );
838839

@@ -864,7 +865,7 @@ int mbedtls_mpi_read_binary_le( mbedtls_mpi *X,
864865
*/
865866
int mbedtls_mpi_read_binary( mbedtls_mpi *X, const unsigned char *buf, size_t buflen )
866867
{
867-
int ret;
868+
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
868869
size_t const limbs = CHARS_TO_LIMBS( buflen );
869870
size_t const overhead = ( limbs * ciL ) - buflen;
870871
unsigned char *Xp;
@@ -991,7 +992,7 @@ int mbedtls_mpi_write_binary( const mbedtls_mpi *X,
991992
*/
992993
int mbedtls_mpi_shift_l( mbedtls_mpi *X, size_t count )
993994
{
994-
int ret;
995+
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
995996
size_t i, v0, t1;
996997
mbedtls_mpi_uint r0 = 0, r1;
997998
MPI_VALIDATE_RET( X != NULL );
@@ -1170,7 +1171,7 @@ int mbedtls_mpi_cmp_int( const mbedtls_mpi *X, mbedtls_mpi_sint z )
11701171
*/
11711172
int mbedtls_mpi_add_abs( mbedtls_mpi *X, const mbedtls_mpi *A, const mbedtls_mpi *B )
11721173
{
1173-
int ret;
1174+
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
11741175
size_t i, j;
11751176
mbedtls_mpi_uint *o, *p, c, tmp;
11761177
MPI_VALIDATE_RET( X != NULL );
@@ -1251,7 +1252,7 @@ static void mpi_sub_hlp( size_t n, mbedtls_mpi_uint *s, mbedtls_mpi_uint *d )
12511252
int mbedtls_mpi_sub_abs( mbedtls_mpi *X, const mbedtls_mpi *A, const mbedtls_mpi *B )
12521253
{
12531254
mbedtls_mpi TB;
1254-
int ret;
1255+
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
12551256
size_t n;
12561257
MPI_VALIDATE_RET( X != NULL );
12571258
MPI_VALIDATE_RET( A != NULL );
@@ -1474,7 +1475,7 @@ void mpi_mul_hlp( size_t i, mbedtls_mpi_uint *s, mbedtls_mpi_uint *d, mbedtls_mp
14741475
*/
14751476
int mbedtls_mpi_mul_mpi( mbedtls_mpi *X, const mbedtls_mpi *A, const mbedtls_mpi *B )
14761477
{
1477-
int ret;
1478+
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
14781479
size_t i, j;
14791480
mbedtls_mpi TA, TB;
14801481
MPI_VALIDATE_RET( X != NULL );
@@ -1629,7 +1630,7 @@ static mbedtls_mpi_uint mbedtls_int_div_int( mbedtls_mpi_uint u1,
16291630
int mbedtls_mpi_div_mpi( mbedtls_mpi *Q, mbedtls_mpi *R, const mbedtls_mpi *A,
16301631
const mbedtls_mpi *B )
16311632
{
1632-
int ret;
1633+
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
16331634
size_t i, n, t, k;
16341635
mbedtls_mpi X, Y, Z, T1, T2;
16351636
mbedtls_mpi_uint TP2[3];
@@ -1775,7 +1776,7 @@ int mbedtls_mpi_div_int( mbedtls_mpi *Q, mbedtls_mpi *R,
17751776
*/
17761777
int mbedtls_mpi_mod_mpi( mbedtls_mpi *R, const mbedtls_mpi *A, const mbedtls_mpi *B )
17771778
{
1778-
int ret;
1779+
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
17791780
MPI_VALIDATE_RET( R != NULL );
17801781
MPI_VALIDATE_RET( A != NULL );
17811782
MPI_VALIDATE_RET( B != NULL );
@@ -1937,7 +1938,7 @@ int mbedtls_mpi_exp_mod( mbedtls_mpi *X, const mbedtls_mpi *A,
19371938
const mbedtls_mpi *E, const mbedtls_mpi *N,
19381939
mbedtls_mpi *_RR )
19391940
{
1940-
int ret;
1941+
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
19411942
size_t wbits, wsize, one = 1;
19421943
size_t i, j, nblimbs;
19431944
size_t bufsize, nbits;
@@ -2152,7 +2153,7 @@ int mbedtls_mpi_exp_mod( mbedtls_mpi *X, const mbedtls_mpi *A,
21522153
*/
21532154
int mbedtls_mpi_gcd( mbedtls_mpi *G, const mbedtls_mpi *A, const mbedtls_mpi *B )
21542155
{
2155-
int ret;
2156+
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
21562157
size_t lz, lzt;
21572158
mbedtls_mpi TA, TB;
21582159

@@ -2214,7 +2215,7 @@ int mbedtls_mpi_fill_random( mbedtls_mpi *X, size_t size,
22142215
int (*f_rng)(void *, unsigned char *, size_t),
22152216
void *p_rng )
22162217
{
2217-
int ret;
2218+
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
22182219
size_t const limbs = CHARS_TO_LIMBS( size );
22192220
size_t const overhead = ( limbs * ciL ) - size;
22202221
unsigned char *Xp;
@@ -2245,7 +2246,7 @@ int mbedtls_mpi_fill_random( mbedtls_mpi *X, size_t size,
22452246
*/
22462247
int mbedtls_mpi_inv_mod( mbedtls_mpi *X, const mbedtls_mpi *A, const mbedtls_mpi *N )
22472248
{
2248-
int ret;
2249+
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
22492250
mbedtls_mpi G, TA, TU, U1, U2, TB, TV, V1, V2;
22502251
MPI_VALIDATE_RET( X != NULL );
22512252
MPI_VALIDATE_RET( A != NULL );
@@ -2498,7 +2499,7 @@ int mbedtls_mpi_is_prime_ext( const mbedtls_mpi *X, int rounds,
24982499
int (*f_rng)(void *, unsigned char *, size_t),
24992500
void *p_rng )
25002501
{
2501-
int ret;
2502+
int ret = MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED;
25022503
mbedtls_mpi XX;
25032504
MPI_VALIDATE_RET( X != NULL );
25042505
MPI_VALIDATE_RET( f_rng != NULL );

0 commit comments

Comments
 (0)