forked from mirror/OpenTTD
Codechange: Make sort list function lists safer. (#12574)
GUIList has a pointer only to the start of each sort/filter func list, which has the potential for UB as it is unable to validate that the selected sort or filter type is in range. Use a std::span instead and check if the selected type is in range before using it.
This commit is contained in:
@@ -56,8 +56,8 @@ class BuildObjectWindow : public Window {
|
||||
|
||||
static Listing last_sorting; ///< Default sorting of #GUIObjectClassList.
|
||||
static Filtering last_filtering; ///< Default filtering of #GUIObjectClassList.
|
||||
static GUIObjectClassList::SortFunction * const sorter_funcs[]; ///< Sort functions of the #GUIObjectClassList.
|
||||
static GUIObjectClassList::FilterFunction * const filter_funcs[]; ///< Filter functions of the #GUIObjectClassList.
|
||||
static const std::initializer_list<GUIObjectClassList::SortFunction * const> sorter_funcs; ///< Sort functions of the #GUIObjectClassList.
|
||||
static const std::initializer_list<GUIObjectClassList::FilterFunction * const> filter_funcs; ///< Filter functions of the #GUIObjectClassList.
|
||||
GUIObjectClassList object_classes; ///< Available object classes.
|
||||
StringFilter string_filter; ///< Filter for available objects.
|
||||
QueryString filter_editbox; ///< Filter editbox.
|
||||
@@ -655,11 +655,11 @@ public:
|
||||
Listing BuildObjectWindow::last_sorting = { false, 0 };
|
||||
Filtering BuildObjectWindow::last_filtering = { false, 0 };
|
||||
|
||||
BuildObjectWindow::GUIObjectClassList::SortFunction * const BuildObjectWindow::sorter_funcs[] = {
|
||||
const std::initializer_list<BuildObjectWindow::GUIObjectClassList::SortFunction * const> BuildObjectWindow::sorter_funcs = {
|
||||
&ObjectClassIDSorter,
|
||||
};
|
||||
|
||||
BuildObjectWindow::GUIObjectClassList::FilterFunction * const BuildObjectWindow::filter_funcs[] = {
|
||||
const std::initializer_list<BuildObjectWindow::GUIObjectClassList::FilterFunction * const> BuildObjectWindow::filter_funcs = {
|
||||
&TagNameFilter,
|
||||
};
|
||||
|
||||
|
Reference in New Issue
Block a user