Skip to content

Commit bc2e842

Browse files
authored
Merge pull request #10460 from JacobBarthelmeh/static_analysis
Static analysis fixes/improvements for SECO, devcrypto, ARIA, MD4, MD2
2 parents 9096bcc + 7e30aad commit bc2e842

17 files changed

Lines changed: 270 additions & 67 deletions

File tree

doc/dox_comments/header_files-ja/md2.h

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
\brief この関数はmd2を初期化します。これはwc_Md2Hashによって自動的に呼び出されます。
55
66
\return 0 初期化に成功した場合に返されます
7+
\return BAD_FUNC_ARG md2がNULLの場合に返されます
78
89
\param md2 暗号化に使用するmd2構造体へのポインタ
910
@@ -23,14 +24,15 @@
2324
\sa wc_Md2Update
2425
\sa wc_Md2Final
2526
*/
26-
void wc_InitMd2(wc_Md2* md2);
27+
int wc_InitMd2(wc_Md2* md2);
2728

2829
/*!
2930
\ingroup MD2
3031
3132
\brief 長さlenの提供されたバイト配列を継続的にハッシュするために呼び出すことができます。
3233
3334
\return 0 ダイジェストへのデータ追加に成功した場合に返されます。
35+
\return BAD_FUNC_ARG md2がNULLの場合、またはdataがNULLでlenが0でない場合に返されます
3436
3537
\param md2 暗号化に使用するmd2構造体へのポインタ
3638
\param data ハッシュ化されるデータ
@@ -55,14 +57,15 @@ void wc_InitMd2(wc_Md2* md2);
5557
\sa wc_Md2Final
5658
\sa wc_InitMd2
5759
*/
58-
void wc_Md2Update(wc_Md2* md2, const byte* data, word32 len);
60+
int wc_Md2Update(wc_Md2* md2, const byte* data, word32 len);
5961

6062
/*!
6163
\ingroup MD2
6264
6365
\brief データのハッシュ化を完了します。結果はhashに格納されます。
6466
6567
\return 0 完了に成功した場合に返されます。
68+
\return BAD_FUNC_ARG md2またはhashがNULLの場合に返されます
6669
6770
\param md2 暗号化に使用するmd2構造体へのポインタ
6871
\param hash ハッシュ値を保持するバイト配列。
@@ -86,7 +89,7 @@ void wc_Md2Update(wc_Md2* md2, const byte* data, word32 len);
8689
\sa wc_Md2Final
8790
\sa wc_InitMd2
8891
*/
89-
void wc_Md2Final(wc_Md2* md2, byte* hash);
92+
int wc_Md2Final(wc_Md2* md2, byte* hash);
9093

9194
/*!
9295
\ingroup MD2

doc/dox_comments/header_files-ja/md4.h

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
\brief この関数はmd4を初期化します。これはwc_Md4Hashによって自動的に呼び出されます。
55
66
\return 0 初期化に成功した場合に返されます
7+
\return BAD_FUNC_ARG md4がNULLの場合に返されます
78
89
\param md4 暗号化に使用するmd4構造体へのポインタ
910
@@ -23,14 +24,15 @@
2324
\sa wc_Md4Update
2425
\sa wc_Md4Final
2526
*/
26-
void wc_InitMd4(wc_Md4* md4);
27+
int wc_InitMd4(wc_Md4* md4);
2728

2829
/*!
2930
\ingroup MD4
3031
3132
\brief 長さlenの提供されたバイト配列を継続的にハッシュするために呼び出すことができます。
3233
3334
\return 0 ダイジェストへのデータ追加に成功した場合に返されます。
35+
\return BAD_FUNC_ARG md4がNULLの場合、またはdataがNULLでlenが0でない場合に返されます
3436
3537
\param md4 暗号化に使用するmd4構造体へのポインタ
3638
\param data ハッシュ化されるデータ
@@ -55,14 +57,15 @@ void wc_InitMd4(wc_Md4* md4);
5557
\sa wc_Md4Final
5658
\sa wc_InitMd4
5759
*/
58-
void wc_Md4Update(wc_Md4* md4, const byte* data, word32 len);
60+
int wc_Md4Update(wc_Md4* md4, const byte* data, word32 len);
5961

