diff options
author | Jaroslav Kysela <perex@perex.cz> | 2022-12-07 14:49:48 +0100 |
---|---|---|
committer | Jaroslav Kysela <perex@perex.cz> | 2022-12-07 14:51:32 +0100 |
commit | e29413a2205099b2bffe584210d7a2b59f531f90 (patch) | |
tree | 83ed8b3180e03745c576c91d0d612fbe3a621dac | |
parent | d28e8cb29485cc93f741b01dc65893c798359963 (diff) | |
download | alsa-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.c | 5 |
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; } |