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);