瀏覽代碼

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

Jojakim Stahl 5 年之前
父節點
當前提交
9335c585fb
共有 1 個文件被更改,包括 5 次插入1 次删除
  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);