bitpool / edge-bacnet

A bitpool-edge bacnet gateway for Node-RED
MIT License
9 stars 6 forks source link

Buffer Overflow When Reading Device #13

Closed HarvUK closed 4 months ago

HarvUK commented 7 months ago

Describe the bug After running a poll devices, the system gives errors on most of objects on the device - a total of 13 are imported of the 1554 objects on this device.

For further information this issue may be related to #11 as this system is also on a PXG3.L router, with the device being on a LonTalk network. Three of the other four devices on this router all read perfectly, with one other giving the same issues.

image

The device being interrogated is a PXC100.D image

The other problem device is a PXC12.D with just 53 objects.

However, the other PXC12.D with 198 objects didn't give any errors at all.

To Reproduce Steps to reproduce the behavior: Suspect this is device specific, YABE exports available if required.

Expected behavior Device is added into your brilliant UI and then we can add objects to be read.

Screenshots

This is the error as seen from wireshark. image

When the read (eventually) completes, the device we are trying to work on has an exclamation next to it.

image

System Information (please complete the following information):

Are you running Node-RED in a docker container or directly on the operating system or virtual machine? Directly on the machine

Please provide a dump of the Node-RED error log with the Error logging and Device Found check box options enabled (found in gateway node - Discovery tab) if applicable:

22 Nov 21:04:55 - [warn] [Bacnet-Gateway:NR Gateway] BACnet device found: 1050625 - 192.168.1.2 22 Nov 21:04:55 - [info] [mqtt-broker:Ventana] Connected to broker: mqtt://dashboard.hvasystems.co.uk:1883 22 Nov 21:04:56 - [warn] [Bacnet-Gateway:NR Gateway] BACnet device found: 2098177 - 192.168.1.2 BACnet Error: Error while fetching objects: Error: BacnetAbort - Reason:1 undefined BACnet Error: Error getting point list for [object Object] - 2098177: Error: BacnetAbort - Reason:1 at Client._processAbort (C:\Users\stewa.node-red\node_modules\@bitpoolos\edge-bacnet\resources\node-bacstack-ts\dist\lib\client.js:102:40) at Client._handlePdu (C:\Users\stewa.node-red\node_modules\@bitpoolos\edge-bacnet\resources\node-bacstack-ts\dist\lib\client.js:411:22) at Client._handleNpdu (C:\Users\stewa.node-red\node_modules\@bitpoolos\edge-bacnet\resources\node-bacstack-ts\dist\lib\client.js:455:14) at Client._receiveData (C:\Users\stewa.node-red\node_modules\@bitpoolos\edge-bacnet\resources\node-bacstack-ts\dist\lib\client.js:467:18) at Transport.emit (node:events:514:28) at Socket. (C:\Users\stewa.node-red\node_modules\@bitpoolos\edge-bacnet\resources\node-bacstack-ts\dist\lib\transport.js:13:57) at Socket.emit (node:events:514:28) at UDP.onMessage [as onmessage] (node:dgram:941:8) BACnet Error: getDevicePointList error: [object Object] Error: BacnetAbort - Reason:1 at Client._processAbort (C:\Users\stewa.node-red\node_modules\@bitpoolos\edge-bacnet\resources\node-bacstack-ts\dist\lib\client.js:102:40) at Client._handlePdu (C:\Users\stewa.node-red\node_modules\@bitpoolos\edge-bacnet\resources\node-bacstack-ts\dist\lib\client.js:411:22) at Client._handleNpdu (C:\Users\stewa.node-red\node_modules\@bitpoolos\edge-bacnet\resources\node-bacstack-ts\dist\lib\client.js:455:14) at Client._receiveData (C:\Users\stewa.node-red\node_modules\@bitpoolos\edge-bacnet\resources\node-bacstack-ts\dist\lib\client.js:467:18) at Transport.emit (node:events:514:28) at Socket. (C:\Users\stewa.node-red\node_modules\@bitpoolos\edge-bacnet\resources\node-bacstack-ts\dist\lib\transport.js:13:57) at Socket.emit (node:events:514:28) at UDP.onMessage [as onmessage] (node:dgram:941:8)

bitpool-dev commented 7 months ago

Hi @HarvUK

Thanks for submitting this bug report.

Due to the nature of the BACnet stack we've employed for our node-red applications, complete device coverage is still a work in progress. Its positive to hear that it covers most of your devices, but strange that another of the same working model isn't behaving correctly (PXC12.D)

Are the PXC12.D and PXC100.D child devices of the PXG3.L router ? Do they support segmentation at all ?

A YABE and Wireshark dump would be very helpful, as seeing a buffer overflow abort is kind of odd.

There are a few possible icons in the UI of a device list:

Do the object lists for your problematic devices look correct in YABE etc ?

HarvUK commented 7 months ago

Hi,

Thanks for the speedy response.

I've had another good test this morning, using the device ID filters to just request from one device at a time, and both PXC12.D devices seem to read OK, this may well have been an operator error - sorry.

Both the PXG3.L and the PXC100.D seem to have segmentation enabled (screenshots from YABE):

image

PXC100.D image

The objects all look good in YABE, attached below are YABE EDE files and Wireshark dumps from a PCX100.D (device 2098177) and a PXC12.D (device 2095179).

I've also included the command line logs from the run which fails on the PXC100.D.

If there's anything else I can do or provide to assist, please let me know, and thank you once again.

Files for bitpool v1.zip

Harv

bitpool-dev commented 4 months ago

Hi @HarvUK

Can you please update your module to the latest version and try again ? Removing all the nodes from a flow and restarting node-red would be ideal.

Thanks

HarvUK commented 4 months ago

Hi @HarvUK

Can you please update your module to the latest version and try again ? Removing all the nodes from a flow and restarting node-red would be ideal.

Thanks

Hi,

Good news, I removed the module and updated node red to the latest version (3.1.5), and then reinstalled your module and started again, and success - it worked perfectly!

Many thanks for your work on this!

Harv

dblanchie commented 4 months ago

Hi @HarvUK

Can you please update your module to the latest version and try again ? Removing all the nodes from a flow and restarting node-red would be ideal.

Thanks

Hi,

Good news, I removed the module and updated node red to the latest version (3.1.5), and then reinstalled your module and started again, and success - it worked perfectly!

Many thanks for your work on this!

Harv

We will look to update the docs to with some process around updates too, we have just been behind with doing updates needed to get the connector right.

bitpool-dev commented 4 months ago

Great to hear ! Closing this issue as it is fixed.