Hello,

Make getcwd() calls safer.

Newer GCC complains that I didn't check return value from getcwd() ...

--
Petr^2 Spacek
From 39940f692e42313c7301c12c49d76003482d7e11 Mon Sep 17 00:00:00 2001
From: Petr Spacek <[email protected]>
Date: Tue, 18 Feb 2014 10:33:15 +0100
Subject: [PATCH] Make getcwd() calls safer.

Signed-off-by: Petr Spacek <[email protected]>
---
 src/fs.c | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/src/fs.c b/src/fs.c
index 44eebc141bb2a881c95c0f729271e6e1450c9cbe..a7582d0a51db5083c505e6f8fcbdf0725e9eb460 100644
--- a/src/fs.c
+++ b/src/fs.c
@@ -39,14 +39,14 @@ isc_result_t
 fs_dir_create(const char *dir_name)
 {
 	isc_result_t result;
-	char dir_curr[PATH_MAX];
+	char dir_curr[PATH_MAX + 1] = "";
 	isc_dir_t dir_handle;
 	int ret;
 
 	REQUIRE(dir_name != NULL);
 
-	strncpy(dir_curr, msg_getcwd_failed, sizeof(dir_curr));
-	getcwd(dir_curr, sizeof(dir_curr));
+	if (getcwd(dir_curr, sizeof(dir_curr) - 1) == NULL)
+		strncpy(dir_curr, msg_getcwd_failed, sizeof(dir_curr));
 	ret = mkdir(dir_name, 0700);
 	if (ret == 0)
 		result = ISC_R_SUCCESS;
@@ -100,14 +100,14 @@ cleanup:
 isc_result_t
 fs_file_remove(const char *file_name) {
 	isc_result_t result;
-	char dir_curr[PATH_MAX];
+	char dir_curr[PATH_MAX + 1] = "";
 
 	result = isc_file_remove(file_name);
 	if (result == ISC_R_FILENOTFOUND)
 		result = ISC_R_SUCCESS;
 	else if (result != ISC_R_SUCCESS) {
-		strncpy(dir_curr, msg_getcwd_failed, sizeof(dir_curr));
-		getcwd(dir_curr, sizeof(dir_curr));
+		if (getcwd(dir_curr, sizeof(dir_curr) - 1) == NULL)
+			strncpy(dir_curr, msg_getcwd_failed, sizeof(dir_curr));
 		log_error_r("unable to delete file '%s', working directory "
 			    "is '%s'", file_name, dir_curr);
 	}
-- 
1.8.5.3

_______________________________________________
Freeipa-devel mailing list
[email protected]
https://www.redhat.com/mailman/listinfo/freeipa-devel

Reply via email to