6062
/*!
6163
\ingroup MD4
6264
6365
\brief データのハッシュ化を完了します。結果はhashに格納されます。
6466
6567
\return 0 完了に成功した場合に返されます。
68+
\return BAD_FUNC_ARG md4またはhashがNULLの場合に返されます
6669
6770
\param md4 暗号化に使用するmd4構造体へのポインタ
6871
\param hash ハッシュ値を保持するバイト配列。
@@ -83,4 +86,4 @@ void wc_Md4Update(wc_Md4* md4, const byte* data, word32 len);
8386
\sa wc_Md4Final
8487
\sa wc_InitMd4
8588
*/
86-
void wc_Md4Final(wc_Md4* md4, byte* hash);
89+
int wc_Md4Final(wc_Md4* md4, byte* hash);

doc/dox_comments/header_files/md2.h

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
called by wc_Md2Hash.
66
77
\return 0 Returned upon successfully initializing
8+
\return BAD_FUNC_ARG Returned if md2 is NULL
89
910
\param md2 pointer to the md2 structure to use for encryption
1011
@@ -24,7 +25,7 @@
2425
\sa wc_Md2Update
2526
\sa wc_Md2Final
2627
*/
27-
void wc_InitMd2(wc_Md2* md2);
28+
int wc_InitMd2(wc_Md2* md2);
2829

2930
/*!
3031
\ingroup MD2
@@ -33,6 +34,8 @@ void wc_InitMd2(wc_Md2* md2);
3334
array of length len.
3435
3536
\return 0 Returned upon successfully adding the data to the digest.
37+
\return BAD_FUNC_ARG Returned if md2 is NULL, or if data is NULL and
38+
len is non-zero
3639
3740
\param md2 pointer to the md2 structure to use for encryption
3841
\param data the data to be hashed
@@ -57,14 +60,15 @@ void wc_InitMd2(wc_Md2* md2);
5760
\sa wc_Md2Final
5861
\sa wc_InitMd2
5962
*/
60-
void wc_Md2Update(wc_Md2* md2, const byte* data, word32 len);
63+
int wc_Md2Update(wc_Md2* md2, const byte* data, word32 len);
6164

6265
/*!
6366
\ingroup MD2
6467
6568
\brief Finalizes hashing of data. Result is placed into hash.
6669
6770
\return 0 Returned upon successfully finalizing.
71+
\return BAD_FUNC_ARG Returned if md2 or hash is NULL
6872
6973
\param md2 pointer to the md2 structure to use for encryption
7074
\param hash Byte array to hold hash value.
@@ -88,7 +92,7 @@ void wc_Md2Update(wc_Md2* md2, const byte* data, word32 len);
8892
\sa wc_Md2Final
8993
\sa wc_InitMd2
9094
*/
91-
void wc_Md2Final(wc_Md2* md2, byte* hash);
95+
int wc_Md2Final(wc_Md2* md2, byte* hash);
9296

9397
/*!
9498
\ingroup MD2

doc/dox_comments/header_files/md4.h

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
called by wc_Md4Hash.
66
77
\return 0 Returned upon successfully initializing
8+
\return BAD_FUNC_ARG Returned if md4 is NULL
89
910
\param md4 pointer to the md4 structure to use for encryption
1011
@@ -24,7 +25,7 @@
2425
\sa wc_Md4Update
2526
\sa wc_Md4Final
2627
*/
27-
void wc_InitMd4(wc_Md4* md4);
28+
int wc_InitMd4(wc_Md4* md4);
2829

2930
/*!
3031
\ingroup MD4
@@ -33,6 +34,8 @@ void wc_InitMd4(wc_Md4* md4);
3334
of length len.
3435
3536
\return 0 Returned upon successfully adding the data to the digest.
37+
\return BAD_FUNC_ARG Returned if md4 is NULL, or if data is NULL and
38+
len is non-zero
3639
3740
\param md4 pointer to the md4 structure to use for encryption
3841
\param data the data to be hashed
@@ -57,14 +60,15 @@ void wc_InitMd4(wc_Md4* md4);
5760
\sa wc_Md4Final
5861
\sa wc_InitMd4
5962
*/
60-
void wc_Md4Update(wc_Md4* md4, const byte* data, word32 len);
63+
int wc_Md4Update(wc_Md4* md4, const byte* data, word32 len);
6164

