diff options
author | smatz <smatz@openttd.org> | 2008-05-13 18:39:15 +0000 |
---|---|---|
committer | smatz <smatz@openttd.org> | 2008-05-13 18:39:15 +0000 |
commit | ad8057ab7652aa0ed6ab6d84403bcab7ee013df3 (patch) | |
tree | efebb74d60b6be868ca9624b19c97f1c122f93f4 | |
parent | ab7a5568d762fe30b91cdb0221883c1d9cc97d4b (diff) | |
download | openttd-ad8057ab7652aa0ed6ab6d84403bcab7ee013df3.tar.xz |
(svn r13072) -Fix (r12995): possible out-of-bounds access
-rw-r--r-- | src/engine.cpp | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/src/engine.cpp b/src/engine.cpp index ac50f811b..715fdebf8 100644 --- a/src/engine.cpp +++ b/src/engine.cpp @@ -120,7 +120,11 @@ Engine::~Engine() */ void EngList_Sort(EngineList *el, EngList_SortTypeFunction compare) { - qsort(&((*el)[0]), el->size(), sizeof(EngineID), compare); + size_t size = el->size(); + /* out-of-bounds access at the next line for size == 0 (even with operator[] at some systems) + * generally, do not sort if there are less than 2 items */ + if (size < 2) return; + qsort(&(el->at(0)), size, sizeof(EngineID), compare); } /** Sort selected range of items (on indices @ <begin, begin+num_items-1>) |