git: bf2145f361b8 - stable/14 - mixer: Fix a bogus free() call in the main loop
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Wed, 30 Oct 2024 13:21:11 UTC
The branch stable/14 has been updated by markj:
URL: https://cgit.FreeBSD.org/src/commit/?id=bf2145f361b8b19573648add42817fae57f4be53
commit bf2145f361b8b19573648add42817fae57f4be53
Author: Mark Johnston <markj@FreeBSD.org>
AuthorDate: 2024-10-23 16:55:39 +0000
Commit: Mark Johnston <markj@FreeBSD.org>
CommitDate: 2024-10-30 13:21:06 +0000
mixer: Fix a bogus free() call in the main loop
After a strsep() call, p might not point at the original allocation
anymore.
Reported by: CHERI
Reviewed by: christos
MFC after: 1 week
Differential Revision: https://reviews.freebsd.org/D47266
(cherry picked from commit c22be0b181e954a4cc00ed4f5c7df974f3061c3c)
---
usr.sbin/mixer/mixer.c | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/usr.sbin/mixer/mixer.c b/usr.sbin/mixer/mixer.c
index 468130ddaa88..70a35f71b25f 100644
--- a/usr.sbin/mixer/mixer.c
+++ b/usr.sbin/mixer/mixer.c
@@ -147,7 +147,9 @@ main(int argc, char *argv[])
parse:
while (argc > 0) {
- if ((p = strdup(*argv)) == NULL)
+ char *orig;
+
+ if ((orig = p = strdup(*argv)) == NULL)
err(1, "strdup(%s)", *argv);
/* Check if we're using the shorthand syntax for volume setting. */
@@ -200,7 +202,7 @@ parse:
/* Input: `dev.control=val`. */
cp->mod(cp->parent_dev, valstr);
next:
- free(p);
+ free(orig);
argc--;
argv++;
}