diff options
author | James Cloos <cloos@jhcloos.com> | 2008-07-23 00:01:43 -0400 |
---|---|---|
committer | James Cloos <cloos@jhcloos.com> | 2008-07-23 00:01:43 -0400 |
commit | 331cc3f0799a54910a99484264f76569beeee55a (patch) | |
tree | f3b204953cdbf48497ba1883d7d903139d31ff35 /os | |
parent | bc3c03a3f3c091026310f0e8d55321cec570a0c5 (diff) |
Fix LookupColor
Using strncasecmp(3) with the lenght of the user-supplied colour name
will result in a false positive when the db key starts out with the
same string.
Eg, blue will also match BlueViolet (aka blue violet).
Since the shorter strings occur first in the database, avoid such
errors by treating a 0 result from strncasecmp(3) as a positive result
when the key’s length is longer than the supplied string’s.
Diffstat (limited to 'os')
-rw-r--r-- | os/oscolor.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/os/oscolor.c b/os/oscolor.c index cc45aafb1..69eadc23e 100644 --- a/os/oscolor.c +++ b/os/oscolor.c @@ -1590,6 +1590,8 @@ OsLookupColor(int screen, mid = (low + high) / 2; c = &BuiltinColors[mid]; r = strncasecmp (&BuiltinColorNames[c->name], name, len); + if (r == 0 && strlen (&BuiltinColorNames[c->name]) > len) + r++; if (r == 0) { *pred = c->red * 0x101; |