ESAPI: Initialize outputs to NULL.
Initialize the output pointers (starting with
the third parameter) to NULL in order to prevent
a dereferencing of uninitialized pointers duirng
error handling.
Fixes: #981
Signed-off-by: Andreas Fuchs <andreas.fuchs@sit.fraunhofer.de>
diff --git a/src/tss2-esys/api/Esys_Commit.c b/src/tss2-esys/api/Esys_Commit.c
index 4719afc..9e9b4d8 100644
--- a/src/tss2-esys/api/Esys_Commit.c
+++ b/src/tss2-esys/api/Esys_Commit.c
@@ -290,6 +290,10 @@
}
esysContext->state = _ESYS_STATE_INTERNALERROR;
+ /* Initialize parameter to avoid unitialized usage */
+ if (E != NULL)
+ *E = NULL;
+
/* Allocate memory for response parameters */
if (K != NULL) {
*K = calloc(sizeof(TPM2B_ECC_POINT), 1);
diff --git a/src/tss2-esys/api/Esys_Create.c b/src/tss2-esys/api/Esys_Create.c
index 64fd898..114b4e2 100644
--- a/src/tss2-esys/api/Esys_Create.c
+++ b/src/tss2-esys/api/Esys_Create.c
@@ -313,6 +313,14 @@
}
esysContext->state = _ESYS_STATE_INTERNALERROR;
+ /* Initialize parameter to avoid unitialized usage */
+ if (creationData != NULL)
+ *creationData = NULL;
+ if (creationHash != NULL)
+ *creationHash = NULL;
+ if (creationTicket != NULL)
+ *creationTicket = NULL;
+
/* Allocate memory for response parameters */
if (outPrivate != NULL) {
*outPrivate = calloc(sizeof(TPM2B_PRIVATE), 1);
diff --git a/src/tss2-esys/api/Esys_CreatePrimary.c b/src/tss2-esys/api/Esys_CreatePrimary.c
index 8fad805..80adc90 100644
--- a/src/tss2-esys/api/Esys_CreatePrimary.c
+++ b/src/tss2-esys/api/Esys_CreatePrimary.c
@@ -314,6 +314,11 @@
TPM2B_NAME name;
RSRC_NODE_T *objectHandleNode = NULL;
+ /* Initialize parameter to avoid unitialized usage */
+ if (creationHash != NULL)
+ *creationHash = NULL;
+ if (creationTicket != NULL)
+ *creationTicket = NULL;
/* Allocate memory for response parameters */
if (objectHandle == NULL) {
diff --git a/src/tss2-esys/api/Esys_Duplicate.c b/src/tss2-esys/api/Esys_Duplicate.c
index 3d70288..5bee9a1 100644
--- a/src/tss2-esys/api/Esys_Duplicate.c
+++ b/src/tss2-esys/api/Esys_Duplicate.c
@@ -281,6 +281,10 @@
}
esysContext->state = _ESYS_STATE_INTERNALERROR;
+ /* Initialize parameter to avoid unitialized usage */
+ if (outSymSeed != NULL)
+ *outSymSeed = NULL;
+
/* Allocate memory for response parameters */
if (encryptionKeyOut != NULL) {
*encryptionKeyOut = calloc(sizeof(TPM2B_DATA), 1);
diff --git a/src/tss2-esys/api/Esys_ReadPublic.c b/src/tss2-esys/api/Esys_ReadPublic.c
index fe06364..e46e69d 100644
--- a/src/tss2-esys/api/Esys_ReadPublic.c
+++ b/src/tss2-esys/api/Esys_ReadPublic.c
@@ -236,6 +236,10 @@
}
esysContext->state = _ESYS_STATE_INTERNALERROR;
+ /* Initialize parameter to avoid unitialized usage */
+ if (qualifiedName != NULL)
+ *qualifiedName = NULL;
+
/* Allocate memory for response parameters */
if (outPublic != NULL) {
*outPublic = calloc(sizeof(TPM2B_PUBLIC), 1);