libstdc++: Fix null dereference in pb_ds containers

This fixes ubsan errors:

ext/pb_ds/detail/cc_hash_table_map_/cc_ht_map_.hpp:533:15: runtime error: member access within null pointer of type 'struct entry'

libstdc++-v3/ChangeLog:

	* include/ext/pb_ds/detail/cc_hash_table_map_/cc_ht_map_.hpp
	(find_key_pointer(key_const_reference, false_type))
	(find_key_pointer(key_const_reference, true_type)): Do not
	dereference null pointer.
This commit is contained in:
Jonathan Wakely 2021-05-04 15:46:28 +01:00
parent 6fb8b67089
commit ca871701c2
1 changed files with 16 additions and 10 deletions

View File

@ -524,13 +524,16 @@ namespace __gnu_pbds
resize_base::notify_find_search_end();
#ifdef _GLIBCXX_DEBUG
if (p_e == 0)
PB_DS_CHECK_KEY_DOES_NOT_EXIST(r_key)
{
PB_DS_CHECK_KEY_DOES_NOT_EXIST(r_key)
return 0;
}
else
PB_DS_CHECK_KEY_EXISTS(r_key)
#endif
return &p_e->m_value;
{
PB_DS_CHECK_KEY_EXISTS(r_key)
return &p_e->m_value;
}
}
inline pointer
@ -550,13 +553,16 @@ namespace __gnu_pbds
resize_base::notify_find_search_end();
#ifdef _GLIBCXX_DEBUG
if (p_e == 0)
PB_DS_CHECK_KEY_DOES_NOT_EXIST(r_key)
{
PB_DS_CHECK_KEY_DOES_NOT_EXIST(r_key)
return 0;
}
else
PB_DS_CHECK_KEY_EXISTS(r_key)
#endif
return &p_e->m_value;
{
PB_DS_CHECK_KEY_EXISTS(r_key)
return &p_e->m_value;
}
}
inline bool