From aee88ebe56a660a3975c61202b5be343b5bc688f Mon Sep 17 00:00:00 2001 From: Tee KOBAYASHI Date: Mon, 25 Apr 2022 08:19:29 +0900 Subject: [PATCH] st: Fix invalid `free()` in `xsettitle()` by checking return value of `Xutf8TextListToTextProperty()`. --- x11-packages/st/build.sh | 5 +++-- .../st/x.c-xsettitle-check-return-value.patch | 18 ++++++++++++++++++ 2 files changed, 21 insertions(+), 2 deletions(-) create mode 100644 x11-packages/st/x.c-xsettitle-check-return-value.patch diff --git a/x11-packages/st/build.sh b/x11-packages/st/build.sh index 1d9b39d92..4488d26c5 100644 --- a/x11-packages/st/build.sh +++ b/x11-packages/st/build.sh @@ -3,7 +3,7 @@ TERMUX_PKG_DESCRIPTION="A simple virtual terminal emulator for X" TERMUX_PKG_LICENSE="MIT" TERMUX_PKG_MAINTAINER="Tristan Ross " TERMUX_PKG_VERSION=0.8.4 -TERMUX_PKG_REVISION=5 +TERMUX_PKG_REVISION=6 TERMUX_PKG_SRCURL="http://dl.suckless.org/st/st-$TERMUX_PKG_VERSION.tar.gz" TERMUX_PKG_SHA256=d42d3ceceb4d6a65e32e90a5336e3d446db612c3fbd9ebc1780bc6c9a03346a6 # FIXME: config.h specified a Liberation Mono font which is not available in Termux. @@ -14,5 +14,6 @@ TERMUX_PKG_EXTRA_MAKE_ARGS="TERMINFO=$TERMUX_PREFIX/share/terminfo" TERMUX_PKG_RM_AFTER_INSTALL="share/terminfo" termux_step_configure() { - cp "$TERMUX_PKG_BUILDER_DIR/config.h" "config.h" + sed "s:@TERMUX_PREFIX@:${TERMUX_PREFIX}:g" \ + "$TERMUX_PKG_BUILDER_DIR/config.h" > config.h } diff --git a/x11-packages/st/x.c-xsettitle-check-return-value.patch b/x11-packages/st/x.c-xsettitle-check-return-value.patch new file mode 100644 index 000000000..8089a59bd --- /dev/null +++ b/x11-packages/st/x.c-xsettitle-check-return-value.patch @@ -0,0 +1,18 @@ +--- a/x.c ++++ b/x.c +@@ -1585,11 +1585,14 @@ + void + xsettitle(char *p) + { ++ int r; + XTextProperty prop; + DEFAULT(p, opt_title); + +- Xutf8TextListToTextProperty(xw.dpy, &p, 1, XUTF8StringStyle, ++ r = Xutf8TextListToTextProperty(xw.dpy, &p, 1, XUTF8StringStyle, + &prop); ++ if (r != Success) ++ return; + XSetWMName(xw.dpy, xw.win, &prop); + XSetTextProperty(xw.dpy, xw.win, &prop, xw.netwmname); + XFree(prop.value);