Luke's fork of the suckless simple terminal (st) with vim bindings and Xresource compatibility.
Go to file
magras a8cb8e9454 fix use after free in font caching algorithm
Current font caching algorithm contains a use after free error. A font
removed from `frc` might be still listed in `wx.specbuf`. It will lead
to a crash inside `XftDrawGlyphFontSpec()`.

Steps to reproduce:
$ st -f 'Misc Tamsyn:scalable=false'
$ curl https://www.cl.cam.ac.uk/~mgk25/ucs/examples/UTF-8-demo.txt

Of course, result depends on fonts installed on a system and fontconfig.
In my case, I'm getting consistent segfaults with different fonts.

I replaced a fixed array with a simple unbounded buffer with a constant
growth rate. Cache starts with a capacity of 0, gets increments by 16,
and never shrinks. On my machine after `cat UTF-8-demo.txt` buffer
reaches a capacity of 192. During casual use capacity stays at 0.
2019-03-03 11:18:31 +01:00
arg.h don't modify argv, use a counter 2018-03-20 21:22:27 +01:00
config.def.h config: add Shift+Insert as selpaste() again 2019-01-10 18:16:17 +01:00
config.mk bump version to 0.8.2 2019-02-09 12:48:39 +01:00
FAQ Fix FAQ typo 2017-12-21 19:17:40 +01:00
LEGACY LEGACY: typo. 2012-09-18 19:08:03 +02:00
LICENSE LICENSE: fix a few years 2018-03-14 20:08:00 +01:00
Makefile Makefile: fix dependencies on config.h 2019-01-04 12:33:01 +01:00
README tic -s -> tic -sx (Treat unknown capabilities as user-defined.) 2016-11-14 19:05:47 +01:00
st.1 Remove the ISO 14755 feature 2018-09-11 19:05:55 +02:00
st.c better Input Method Editor (IME) support 2019-02-12 18:45:15 +01:00
st.h Remove the ISO 14755 feature 2018-09-11 19:05:55 +02:00
st.info Add dim/smxx/rmxx to terminfo, remove duplicate kich1 2017-07-12 13:29:30 +02:00
TODO Remove old TODO entry. 2015-04-13 17:06:11 +02:00
win.h better Input Method Editor (IME) support 2019-02-12 18:45:15 +01:00
x.c fix use after free in font caching algorithm 2019-03-03 11:18:31 +01:00

st - simple terminal
--------------------
st is a simple terminal emulator for X which sucks less.


Requirements
------------
In order to build st you need the Xlib header files.


Installation
------------
Edit config.mk to match your local setup (st is installed into
the /usr/local namespace by default).

Afterwards enter the following command to build and install st (if
necessary as root):

    make clean install


Running st
----------
If you did not install st with make clean install, you must compile
the st terminfo entry with the following command:

    tic -sx st.info

See the man page for additional details.

Credits
-------
Based on Aurélien APTEL <aurelien dot aptel at gmail dot com> bt source code.