8,564
edits
m (→Security) |
m (category cleanup) |
||
Line 1: | Line 1: | ||
The purpose of this page is to provide a todo-list or check-list for anyone that wants to help clean up the Flightgear | The purpose of this page is to provide a todo-list or check-list for anyone that wants to help clean up the [[Flightgear]] code. In addition to this list, you also want to try running FlightGear in [http://freshmeat.net/projects/valgrind/ Valgrind], a very powerful memory debugger and profiler. | ||
'''Feel free to add additional items to this page''' | '''Feel free to add additional items to this page''' | ||
Line 5: | Line 5: | ||
Thanks -- Cameron Moore | Thanks -- Cameron Moore | ||
== Keyboard | == Keyboard reorganisation == | ||
The input settings (especially the keyboard) need some TLC. Here are the major tasks (we need to work on the first one first): | The input settings (especially the keyboard) need some TLC. Here are the major tasks (we need to work on the first one first): | ||
* [[Keyboard function priority list]] — come up with a priority list of functions that need global keyboard assignments for ''all'' aircraft, without worrying about the specific keys. | * [[Keyboard function priority list]] — come up with a priority list of functions that need global keyboard assignments for ''all'' aircraft, without worrying about the specific keys. | ||
* Local key block — decide on a block of keys to set aside for per-aircraft assignment. | * Local key block — decide on a block of keys to set aside for per-aircraft assignment. | ||
* Global key bindings — decide what keys to assign to the functions from the opening list (not using the local key block). | * Global key bindings — decide what keys to assign to the functions from the opening list (not using the local key block). | ||
* Refactor models — refactor all of the aircraft models so that they assign keys only from the local, per-aircraft key block. | * Refactor models — refactor all of the aircraft models so that they assign keys only from the local, per-aircraft key block. | ||
* Add a GUI — add a GUI allowing users to reassign keys while the sim is running and save their changes. | * Add a GUI — add a GUI allowing users to reassign keys while the sim is running and save their changes. | ||
== Major Task List == | == Major Task List == | ||
* Move code out of fgMainLoop() and into separate functions or source files. | * Move code out of fgMainLoop() and into separate functions or source files. | ||
* Replace system() calls in simgear/io/sg_binobj.cxx to `mkdir` | * Replace system() calls in simgear/io/sg_binobj.cxx to `mkdir` | ||
Line 32: | Line 26: | ||
== Persistent Checklist == | == Persistent Checklist == | ||
=== Carelessness === | === Carelessness === | ||
* Properly allocate and deallocate memory using malloc/new/new[{][}] and free/delete/delete[{][}]. Valgrind is helpful when looking for these. | * Properly allocate and deallocate memory using malloc/new/new[{][}] and free/delete/delete[{][}]. Valgrind is helpful when looking for these. | ||
* Close any open file streams when you're through with them. Take care to not write to or close streams that aren't open. Avoid this by initializing file pointers/handles with 0 before use and verify that it is not 0 before accessing/closing. | * Close any open file streams when you're through with them. Take care to not write to or close streams that aren't open. Avoid this by initializing file pointers/handles with 0 before use and verify that it is not 0 before accessing/closing. | ||
=== Compatibility === | === Compatibility === | ||
* Use the SG_LOG() facilities instead of cout and printf(). | * Use the SG_LOG() facilities instead of cout and printf(). | ||
* Use the SG_USING_STD() facilities instead of explicitly using std::function. | * Use the SG_USING_STD() facilities instead of explicitly using std::function. | ||
* Use the STL_* variables defined in simgear/compiler.h when including STL headers. | * Use the STL_* variables defined in simgear/compiler.h when including STL headers. | ||
* When including header files, only use double-quotes when the header is in the same directory. | * When including header files, only use double-quotes when the header is in the same directory. | ||
=== Security === | === Security === | ||
* Use C-string functions with fixed write buffers whenever possible to avoid buffer overflows. | * Use C-string functions with fixed write buffers whenever possible to avoid buffer overflows. | ||
* Perform range/bounds checks on all data received from remote that could cause problems, especially those that specify an amount of data to be handled. | * Perform range/bounds checks on all data received from remote that could cause problems, especially those that specify an amount of data to be handled. | ||
Line 58: | Line 45: | ||
[[Category:Development]] | [[Category:Development]] | ||