]> git.ipfire.org Git - thirdparty/suricata.git/commitdiff
dcerpc: don't exit() on malloc failure
authorVictor Julien <victor@inliniac.net>
Fri, 23 Jan 2015 11:12:53 +0000 (12:12 +0100)
committerVictor Julien <victor@inliniac.net>
Thu, 26 Feb 2015 07:50:51 +0000 (08:50 +0100)
In 2 places we would exit() if malloc failed. We should never exit in
such cases. This patch silently handles it.

src/app-layer-dcerpc.c

index 3a22ff73162e142669fada66bb8c453c6aa6fcc3..d7198ba586d1205c21c31d22c0f9f32c565baba2 100644 (file)
@@ -692,17 +692,14 @@ static uint32_t DCERPCParseBINDACKCTXItem(DCERPC *dcerpc, uint8_t *input, uint32
 
                             dcerpc->dcerpcbindbindack.uuid_entry = (DCERPCUuidEntry *)
                                 SCCalloc(1, sizeof(DCERPCUuidEntry));
-                            if (dcerpc->dcerpcbindbindack.uuid_entry == NULL) {
-                                SCLogError(SC_ERR_MEM_ALLOC,
-                                           "Error allocating memory\n");
-                                exit(EXIT_FAILURE);
+                            if (dcerpc->dcerpcbindbindack.uuid_entry != NULL) {
+                                memcpy(dcerpc->dcerpcbindbindack.uuid_entry,
+                                        uuid_entry,
+                                        sizeof(DCERPCUuidEntry));
+                                TAILQ_INSERT_HEAD(&dcerpc->dcerpcbindbindack.accepted_uuid_list,
+                                        dcerpc->dcerpcbindbindack.uuid_entry,
+                                        next);
                             }
-                            memcpy(dcerpc->dcerpcbindbindack.uuid_entry,
-                                   uuid_entry,
-                                   sizeof(DCERPCUuidEntry));
-                            TAILQ_INSERT_HEAD(&dcerpc->dcerpcbindbindack.accepted_uuid_list,
-                                              dcerpc->dcerpcbindbindack.uuid_entry,
-                                              next);
                             break;
                         }
                     }
@@ -851,17 +848,14 @@ static uint32_t DCERPCParseBINDACKCTXItem(DCERPC *dcerpc, uint8_t *input, uint32
 
                         dcerpc->dcerpcbindbindack.uuid_entry = (DCERPCUuidEntry *)
                             SCCalloc(1, sizeof(DCERPCUuidEntry));
-                        if (dcerpc->dcerpcbindbindack.uuid_entry == NULL) {
-                            SCLogError(SC_ERR_MEM_ALLOC,
-                                       "Error allocating memory\n");
-                            exit(EXIT_FAILURE);
+                        if (dcerpc->dcerpcbindbindack.uuid_entry != NULL) {
+                            memcpy(dcerpc->dcerpcbindbindack.uuid_entry,
+                                    uuid_entry,
+                                    sizeof(DCERPCUuidEntry));
+                            TAILQ_INSERT_HEAD(&dcerpc->dcerpcbindbindack.accepted_uuid_list,
+                                    dcerpc->dcerpcbindbindack.uuid_entry,
+                                    next);
                         }
-                        memcpy(dcerpc->dcerpcbindbindack.uuid_entry,
-                               uuid_entry,
-                               sizeof(DCERPCUuidEntry));
-                        TAILQ_INSERT_HEAD(&dcerpc->dcerpcbindbindack.accepted_uuid_list,
-                                          dcerpc->dcerpcbindbindack.uuid_entry,
-                                          next);
                         break;
                     }
                 }