[ebtables PATCH] Fix segfault with missing lockfile directory

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Apparently, dirname() modifies the buffer passed to it. Given a
read-only location, this leads to a segfault. Use a buffer initialized
(and tailored) to the content of LOCKFILE macro at compile-time instead.

Fixes: f45756c1ca3b5 ("Allow customizing lockfile location at configure time")
Signed-off-by: Phil Sutter <phil@xxxxxx>
---
 libebtc.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/libebtc.c b/libebtc.c
index f2a2b500ea751..2a9ab87ac99c0 100644
--- a/libebtc.c
+++ b/libebtc.c
@@ -140,12 +140,13 @@ int use_lockfd;
  * or -2 on any other error. */
 static int lock_file()
 {
+	char pathbuf[] = LOCKFILE;
 	int fd, try = 0;
 
 retry:
 	fd = open(LOCKFILE, O_CREAT, 00600);
 	if (fd < 0) {
-		if (try == 1 || mkdir(dirname(LOCKFILE), 00700))
+		if (try == 1 || mkdir(dirname(pathbuf), 00700))
 			return -2;
 		try = 1;
 		goto retry;
-- 
2.21.0




[Index of Archives]     [Netfitler Users]     [Berkeley Packet Filter]     [LARTC]     [Bugtraq]     [Yosemite Forum]

  Powered by Linux