diff options
author | Shao Miller | 2009-06-11 21:12:27 +0200 |
---|---|---|
committer | Michael Brown | 2009-06-13 13:04:08 +0200 |
commit | 68973f1c491060cbe4c559467dd103866b04129d (patch) | |
tree | ca21109d64a0ef27d5267e1263f3b863e73efa80 /src/core/settings.c | |
parent | [netdevice] Fix incorrect value for MAX_LL_HEADER_LEN (diff) | |
download | ipxe-68973f1c491060cbe4c559467dd103866b04129d.tar.gz ipxe-68973f1c491060cbe4c559467dd103866b04129d.tar.xz ipxe-68973f1c491060cbe4c559467dd103866b04129d.zip |
[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 <mcb30@etherboot.org>
Signed-off-by: Michael Brown <mcb30@etherboot.org>
Diffstat (limited to 'src/core/settings.c')
-rw-r--r-- | src/core/settings.c | 8 |
1 files changed, 6 insertions, 2 deletions
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 ); } /****************************************************************************** |