From f5f59cd8d336b153e2b762bb7afd16e6ab1b1ee2 Mon Sep 17 00:00:00 2001 From: Cheyenne Wills Date: Tue, 25 Jun 2019 10:40:53 -0600 Subject: [PATCH] util: serverLog using memory after free clang's scan-build detected a "use of memory after it is freed" condition. The function OpenLogFile frees the variable ourName before creating a duplicate of the name passed to it. However there is a call that uses ourName as the parameter: OpenLogFile(ourName). This results in freeing ourName then doing a strdup of the same memory location. Test the passed parameter and if it's the same as ourName already skip the free and strdup. This bug was introduced in commit 340ec2f79208ee21c3130c4b1c13995947ce426c "util: allocate log filename buffers" Change-Id: I770008b074e0003c7c1532128f8322da811d6fcc Reviewed-on: https://gerrit.openafs.org/13659 Tested-by: BuildBot Reviewed-by: Benjamin Kaduk --- src/util/serverLog.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/util/serverLog.c b/src/util/serverLog.c index a250d65..13dbed8 100644 --- a/src/util/serverLog.c +++ b/src/util/serverLog.c @@ -575,9 +575,12 @@ OpenLogFile(const char *fileName) RedirectStdStreams(fileName); /* Save our name for reopening. */ - free(ourName); - ourName = strdup(fileName); - opr_Assert(ourName != NULL); + if (ourName != fileName) { + /* Make a copy if needed */ + free(ourName); + ourName = strdup(fileName); + opr_Assert(ourName != NULL); + } serverLogFD = tempfd; -- 1.9.4