]> granicus.if.org Git - graphviz/commit
fix: take a copy of font name when caching fonts in Pango plugin
authorMatthew Fernandez <matthew.fernandez@gmail.com>
Sat, 1 Aug 2020 16:37:20 +0000 (09:37 -0700)
committerMatthew Fernandez <matthew.fernandez@gmail.com>
Sat, 8 Aug 2020 01:48:49 +0000 (18:48 -0700)
commit621cb79d6221726cbe2b367fc469e11f2b8b8c33
treea7f668f8529d355a98a8cfdd987be81fc6ecbfe8
parente7af9da749352bd9367c14886895c5c41925af10
fix: take a copy of font name when caching fonts in Pango plugin

The Pango plugin caches the last used font to save an expensive reconstruction
process each time it runs. To determine whether the cached font is eligible for
reuse, the name and size of the requested font are checked against the cache
entry. However the name of the cached font was only stored as a pointer to the
original name. The cached entry could outlive the original font, which could be
freed before a next call into the plugin. As a result, the plugin would perform
a strcmp using a stale freed pointer.

To address this we simply take a copy of the font name's string data instead of
just a pointer to it. There is no need to copy any of the other cached fields as
they are only accessed if the font name check finds the entry to be valid.

Related to #1767.
plugin/pango/gvtextlayout_pango.c