aboutsummaryrefslogtreecommitdiffstats
path: root/common/pango.c
diff options
context:
space:
mode:
authorLibravatar Connor E <38229097+c-edw@users.noreply.github.com>2018-10-16 19:05:41 +0100
committerLibravatar Connor E <38229097+c-edw@users.noreply.github.com>2018-10-16 20:20:45 +0100
commitcfc533aa9cadb0a382ac4ddfc8c011657febb2da (patch)
tree49d10e53cd1e1da6b8eb075ab8000bbd9a1bdf5e /common/pango.c
parentMerge pull request #2836 from RyanDwyer/set-set-raw-focus (diff)
downloadsway-cfc533aa9cadb0a382ac4ddfc8c011657febb2da.tar.gz
sway-cfc533aa9cadb0a382ac4ddfc8c011657febb2da.tar.zst
sway-cfc533aa9cadb0a382ac4ddfc8c011657febb2da.zip
Truncate message, append buffer overflow message if too long.
Increase buffer size, remove macros. Make variables lowercase. Some more feedback.
Diffstat (limited to 'common/pango.c')
-rw-r--r--common/pango.c15
1 files changed, 9 insertions, 6 deletions
diff --git a/common/pango.c b/common/pango.c
index ba74692e..f0b8db66 100644
--- a/common/pango.c
+++ b/common/pango.c
@@ -10,6 +10,9 @@
10#include "log.h" 10#include "log.h"
11#include "stringop.h" 11#include "stringop.h"
12 12
13static const char *overflow = "[buffer overflow]";
14static const int max_chars = 16384;
15
13size_t escape_markup_text(const char *src, char *dest) { 16size_t escape_markup_text(const char *src, char *dest) {
14 size_t length = 0; 17 size_t length = 0;
15 if (dest) { 18 if (dest) {
@@ -84,12 +87,12 @@ PangoLayout *get_pango_layout(cairo_t *cairo, const char *font,
84 87
85void get_text_size(cairo_t *cairo, const char *font, int *width, int *height, 88void get_text_size(cairo_t *cairo, const char *font, int *width, int *height,
86 int *baseline, double scale, bool markup, const char *fmt, ...) { 89 int *baseline, double scale, bool markup, const char *fmt, ...) {
87 static char buf[2048]; 90 char buf[max_chars];
88 91
89 va_list args; 92 va_list args;
90 va_start(args, fmt); 93 va_start(args, fmt);
91 if (vsnprintf(buf, 2048, fmt, args) >= 2048) { 94 if (vsnprintf(buf, sizeof(buf), fmt, args) >= max_chars) {
92 strcpy(buf, "[buffer overflow]"); 95 strcpy(&buf[sizeof(buf) - sizeof(overflow)], overflow);
93 } 96 }
94 va_end(args); 97 va_end(args);
95 98
@@ -104,12 +107,12 @@ void get_text_size(cairo_t *cairo, const char *font, int *width, int *height,
104 107
105void pango_printf(cairo_t *cairo, const char *font, 108void pango_printf(cairo_t *cairo, const char *font,
106 double scale, bool markup, const char *fmt, ...) { 109 double scale, bool markup, const char *fmt, ...) {
107 static char buf[2048]; 110 char buf[max_chars];
108 111
109 va_list args; 112 va_list args;
110 va_start(args, fmt); 113 va_start(args, fmt);
111 if (vsnprintf(buf, 2048, fmt, args) >= 2048) { 114 if (vsnprintf(buf, sizeof(buf), fmt, args) >= max_chars) {
112 strcpy(buf, "[buffer overflow]"); 115 strcpy(&buf[sizeof(buf) - sizeof(overflow)], overflow);
113 } 116 }
114 va_end(args); 117 va_end(args);
115 118