[BusyBox-cvs] svn commit: trunk/busybox/e2fsprogs

vapier at busybox.net vapier at busybox.net
Mon Apr 25 05:24:36 UTC 2005


Author: vapier
Date: 2005-04-24 23:24:35 -0600 (Sun, 24 Apr 2005)
New Revision: 10179

Log:
use asprintf in place of malloc/sprintf as suggested by solar

Modified:
   trunk/busybox/e2fsprogs/chattr.c
   trunk/busybox/e2fsprogs/lsattr.c


Changeset:
Modified: trunk/busybox/e2fsprogs/chattr.c
===================================================================
--- trunk/busybox/e2fsprogs/chattr.c	2005-04-25 05:00:33 UTC (rev 10178)
+++ trunk/busybox/e2fsprogs/chattr.c	2005-04-25 05:24:35 UTC (rev 10179)
@@ -167,11 +167,9 @@
 	/*if (strcmp(de->d_name, ".") && strcmp(de->d_name, "..")) {*/
 	if (de->d_name[0] == '.' && (de->d_name[1] == '\0' || \
 	   (de->d_name[1] == '.' && de->d_name[2] == '\0'))) {
-
-		char *path = malloc(strlen(dir_name) + 1 + strlen(de->d_name) + 1);
-		if (!path)
-			bb_error_msg_and_die("Couldn't allocate path variable in chattr_dir_proc");
-		sprintf(path, "%s/%s", dir_name, de->d_name);
+		char *path;
+		if (asprintf(&path, "%s/%s", dir_name, de->d_name) == -1)
+			bb_error_msg_and_die("asprintf failed");
 		change_attributes(path);
 		free(path);
 	}

Modified: trunk/busybox/e2fsprogs/lsattr.c
===================================================================
--- trunk/busybox/e2fsprogs/lsattr.c	2005-04-25 05:00:33 UTC (rev 10178)
+++ trunk/busybox/e2fsprogs/lsattr.c	2005-04-25 05:24:35 UTC (rev 10179)
@@ -101,29 +101,31 @@
 {
 	STRUCT_STAT	st;
 	char *path;
-	int dir_len = strlen(dir_name);
+	int i = strlen(dir_name);
 
-	path = malloc(dir_len + strlen(de->d_name) + 2);
+	if (i && dir_name[i-1] == '/')
+		i = asprintf(&path, "%s%s", dir_name, de->d_name);
+	else
+		i = asprintf(&path, "%s/%s", dir_name, de->d_name);
+	if (i == -1)
+		bb_perror_msg_and_die("asprintf failed");
 
-	if (dir_len && dir_name[dir_len-1] == '/')
-		sprintf(path, "%s%s", dir_name, de->d_name);
-	else
-		sprintf(path, "%s/%s", dir_name, de->d_name);
 	if (LSTAT(path, &st) == -1)
 		bb_perror_msg(path);
 	else {
 		if (de->d_name[0] != '.' || (flags & OPT_ALL)) {
 			list_attributes(path);
 			if (S_ISDIR(st.st_mode) && (flags & OPT_RECUR) &&
-			    strcmp(de->d_name, ".") &&
-			    strcmp(de->d_name, "..")) {
+			    strcmp(de->d_name, ".") && strcmp(de->d_name, "..")) {
 				printf("\n%s:\n", path);
 				iterate_on_dir(path, lsattr_dir_proc, NULL);
 				printf("\n");
 			}
 		}
 	}
+
 	free(path);
+
 	return 0;
 }
 




More information about the busybox-cvs mailing list