Browse Source

Merge pull request #5791 from douzzer/20221110-wc_DhAgree_Sync-uninited-use

20221110-wc_DhAgree_Sync-uninited-use
David Garske 1 year ago
parent
commit
9c569b950a
1 changed files with 9 additions and 3 deletions
  1. 9 3
      wolfcrypt/src/dh.c

+ 9 - 3
wolfcrypt/src/dh.c

@@ -2038,7 +2038,9 @@ static int wc_DhAgree_Sync(DhKey* key, byte* agree, word32* agreeSz,
         RESTORE_VECTOR_REGISTERS();
 
         /* make sure agree is > 1 (SP800-56A, 5.7.1.1) */
-        if ((*agreeSz == 0) || ((*agreeSz == 1) && (agree[0] == 1))) {
+        if ((ret == 0) &&
+            ((*agreeSz == 0) || ((*agreeSz == 1) && (agree[0] == 1))))
+        {
             ret = MP_VAL;
         }
 
@@ -2070,7 +2072,9 @@ static int wc_DhAgree_Sync(DhKey* key, byte* agree, word32* agreeSz,
         RESTORE_VECTOR_REGISTERS();
 
         /* make sure agree is > 1 (SP800-56A, 5.7.1.1) */
-        if ((*agreeSz == 0) || ((*agreeSz == 1) && (agree[0] == 1))) {
+        if ((ret == 0) &&
+            ((*agreeSz == 0) || ((*agreeSz == 1) && (agree[0] == 1))))
+        {
             ret = MP_VAL;
         }
 
@@ -2102,7 +2106,9 @@ static int wc_DhAgree_Sync(DhKey* key, byte* agree, word32* agreeSz,
         RESTORE_VECTOR_REGISTERS();
 
         /* make sure agree is > 1 (SP800-56A, 5.7.1.1) */
-        if ((*agreeSz == 0) || ((*agreeSz == 1) && (agree[0] == 1))) {
+        if ((ret == 0) &&
+            ((*agreeSz == 0) || ((*agreeSz == 1) && (agree[0] == 1))))
+        {
             ret = MP_VAL;
         }