aboutsummaryrefslogtreecommitdiff
path: root/nx-X11/lib/src/ParseCol.c
diff options
context:
space:
mode:
Diffstat (limited to 'nx-X11/lib/src/ParseCol.c')
-rw-r--r--nx-X11/lib/src/ParseCol.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/nx-X11/lib/src/ParseCol.c b/nx-X11/lib/src/ParseCol.c
index e997b1b8c..fcf906929 100644
--- a/nx-X11/lib/src/ParseCol.c
+++ b/nx-X11/lib/src/ParseCol.c
@@ -27,6 +27,7 @@ in this Software without prior written authorization from The Open Group.
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
+#include <limits.h>
#include <stdio.h>
#include "Xlibint.h"
#include "Xcmsint.h"
@@ -39,7 +40,7 @@ XParseColor (
_Xconst char *spec,
XColor *def)
{
- register int n, i;
+ register size_t n, i;
int r, g, b;
char c;
XcmsCCC ccc;
@@ -47,6 +48,8 @@ XParseColor (
if (!spec) return(0);
n = strlen (spec);
+ if (n >= USHRT_MAX)
+ return(0);
if (*spec == '#') {
/*
* RGB
@@ -61,7 +64,7 @@ XParseColor (
r = g;
g = b;
b = 0;
- for (i = n; --i >= 0; ) {
+ for (i = 0; i < n; i++) {
c = *spec++;
b <<= 4;
if (c >= '0' && c <= '9')
@@ -119,7 +122,7 @@ XParseColor (
LockDisplay(dpy);
GetReq (LookupColor, req);
req->cmap = cmap;
- req->nbytes = n = strlen(spec);
+ req->nbytes = (CARD16) (n = strlen(spec));
req->length += (n + 3) >> 2;
Data (dpy, spec, (long)n);
if (!_XReply (dpy, (xReply *) &reply, 0, xTrue)) {