From 89f75dcd1f779a93936c90c7a124c2983c018df0 Mon Sep 17 00:00:00 2001 From: Thomas Vigouroux Date: Fri, 24 Jun 2022 08:29:15 +0200 Subject: fix(coverity/348300): free memory when overiding sing attribute Nothing prevent the user from doing `:sign define abc culhl=Normal culhl=Normal` and thus this leads to an obvious memory leak. --- src/nvim/sign.c | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'src') diff --git a/src/nvim/sign.c b/src/nvim/sign.c index a5adc48540..0e4d092025 100644 --- a/src/nvim/sign.c +++ b/src/nvim/sign.c @@ -1176,21 +1176,27 @@ static void sign_define_cmd(char_u *sign_name, char_u *cmdline) p = skiptowhite_esc(arg); if (STRNCMP(arg, "icon=", 5) == 0) { arg += 5; + XFREE_CLEAR(icon); icon = vim_strnsave(arg, (size_t)(p - arg)); } else if (STRNCMP(arg, "text=", 5) == 0) { arg += 5; + XFREE_CLEAR(text); text = vim_strnsave(arg, (size_t)(p - arg)); } else if (STRNCMP(arg, "linehl=", 7) == 0) { arg += 7; + XFREE_CLEAR(linehl); linehl = vim_strnsave(arg, (size_t)(p - arg)); } else if (STRNCMP(arg, "texthl=", 7) == 0) { arg += 7; + XFREE_CLEAR(texthl); texthl = vim_strnsave(arg, (size_t)(p - arg)); } else if (STRNCMP(arg, "culhl=", 6) == 0) { arg += 6; + XFREE_CLEAR(culhl); culhl = vim_strnsave(arg, (size_t)(p - arg)); } else if (STRNCMP(arg, "numhl=", 6) == 0) { arg += 6; + XFREE_CLEAR(numhl); numhl = vim_strnsave(arg, (size_t)(p - arg)); } else { semsg(_(e_invarg2), arg); -- cgit