[settings] Ensure fetch_string_setting() returns a NUL-terminated string
authorMichael Brown <mcb30@etherboot.org>
Fri, 7 Nov 2008 03:46:21 +0000 (03:46 +0000)
committerMichael Brown <mcb30@etherboot.org>
Fri, 7 Nov 2008 03:48:29 +0000 (03:48 +0000)
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.

src/core/settings.c

index 9ad2ced..2d9c096 100644 (file)
@@ -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 ) );
 }