[klibc] [PATCH 1/7] ln: Check snprintf() return values

maximilian attems max at stro.at
Tue Jul 5 11:06:26 PDT 2011


Add some semi-useful error message, as printing the failing dir or file
seems not really advisable after that error.

Signed-off-by: maximilian attems <max at stro.at>
---
 usr/utils/ln.c |   20 +++++++++++++++-----
 1 files changed, 15 insertions(+), 5 deletions(-)

diff --git a/usr/utils/ln.c b/usr/utils/ln.c
index e826eb8..257b33f 100644
--- a/usr/utils/ln.c
+++ b/usr/utils/ln.c
@@ -9,7 +9,7 @@
 
 int main(int argc, char *argv[])
 {
-	int c, s, f;
+	int c, s, f, len;
 	char *p;
 	struct stat sb;
 
@@ -56,10 +56,20 @@ int main(int argc, char *argv[])
 		p = strrchr(argv[c], '/');
 		p++;
 
-		if (S_ISDIR(sb.st_mode))
-			snprintf(target, PATH_MAX, "%s/%s", argv[argc - 1], p);
-		else
-			snprintf(target, PATH_MAX, "%s", argv[argc - 1]);
+		if (S_ISDIR(sb.st_mode)) {
+			len = snprintf(target, PATH_MAX, "%s/%s",
+				       	argv[argc - 1], p);
+			if (len >= PATH_MAX) {
+				fprintf(stderr, "snprintf directory failed");
+				return 1;
+			}
+		} else {
+			len = snprintf(target, PATH_MAX, "%s", argv[argc - 1]);
+			if (len >= PATH_MAX) {
+				fprintf(stderr, "snprintf file failed");
+				return -1;
+			}
+		}
 
 		if (f)
 			unlink(target);
-- 
1.7.5.4



More information about the klibc mailing list