From: Pierre Gondois <pierre.gondois@...>
mAvailableAlgoArrayCount holds the count of available RNG algorithms.
In a following patch, its value will be used to prevent the
EFI_RNG_PROTOCOL to be installed if no RNG algorithm is available.
Correctly set/reset the value for all implementations.
Signed-off-by: Pierre Gondois <pierre.gondois@...>
---
SecurityPkg/RandomNumberGenerator/RngDxe/ArmRngDxe.c | 1 +
SecurityPkg/RandomNumberGenerator/RngDxe/Rand/RngDxe.c | 9 ++++++++-
2 files changed, 9 insertions(+), 1 deletion(-)
diff --git a/SecurityPkg/RandomNumberGenerator/RngDxe/ArmRngDxe.c b/Secur=
ityPkg/RandomNumberGenerator/RngDxe/ArmRngDxe.c
index 5ba319899ce9..ce49ff7ae661 100644
--- a/SecurityPkg/RandomNumberGenerator/RngDxe/ArmRngDxe.c
+++ b/SecurityPkg/RandomNumberGenerator/RngDxe/ArmRngDxe.c
@@ -40,6 +40,7 @@ FreeAvailableAlgorithms (
VOID
)
{
+ mAvailableAlgoArrayCount =3D 0;
FreePool (mAvailableAlgoArray);
return;
}
diff --git a/SecurityPkg/RandomNumberGenerator/RngDxe/Rand/RngDxe.c b/Sec=
urityPkg/RandomNumberGenerator/RngDxe/Rand/RngDxe.c
index 677600bed7ab..7e06e16e4be5 100644
--- a/SecurityPkg/RandomNumberGenerator/RngDxe/Rand/RngDxe.c
+++ b/SecurityPkg/RandomNumberGenerator/RngDxe/Rand/RngDxe.c
@@ -26,6 +26,11 @@
=20
#include "RngDxeInternals.h"
=20
+//
+// Count of Rng algorithms.
+//
+#define RNG_ALGORITHM_COUNT 2
+
/** Allocate and initialize mAvailableAlgoArray with the available
Rng algorithms. Also update mAvailableAlgoArrayCount.
=20
@@ -38,6 +43,7 @@ GetAvailableAlgorithms (
VOID
)
{
+ mAvailableAlgoArrayCount =3D RNG_ALGORITHM_COUNT;
return EFI_SUCCESS;
}
=20
@@ -49,6 +55,7 @@ FreeAvailableAlgorithms (
VOID
)
{
+ mAvailableAlgoArrayCount =3D 0;
return;
}
=20
@@ -164,7 +171,7 @@ RngGetInfo (
return EFI_INVALID_PARAMETER;
}
=20
- RequiredSize =3D 2 * sizeof (EFI_RNG_ALGORITHM);
+ RequiredSize =3D RNG_ALGORITHM_COUNT * sizeof (EFI_RNG_ALGORITHM);
=20
if (*RNGAlgorithmListSize < RequiredSize) {
*RNGAlgorithmListSize =3D RequiredSize;
--=20
2.25.1