From: Michael Brown Date: Fri, 7 Nov 2008 03:46:21 +0000 (+0000) Subject: [settings] Ensure fetch_string_setting() returns a NUL-terminated string X-Git-Tag: v0.9.6~44 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=ed196a3ed26cc9aaa034a6451ee1c789c93dfb68;p=thirdparty%2Fipxe.git [settings] Ensure fetch_string_setting() returns a NUL-terminated string This fixes a regression introduced in commit 612f4e7: [settings] Avoid returning uninitialised data on error in fetch_xxx_setting() in which the memset() was moved from fetch_string_setting() to fetch_setting(), in order that it would be useful for non-string setting types. However, this neglects to take into account the fact that fetch_string_setting() shrinks its buffer by one byte (to allow for the NUL) before calling fetch_setting(). Restore the memset() in fetch_string_setting(), so that the terminating NUL is guaranteed to actually be a NUL. --- diff --git a/src/core/settings.c b/src/core/settings.c index 9ad2ced26..2d9c096e0 100644 --- a/src/core/settings.c +++ b/src/core/settings.c @@ -384,6 +384,7 @@ int fetch_setting_len ( struct settings *settings, struct setting *setting ) { */ int fetch_string_setting ( struct settings *settings, struct setting *setting, char *data, size_t len ) { + memset ( data, 0, len ); return fetch_setting ( settings, setting, data, ( ( len > 0 ) ? ( len - 1 ) : 0 ) ); }