summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJames Cloos <cloos@jhcloos.com>2008-07-23 00:01:43 -0400
committerJames Cloos <cloos@jhcloos.com>2008-07-23 00:01:43 -0400
commit331cc3f0799a54910a99484264f76569beeee55a (patch)
treef3b204953cdbf48497ba1883d7d903139d31ff35
parentbc3c03a3f3c091026310f0e8d55321cec570a0c5 (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.
-rw-r--r--os/oscolor.c2
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;