From dadfbfc6a5a5705f3080f14b98941c3fd8c82368 Mon Sep 17 00:00:00 2001 From: Aidan MacDonald Date: Mon, 2 May 2022 16:34:18 +0100 Subject: apps: fix close of negative fd in talk.c Bug reported by UBSan. Change-Id: I02276521510acac8696499895fec15993c55aaf6 --- apps/talk.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/apps/talk.c b/apps/talk.c index e440dd98b5..1be2a041c2 100644 --- a/apps/talk.c +++ b/apps/talk.c @@ -552,8 +552,8 @@ alloc_err: } static inline int load_voicefile_failure(int fd) { - /*if (fd >= 0) probably redundant */ - close(fd); + if (fd >= 0) + close(fd); return -1; } /* load the voice file into the mp3 buffer */ @@ -829,7 +829,7 @@ void talk_init(void) * and so we can re-use it if it's already allocated in any event */ filehandle = open_voicefile(); - if (filehandle > -1) + if (filehandle >= 0) { if (!load_voicefile_index(filehandle)) { @@ -880,7 +880,8 @@ void talk_init(void) voice_thread_init(); out: - close(filehandle); /* close again, this was just to detect presence */ + if (filehandle >= 0) + close(filehandle); /* close again, this was just to detect presence */ } /* somebody else claims the mp3 buffer, e.g. for regular play/record */ -- cgit v1.2.3