fsmonitor: fix leak of warning message

The fsm_settings__get_incompatible_msg() function returns an allocated
string.  So we can't pass its result directly to warning(); we must hold
on to the pointer and free it to avoid a leak.

The leak here is small and fixed size, but Coverity complained, and
presumably SANITIZE=leaks would eventually.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Jeff King 2022-10-10 20:42:38 -04:00 committed by Junio C Hamano
parent 5aa9e3262e
commit c4f9490790

View File

@ -309,8 +309,10 @@ void refresh_fsmonitor(struct index_state *istate)
enum fsmonitor_reason reason = fsm_settings__get_reason(r);
if (!warn_once && reason > FSMONITOR_REASON_OK) {
char *msg = fsm_settings__get_incompatible_msg(r, reason);
warn_once = 1;
warning("%s", fsm_settings__get_incompatible_msg(r, reason));
warning("%s", msg);
free(msg);
}
if (fsm_mode <= FSMONITOR_MODE_DISABLED ||