check the return of malloc()

Signed-off-by: Walter Harms <[email protected]>
---
 src/protosetup.c | 21 +++++++++++++++------
 1 file changed, 15 insertions(+), 6 deletions(-)

diff --git a/src/protosetup.c b/src/protosetup.c
index b6aece8..dbc136e 100644
--- a/src/protosetup.c
+++ b/src/protosetup.c
@@ -110,11 +110,17 @@ IceProtocolSetup (
     /*
      * Generate the message.
      */
+    authCount = 0;
+    authIndices = NULL;

     if (myProtocol->orig_client->auth_count > 0)
     {
        authIndices = malloc (
            myProtocol->orig_client->auth_count * sizeof (int));
+       if (! authIndices) {
+         strncpy (errorStringRet,"out of memory",errorLength);
+         return (IceProtocolSetupFailure);
+       }

        _IceGetPoValidAuthIndices (myProtocol->protocol_name,
            iceConn->connection_string,
@@ -123,11 +129,6 @@ IceProtocolSetup (
             &authCount, authIndices);

     }
-    else
-    {
-       authCount = 0;
-       authIndices = NULL;
-    }

     extra = STRING_BYTES (myProtocol->protocol_name) +
             STRING_BYTES (myProtocol->orig_client->vendor) +
@@ -183,6 +184,12 @@ IceProtocolSetup (
     replyWait.reply = (IcePointer) &reply;

     iceConn->protosetup_to_you = malloc (sizeof (_IceProtoSetupToYouInfo));
+    if (! iceConn->protosetup_to_you) {
+      free(authIndices);
+      strncpy (errorStringRet,"out of memory",errorLength);
+      return (IceProtocolSetupFailure);
+    }
+
     iceConn->protosetup_to_you->my_opcode = myOpcode;
     iceConn->protosetup_to_you->my_auth_count = authCount;
     iceConn->protosetup_to_you->auth_active = 0;
@@ -199,6 +206,8 @@ IceProtocolSetup (

        if (ioErrorOccured)
        {
+          free(iceConn->protosetup_to_you);
+          free(authIndices);
            strncpy (errorStringRet,
                "IO error occured doing Protocol Setup on connection",
                errorLength);
@@ -240,6 +249,7 @@ IceProtocolSetup (
            free (iceConn->protosetup_to_you->my_auth_indices);
            free (iceConn->protosetup_to_you);
            iceConn->protosetup_to_you = NULL;
+           free(authIndices);
        }
     }

@@ -279,6 +289,5 @@ IceProtocolSetup (
       versionRec->process_msg_proc;

     return (IceProtocolSetupSuccess);
-

 }
-- 
2.1.4

_______________________________________________
[email protected]: X.Org development
Archives: http://lists.x.org/archives/xorg-devel
Info: https://lists.x.org/mailman/listinfo/xorg-devel

Reply via email to