ARTEMIS-2260 Prevent a null pointer dereference if unable to allocate memory for the
events member of the control structure. This could also cause the broker
to abruptly shutdown.
diff --git a/src/main/c/org_apache_activemq_artemis_jlibaio_LibaioContext.c b/src/main/c/org_apache_activemq_artemis_jlibaio_LibaioContext.c
index 59ddac8..e70edee 100644
--- a/src/main/c/org_apache_activemq_artemis_jlibaio_LibaioContext.c
+++ b/src/main/c/org_apache_activemq_artemis_jlibaio_LibaioContext.c
@@ -421,6 +421,12 @@
}
struct io_event * events = (struct io_event *)malloc(sizeof(struct io_event) * (size_t)queueSize);
+ if (events == NULL) {
+ free(theControl);
+ free(libaioContext);
+ throwRuntimeExceptionErrorNo(env, "Can't initialize mutext (not enough memory for the events member): ", res);
+ return NULL;
+ }
theControl->ioContext = libaioContext;
theControl->events = events;