aboutsummaryrefslogtreecommitdiff
path: root/nx-X11/lib/src/FontInfo.c
diff options
context:
space:
mode:
authorMike Gabriel <mike.gabriel@das-netzwerkteam.de>2023-04-27 14:10:57 +0200
committerMike Gabriel <mike.gabriel@das-netzwerkteam.de>2023-04-27 14:10:57 +0200
commit91d9218c0cc659f40918af6ac6c035c6c48d2c6d (patch)
tree79054df1730d4723658b02cec311bc8ba7655662 /nx-X11/lib/src/FontInfo.c
parenta502149a844736dcc7f7dedd7c63229c74a448ee (diff)
parent4875a15ca61358a1c95b156b2279fce092451278 (diff)
downloadnx-libs-91d9218c0cc659f40918af6ac6c035c6c48d2c6d.tar.gz
nx-libs-91d9218c0cc659f40918af6ac6c035c6c48d2c6d.tar.bz2
nx-libs-91d9218c0cc659f40918af6ac6c035c6c48d2c6d.zip
Merge branch 'uli42-pr/update_libX11_2022' into 3.6.x
Attributes GH PR #1037: https://github.com/ArcticaProject/nx-libs/pull/1037
Diffstat (limited to 'nx-X11/lib/src/FontInfo.c')
-rw-r--r--nx-X11/lib/src/FontInfo.c18
1 files changed, 11 insertions, 7 deletions
diff --git a/nx-X11/lib/src/FontInfo.c b/nx-X11/lib/src/FontInfo.c
index a2d12c2ec..0e4ae097b 100644
--- a/nx-X11/lib/src/FontInfo.c
+++ b/nx-X11/lib/src/FontInfo.c
@@ -28,6 +28,7 @@ in this Software without prior written authorization from The Open Group.
#include <config.h>
#endif
#include "Xlibint.h"
+#include "reallocarray.h"
#include <limits.h>
#if defined(XF86BIGFONT)
@@ -57,10 +58,13 @@ XFontStruct **info) /* RETURN */
register xListFontsReq *req;
int j;
+ if (pattern != NULL && strlen(pattern) >= USHRT_MAX)
+ return NULL;
+
LockDisplay(dpy);
GetReq(ListFontsWithInfo, req);
req->maxNames = maxNames;
- nbytes = req->nbytes = pattern ? strlen (pattern) : 0;
+ nbytes = req->nbytes = pattern ? (CARD16) strlen (pattern) : 0;
req->length += (nbytes + 3) >> 2;
_XSend (dpy, pattern, nbytes);
/* use _XSend instead of Data, since subsequent _XReply will flush buffer */
@@ -91,22 +95,22 @@ XFontStruct **info) /* RETURN */
XFontStruct * tmp_finfo;
char ** tmp_flist;
- tmp_finfo = Xrealloc (finfo, sizeof(XFontStruct) * size);
+ tmp_finfo = Xreallocarray (finfo, size, sizeof(XFontStruct));
if (tmp_finfo)
finfo = tmp_finfo;
else
goto badmem;
- tmp_flist = Xrealloc (flist, sizeof(char *) * (size+1));
+ tmp_flist = Xreallocarray (flist, size + 1, sizeof(char *));
if (tmp_flist)
flist = tmp_flist;
else
goto badmem;
}
else {
- if (! (finfo = Xmalloc(sizeof(XFontStruct) * size)))
+ if (! (finfo = Xmallocarray(size, sizeof(XFontStruct))))
goto clearwire;
- if (! (flist = Xmalloc(sizeof(char *) * (size+1)))) {
+ if (! (flist = Xmallocarray(size + 1, sizeof(char *)))) {
Xfree(finfo);
goto clearwire;
}
@@ -137,8 +141,8 @@ XFontStruct **info) /* RETURN */
/* nFontProps is a CARD16 */
nbytes = reply.nFontProps * SIZEOF(xFontProp);
if ((nbytes >> 2) <= reply_left) {
- size_t pbytes = reply.nFontProps * sizeof(XFontProp);
- fs->properties = Xmalloc (pbytes);
+ fs->properties = Xmallocarray (reply.nFontProps,
+ sizeof(XFontProp));
}
if (! fs->properties)
goto badmem;