Procházet zdrojové kódy

Fix invalid cast in case of writing value to object attribute UA_ATTRIBUTEID_EVENTNOTIFIER

Jojakim Stahl před 5 roky
rodič
revize
9335c585fb
1 změnil soubory, kde provedl 5 přidání a 1 odebrání
  1. 5 1
      src/server/ua_services_attribute.c

+ 5 - 1
src/server/ua_services_attribute.c

@@ -1275,7 +1275,11 @@ copyAttributeIntoNode(UA_Server *server, UA_Session *session,
         CHECK_NODECLASS_WRITE(UA_NODECLASS_VIEW | UA_NODECLASS_OBJECT);
         CHECK_USERWRITEMASK(UA_WRITEMASK_EVENTNOTIFIER);
         CHECK_DATATYPE_SCALAR(BYTE);
-        ((UA_ViewNode*)node)->eventNotifier = *(const UA_Byte*)value;
+        if(node->nodeClass == UA_NODECLASS_VIEW) {
+            ((UA_ViewNode*)node)->eventNotifier = *(const UA_Byte*)value;
+        } else {
+            ((UA_ObjectNode*)node)->eventNotifier = *(const UA_Byte*)value;
+        }
         break;
     case UA_ATTRIBUTEID_VALUE:
         CHECK_NODECLASS_WRITE(UA_NODECLASS_VARIABLE | UA_NODECLASS_VARIABLETYPE);