summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJaroslav Kysela <perex@perex.cz>2022-12-07 14:49:48 +0100
committerJaroslav Kysela <perex@perex.cz>2022-12-07 14:51:32 +0100
commite29413a2205099b2bffe584210d7a2b59f531f90 (patch)
tree83ed8b3180e03745c576c91d0d612fbe3a621dac
parentd28e8cb29485cc93f741b01dc65893c798359963 (diff)
downloadalsa-lib-e29413a2205099b2bffe584210d7a2b59f531f90.tar.gz
ucm: execute_sysw - fix possible use-after-free
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
-rw-r--r--src/ucm/main.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/src/ucm/main.c b/src/ucm/main.c
index 4f36648c..2ff4d3f3 100644
--- a/src/ucm/main.c
+++ b/src/ucm/main.c
@@ -572,16 +572,17 @@ static int execute_sysw(const char *sysw)
wlen = write(fd, value, len);
myerrno = errno;
close(fd);
- free(s);
if (ignore_error)
- return 0;
+ goto __end;
if (wlen != (ssize_t)len) {
uc_error("unable to write '%s' to '%s': %s", value, path, strerror(myerrno));
return -EINVAL;
}
+__end:
+ free(s);
return 0;
}