mirror of
https://github.com/OpenTTD/OpenTTD.git
synced 2026-07-25 08:22:17 +00:00
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:
+4
-4
@@ -1112,8 +1112,8 @@ private:
|
||||
|
||||
static Listing last_sorting; ///< Default sorting of #GUIRoadStopClassList.
|
||||
static Filtering last_filtering; ///< Default filtering of #GUIRoadStopClassList.
|
||||
static GUIRoadStopClassList::SortFunction * const sorter_funcs[]; ///< Sort functions of the #GUIRoadStopClassList.
|
||||
static GUIRoadStopClassList::FilterFunction * const filter_funcs[]; ///< Filter functions of the #GUIRoadStopClassList.
|
||||
static const std::initializer_list<GUIRoadStopClassList::SortFunction * const> sorter_funcs; ///< Sort functions of the #GUIRoadStopClassList.
|
||||
static const std::initializer_list<GUIRoadStopClassList::FilterFunction * const> filter_funcs; ///< Filter functions of the #GUIRoadStopClassList.
|
||||
GUIRoadStopClassList roadstop_classes; ///< Available road stop classes.
|
||||
StringFilter string_filter; ///< Filter for available road stop classes.
|
||||
QueryString filter_editbox; ///< Filter editbox.
|
||||
@@ -1599,11 +1599,11 @@ public:
|
||||
Listing BuildRoadStationWindow::last_sorting = { false, 0 };
|
||||
Filtering BuildRoadStationWindow::last_filtering = { false, 0 };
|
||||
|
||||
BuildRoadStationWindow::GUIRoadStopClassList::SortFunction * const BuildRoadStationWindow::sorter_funcs[] = {
|
||||
const std::initializer_list<BuildRoadStationWindow::GUIRoadStopClassList::SortFunction * const> BuildRoadStationWindow::sorter_funcs = {
|
||||
&RoadStopClassIDSorter,
|
||||
};
|
||||
|
||||
BuildRoadStationWindow::GUIRoadStopClassList::FilterFunction * const BuildRoadStationWindow::filter_funcs[] = {
|
||||
const std::initializer_list<BuildRoadStationWindow::GUIRoadStopClassList::FilterFunction * const> BuildRoadStationWindow::filter_funcs = {
|
||||
&TagNameFilter,
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user