6265
/*!
6366
\ingroup MD4
6467
6568
\brief Finalizes hashing of data. Result is placed into hash.
6669
6770
\return 0 Returned upon successfully finalizing.
71+
\return BAD_FUNC_ARG Returned if md4 or hash is NULL
6872
6973
\param md4 pointer to the md4 structure to use for encryption
7074
\param hash Byte array to hold hash value.
@@ -85,4 +89,4 @@ void wc_Md4Update(wc_Md4* md4, const byte* data, word32 len);
8589
\sa wc_Md4Final
8690
\sa wc_InitMd4
8791
*/
88-
void wc_Md4Final(wc_Md4* md4, byte* hash);
92+
int wc_Md4Final(wc_Md4* md4, byte* hash);

tests/api/test_md2.c

Lines changed: 42 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -37,29 +37,51 @@
3737
/* Unit test for wc_InitMd2() and wc_InitMd2_ex() */
3838
int test_wc_InitMd2(void)
3939
{
40-
EXPECT_SUCCESS_DECLS;
40+
EXPECT_DECLS;
4141
#ifdef WOLFSSL_MD2
42-
DIGEST_INIT_ONLY_TEST(wc_Md2, Md2);
42+
wc_Md2 md2;
43+
44+
ExpectIntEQ(wc_InitMd2(NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG));
45+
ExpectIntEQ(wc_InitMd2(&md2), 0);
4346
#endif
4447
return EXPECT_RESULT();
4548
}
4649

4750
/* Unit test for wc_UpdateMd2() */
4851
int test_wc_Md2Update(void)
4952
{
50-
EXPECT_SUCCESS_DECLS;
53+
EXPECT_DECLS;
5154
#ifdef WOLFSSL_MD2
52-
DIGEST_UPDATE_ONLY_TEST(wc_Md2, Md2);
55+
wc_Md2 md2;
56+
57+
ExpectIntEQ(wc_InitMd2(&md2), 0);
58+
59+
ExpectIntEQ(wc_Md2Update(NULL, NULL, 1), WC_NO_ERR_TRACE(BAD_FUNC_ARG));
60+
ExpectIntEQ(wc_Md2Update(&md2, NULL, 1), WC_NO_ERR_TRACE(BAD_FUNC_ARG));
61+
ExpectIntEQ(wc_Md2Update(NULL, (byte*)"a", 1),
62+
WC_NO_ERR_TRACE(BAD_FUNC_ARG));
63+
64+
ExpectIntEQ(wc_Md2Update(&md2, NULL, 0), 0);
65+
ExpectIntEQ(wc_Md2Update(&md2, (byte*)"a", 1), 0);
5366
#endif
5467
return EXPECT_RESULT();
5568
}
5669

5770
/* Unit test for wc_Md2Final() */
5871
int test_wc_Md2Final(void)
5972
{
60-
EXPECT_SUCCESS_DECLS;
73+
EXPECT_DECLS;
6174
#ifdef WOLFSSL_MD2
62-
DIGEST_FINAL_ONLY_TEST(wc_Md2, Md2, MD2);
75+
wc_Md2 md2;
76+
byte hash[WC_MD2_DIGEST_SIZE];
77+
78+
ExpectIntEQ(wc_InitMd2(&md2), 0);
79+
80+
ExpectIntEQ(wc_Md2Final(NULL, NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG));
81+
ExpectIntEQ(wc_Md2Final(&md2, NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG));
82+
ExpectIntEQ(wc_Md2Final(NULL, hash), WC_NO_ERR_TRACE(BAD_FUNC_ARG));
83+
84+
ExpectIntEQ(wc_Md2Final(&md2, hash), 0);
6385
#endif
6486
return EXPECT_RESULT();
6587
}
@@ -120,8 +142,20 @@ int test_wc_Md2Hash(void)
120142
{
121143
EXPECT_DECLS;
122144
#if defined(WOLFSSL_MD2)
123-
DIGEST_HASH_ONLY_TEST(Md2, MD2);
145+
byte data[WC_MD2_BLOCK_SIZE];
146+
byte hash[WC_MD2_DIGEST_SIZE];
147+
148+
XMEMSET(data, 0xa5, sizeof(data));
149+
150+
/* Invalid parameters. */
151+
ExpectIntEQ(wc_Md2Hash(NULL, sizeof(data), hash),
152+
WC_NO_ERR_TRACE(BAD_FUNC_ARG));
153+
ExpectIntEQ(wc_Md2Hash(data, sizeof(data), NULL),
154+
WC_NO_ERR_TRACE(BAD_FUNC_ARG));
155+
156+
/* Valid parameters. */
157+
ExpectIntEQ(wc_Md2Hash(data, sizeof(data), hash), 0);
124158
#endif
125159
return EXPECT_RESULT();
126-
} /* END test_wc_Sm3Hash */
160+
}
127161

