Fixed BACnet/SC secure connect VMAC, UUID, and initialization sequence (#1142)

* Refactored the BACnet/SC datalink initialization order by moving certificate file checks and hub connection registration to occur after datalink initialization
* Replaced stdlib rand() with platform-specific cryptographically secure random functions (RtlGenRandom for Windows, getrandom for Linux, arc4random_buf for BSD) to generate UUID and VMAC addresses, preventing duplicates that broke connections
* Enabled conditional debug output in BACnet/SC components when BUILD=debug is specified
This commit is contained in:
Steve Karg
2025-11-14 15:41:17 -06:00
committed by GitHub
parent 74972bd025
commit 25d14c7c15
30 changed files with 672 additions and 339 deletions
+2 -5
View File
@@ -558,15 +558,12 @@ uint32_t bacfile_write(
BACNET_UNSIGNED_INTEGER bacfile_file_size(uint32_t object_instance)
{
const char *pathname = NULL;
long file_position = 0;
BACNET_UNSIGNED_INTEGER file_size = 0;
pathname = bacfile_pathname(object_instance);
if (pathname) {
file_position = bacfile_file_size_callback(pathname);
if (file_position >= 0) {
file_size = (BACNET_UNSIGNED_INTEGER)file_position;
}
file_size =
(BACNET_UNSIGNED_INTEGER)bacfile_file_size_callback(pathname);
}
return file_size;