diff options
Diffstat (limited to 'nx-X11/lib/src/SetFPath.c')
-rw-r--r-- | nx-X11/lib/src/SetFPath.c | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/nx-X11/lib/src/SetFPath.c b/nx-X11/lib/src/SetFPath.c index 60aaef01e..6ac546f7b 100644 --- a/nx-X11/lib/src/SetFPath.c +++ b/nx-X11/lib/src/SetFPath.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 "Xlibint.h" #define safestrlen(s) ((s) ? strlen(s) : 0) @@ -37,7 +38,7 @@ XSetFontPath ( char **directories, int ndirs) { - register int n = 0; + register size_t n = 0; register int i; register int nbytes; char *p; @@ -48,7 +49,12 @@ XSetFontPath ( GetReq (SetFontPath, req); req->nFonts = ndirs; for (i = 0; i < ndirs; i++) { - n += safestrlen (directories[i]) + 1; + n = n + (safestrlen (directories[i]) + 1); + if (n >= USHRT_MAX) { + UnlockDisplay(dpy); + SyncHandle(); + return 0; + } } nbytes = (n + 3) & ~3; req->length += nbytes >> 2; @@ -59,7 +65,7 @@ XSetFontPath ( char *tmp = p; for (i = 0; i < ndirs; i++) { - register int length = safestrlen (directories[i]); + size_t length = safestrlen (directories[i]); *p = length; memcpy (p + 1, directories[i], length); p += length + 1; |