From: Shao Miller Date: Thu, 11 Jun 2009 19:12:27 +0000 (-0400) Subject: [settings] Fix setting_cmp() to handle nameless settings X-Git-Url: http://git.etherboot.org/people/mcb30/gpxe.git/commitdiff_plain/68973f1c491060cbe4c559467dd103866b04129d?ds=sidebyside [settings] Fix setting_cmp() to handle nameless settings setting_cmp() compares by option tag and then by name. Empty names will always match, which gives us a false positive. Fix by explicitly checking for empty names. Modified-by: Michael Brown Signed-off-by: Michael Brown --- diff --git a/src/core/settings.c b/src/core/settings.c index 7a02985b..87d84a08 100644 --- a/src/core/settings.c +++ b/src/core/settings.c @@ -782,8 +782,12 @@ int setting_cmp ( struct setting *a, struct setting *b ) { if ( a->tag && ( a->tag == b->tag ) ) return 0; - /* Otherwise, compare the names */ - return strcmp ( a->name, b->name ); + /* Otherwise, if the settings have names, compare them */ + if ( a->name && b->name && a->name[0] ) + return strcmp ( a->name, b->name ); + + /* Otherwise, return a non-match */ + return ( ! 0 ); } /******************************************************************************