Browse Source
Fix a bug in zbus_chan_rm_obs() where removing the first observer in a channel's observer list would cause undefined behavior due to accessing a member of a NULL pointer. The issue occurred when prev_obs_nd was NULL (indicating the first node in the list) and the code attempted to pass &prev_obs_nd->node to sys_slist_remove(). This resulted in accessing the 'node' member of a NULL pointer, which is undefined behavior even when taking its address. The sys_slist_remove() function is designed to handle a NULL prev_node parameter correctly for removing the first element in a list. The fix ensures we pass NULL directly instead of attempting to compute the address of a member within a NULL pointer. This was detected by Undefined Behavior Sanitizer as "member access within null pointer". Signed-off-by: Jan Tore Guggedal <jantore.guggedal@nordicsemi.no>pull/91826/merge
3 changed files with 134 additions and 1 deletions
Loading…
Reference in new issue