aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJonathan de Boyne Pollard <J.deBoynePollard-newsgroups@NTLWorld.com>2017-05-28 15:30:46 +0100
committerJonathan de Boyne Pollard <J.deBoynePollard-newsgroups@NTLWorld.com>2017-06-03 18:53:28 +0100
commit32396b5879b429def1c48948069c55366d41b9be (patch)
tree49bceecad9e56a47eefe51e7f7fb4580ac3e6633 /src
parent41403c6d25e00bfad004a85111abb3d88190fdbb (diff)
downloadrneovim-32396b5879b429def1c48948069c55366d41b9be.tar.gz
rneovim-32396b5879b429def1c48948069c55366d41b9be.tar.bz2
rneovim-32396b5879b429def1c48948069c55366d41b9be.zip
tui: Perform length safety check in comparison macros.
Diffstat (limited to 'src')
-rw-r--r--src/nvim/tui/tui.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/src/nvim/tui/tui.c b/src/nvim/tui/tui.c
index 725310d645..16040cb5c5 100644
--- a/src/nvim/tui/tui.c
+++ b/src/nvim/tui/tui.c
@@ -44,14 +44,16 @@
#define OUTBUF_SIZE 0xffff
#define TOO_MANY_EVENTS 1000000
-#define STARTS_WITH(str, prefix) (!memcmp((str), (prefix), sizeof(prefix) - 1))
+#define STARTS_WITH(str, prefix) (strlen(term) >= (sizeof(prefix) - 1) \
+ && 0 == memcmp((str), (prefix), sizeof(prefix) - 1))
#define TMUX_WRAP(is_tmux,seq) ((is_tmux) ? "\x1bPtmux;\x1b" seq "\x1b\\" : seq)
#define LINUXRESETC "\x1b[?0c"
// Per the commentary in terminfo, only a minus sign is a true suffix
// separator.
#define TERMINAL_FAMILY(term, prefix) ((term) \
- && (0 == memcmp((term), (prefix), sizeof(prefix) - 1)) \
+ && strlen(term) >= (sizeof(prefix) - 1) \
+ && 0 == memcmp((term), (prefix), sizeof(prefix) - 1) \
&& ('\0' == (term)[sizeof(prefix) - 1] || '-' == (term)[sizeof(prefix) - 1]))
typedef struct {