tests/api/test_md4.c

Lines changed: 28 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -37,29 +37,51 @@
3737
/* Unit test for wc_InitMd4() and wc_InitMd4_ex() */
3838
int test_wc_InitMd4(void)
3939
{
40-
EXPECT_SUCCESS_DECLS;
40+
EXPECT_DECLS;
4141
#ifndef NO_MD4
42-
DIGEST_INIT_ONLY_TEST(wc_Md4, Md4);
42+
wc_Md4 md4;
43+
44+
ExpectIntEQ(wc_InitMd4(NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG));
45+
ExpectIntEQ(wc_InitMd4(&md4), 0);
4346
#endif
4447
return EXPECT_RESULT();
4548
}
4649

4750
/* Unit test for wc_UpdateMd4() */
4851
int test_wc_Md4Update(void)
4952
{
50-
EXPECT_SUCCESS_DECLS;
53+
EXPECT_DECLS;
5154
#ifndef NO_MD4
52-
DIGEST_UPDATE_ONLY_TEST(wc_Md4, Md4);
55+
wc_Md4 md4;
56+
57+
ExpectIntEQ(wc_InitMd4(&md4), 0);
58+
59+
ExpectIntEQ(wc_Md4Update(NULL, NULL, 1), WC_NO_ERR_TRACE(BAD_FUNC_ARG));
60+
ExpectIntEQ(wc_Md4Update(&md4, NULL, 1), WC_NO_ERR_TRACE(BAD_FUNC_ARG));
61+
ExpectIntEQ(wc_Md4Update(NULL, (byte*)"a", 1),
62+
WC_NO_ERR_TRACE(BAD_FUNC_ARG));
63+
64+
ExpectIntEQ(wc_Md4Update(&md4, NULL, 0), 0);
65+
ExpectIntEQ(wc_Md4Update(&md4, (byte*)"a", 1), 0);
5366
#endif
5467
return EXPECT_RESULT();
5568
}
5669

5770
/* Unit test for wc_Md4Final() */
5871
int test_wc_Md4Final(void)
5972
{
60-
EXPECT_SUCCESS_DECLS;
73+
EXPECT_DECLS;
6174
#ifndef NO_MD4
62-
DIGEST_FINAL_ONLY_TEST(wc_Md4, Md4, MD4);
75+
wc_Md4 md4;
76+
byte hash[WC_MD4_DIGEST_SIZE];
77+
78+
ExpectIntEQ(wc_InitMd4(&md4), 0);
79+
80+
ExpectIntEQ(wc_Md4Final(NULL, NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG));
81+
ExpectIntEQ(wc_Md4Final(&md4, NULL), WC_NO_ERR_TRACE(BAD_FUNC_ARG));
82+
ExpectIntEQ(wc_Md4Final(NULL, hash), WC_NO_ERR_TRACE(BAD_FUNC_ARG));
83+
84+
ExpectIntEQ(wc_Md4Final(&md4, hash), 0);
6385
#endif
6486
return EXPECT_RESULT();
6587
}

wolfcrypt/src/chacha.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ Public domain.
5252

5353
#define U32C(v) (v##U)
5454
#define U32V(v) ((word32)(v) & U32C(0xFFFFFFFF))
55-
#define U8TO32_LITTLE(p) LITTLE32(((const word32*)(p))[0])
55+
#define U8TO32_LITTLE(p) LITTLE32(readUnalignedWord32(p))
5656

5757
#define ROTATE(v,c) rotlFixed(v, c)
5858
#define XOR(v,w) ((v) ^ (w))

0 commit comments

Comments
 (0)