aboutsummaryrefslogtreecommitdiff
path: root/nx-X11/lib/modules/im/ximcp/imLcPrs.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/modules/im/ximcp/imLcPrs.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/modules/im/ximcp/imLcPrs.c')
-rw-r--r--nx-X11/lib/modules/im/ximcp/imLcPrs.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/nx-X11/lib/modules/im/ximcp/imLcPrs.c b/nx-X11/lib/modules/im/ximcp/imLcPrs.c
index fa992e5d3..d374d6ca8 100644
--- a/nx-X11/lib/modules/im/ximcp/imLcPrs.c
+++ b/nx-X11/lib/modules/im/ximcp/imLcPrs.c
@@ -501,7 +501,7 @@ parseline(
if ((filename = TransFileName(im, tokenbuf)) == NULL)
goto error;
infp = _XFopenFile(filename, "r");
- Xfree(filename);
+ Xfree(filename);
if (infp == NULL)
goto error;
parsestringfile(infp, im, depth);
@@ -676,8 +676,10 @@ parseline(
goto error;
b->tree = new;
b->treesize = newsize;
+ /* Re-derive top after realloc() to avoid undefined behaviour
+ (and crashes on architectures that track pointer bounds). */
if (top >= (DTIndex *) old && top < (DTIndex *) &old[oldsize])
- top = (DTIndex *) (((char *) top) + (((char *)b->tree)-(char *)old));
+ top = (DTIndex *) (((char *)new) + (((char *)top)-(char *)old));
}
p = &b->tree[b->treeused];
p->keysym = buf[i].keysym;