Ver código fonte

Client: Add additional check to avoid null pointer access on CreateEvent

Stefan Profanter 4 anos atrás
pai
commit
6386b74d23

+ 7 - 0
src/client/ua_client_subscriptions.c

@@ -366,7 +366,14 @@ UA_Client_MonitoredItems_createEvent(UA_Client *client, UA_UInt32 subscriptionId
     UA_CreateMonitoredItemsResponse response = 
        UA_Client_MonitoredItems_createEvents(client, request, &context,
                                              &callback, &deleteCallback);
+    UA_StatusCode retval = response.responseHeader.serviceResult;
     UA_MonitoredItemCreateResult result;
+    UA_MonitoredItemCreateResult_init(&result);
+    if(retval != UA_STATUSCODE_GOOD) {
+        UA_CreateMonitoredItemsResponse_deleteMembers(&response);
+        result.statusCode = retval;
+        return result;
+    }
     UA_MonitoredItemCreateResult_copy(response.results , &result);
     UA_CreateMonitoredItemsResponse_deleteMembers(&response);
     return result;

+ 1 - 1
tests/server/check_subscription_events.c

@@ -384,7 +384,7 @@ START_TEST(generateEvents) {
     UA_DeleteMonitoredItemsResponse_deleteMembers(&deleteResponse);
 } END_TEST
 
-static bool hasBaseModelChangeEventType() {
+static bool hasBaseModelChangeEventType(void) {
 
     UA_QualifiedName readBrowsename;
     UA_QualifiedName_init(&readBrowsename);