Summary: Allocate array on heap rather than stack in
Submitted by: jtn
Submitted on: Sat Dec 7 11:55:34 2013
Priority: 5 - Normal
Assigned to: jtn
Discussion Lock: Any
Planned Release: 2.4.2,2.5.0,2.6.0
genlist_sort() allocates an array of pointers the size of the list to be
sorted on the stack. For long lists on platforms with small stacks, this could
blow the stack (I suspect this is what has happened in bug #20940, with the
agent callback list).
It's safer to allocate it on the heap. The runtime hit should hopefully be
negligible -- I hope no-one's calling a sort function in a tight loop.
A quick survey of other places genlist_sort() is used, looking for where this
might have caused trouble:
* HELP_NATIONS (number of nations)
* unit lists (but only units-supported-by-a-city, units-on-tiles, autoattack
candidates, most of which should be small)
* lists of server settings
None of those seem likely to trigger a stack overflow.
Reply to this item at:
Message sent via/by Gna!
Freeciv-dev mailing list