diff options
author | truelight <truelight@openttd.org> | 2006-01-06 22:52:31 +0000 |
---|---|---|
committer | truelight <truelight@openttd.org> | 2006-01-06 22:52:31 +0000 |
commit | 835cd6ea2897fed19bcdbdf5f237102a22065502 (patch) | |
tree | bcbe71fd499d92db668ecf04b5e0a41fd2226d96 /driver.c | |
parent | 79ce0def50f4d2c3e9956c9a5e7c93d893c1f465 (diff) | |
download | openttd-835cd6ea2897fed19bcdbdf5f237102a22065502.tar.xz |
(svn r3379) -Fix: protect showhelp against any possible overflow
-Add: [ FS#15 ] Added revision / version at top of help (./openttd -h)
Diffstat (limited to 'driver.c')
-rw-r--r-- | driver.c | 13 |
1 files changed, 10 insertions, 3 deletions
@@ -206,16 +206,23 @@ int GetDriverParamInt(const char* const* parm, const char* name, int def) } -void GetDriverList(char* p) +int GetDriverList(char* p, int size) { const DriverClass* dc; + int pos; for (dc = _driver_classes; dc != endof(_driver_classes); dc++) { const DriverDesc* dd; - p += sprintf(p, "List of %s drivers:\n", dc->name); + pos = snprintf(p, size, "List of %s drivers:\n", dc->name); + p += pos; size -= pos; for (dd = dc->descs; dd->name != NULL; dd++) { - p += sprintf(p, "%10s: %s\n", dd->name, dd->longname); + pos = snprintf(p, size, "%10s: %s\n", dd->name, dd->longname); + p += pos; size -= pos; } + pos = snprintf(p, size, "\n"); + p += pos; size -= pos; } + + return size; } |