diff options
Diffstat (limited to 'nx-X11/lib/src/StNColor.c')
-rw-r--r-- | nx-X11/lib/src/StNColor.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/nx-X11/lib/src/StNColor.c b/nx-X11/lib/src/StNColor.c index 8b821c3ef..743fd4edc 100644 --- a/nx-X11/lib/src/StNColor.c +++ b/nx-X11/lib/src/StNColor.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" @@ -46,6 +47,8 @@ int flags) /* DoRed, DoGreen, DoBlue */ XcmsColor cmsColor_exact; XColor scr_def; + if (name != NULL && strlen(name) >= USHRT_MAX) + return 0; #ifdef XCMS /* * Let's Attempt to use Xcms approach to Parse Color @@ -76,7 +79,7 @@ int flags) /* DoRed, DoGreen, DoBlue */ req->cmap = cmap; req->flags = flags; req->pixel = pixel; - req->nbytes = nbytes = strlen(name); + req->nbytes = (CARD16) (nbytes = (unsigned) strlen(name)); req->length += (nbytes + 3) >> 2; /* round up to multiple of 4 */ Data(dpy, name, (long)nbytes); UnlockDisplay(dpy); |