Subj : src/sbbs3/userdat.c To : Git commit to main/sbbs/master From : Rob Swindell (on Windows 11) Date : Fri Jun 21 2024 12:44 pm https://gitlab.synchro.net/main/sbbs/-/commit/e7642321545ef80fb73fe183 Modified Files: src/sbbs3/userdat.c Log Message: Fix getnodedat() error handling and usage If a file descriptor is passed to getnodedat() and the lock retry counter was reached, the file would be closed, but the passed file descriptor reference would not be set to -1. This could result in exceptions (from subsequent read attempts on the referenced file descriptor) in cases where the node.dab could not be locked or read by getnodedat() and was thus closed. The set/get_node_* helper functions (used by MQTT) were not initializing the node.dab file descriptor (i.e. to -1), so it's possible getnodedat() could try to read from and close an invalid/wrong open file descriptor. If the local variable happened to be initialized to a value <= 0, then, no problem, but this is undefined behavior (UB). .