[patch] fix invalid free() in HEAD's readlink.c; take two

Bernhard Fischer rep.nop at aon.at
Sun Sep 11 09:42:31 UTC 2005


It's too early. I'll try to wait until i'm really awake next time,
sorry.

Attached patch should be correct.

- free the buffer allocated by xreadlink(), i.e. when
  CONFIG_FEATURE_READLINK_FOLLOW isn't set or no -f was given.

-------------- next part --------------
--- busybox.oorig/debianutils/readlink.c	2005-09-11 10:08:49.000000000 +0200
+++ busybox/debianutils/readlink.c	2005-09-11 11:40:38.000000000 +0200
@@ -31,6 +31,7 @@
 # define READLINK_FLAG_f	(1 << 0)
 #else
 # define READLINK_FOLLOW	""
+# define READLINK_FLAG_f	(0)
 #endif
 
 static const char readlink_options[] = READLINK_FOLLOW;
@@ -57,7 +58,10 @@ int readlink_main(int argc, char **argv)
 		return EXIT_FAILURE;
 	puts(buf);
 
-	if (ENABLE_FEATURE_CLEAN_UP) free(buf);
+	if (ENABLE_FEATURE_CLEAN_UP) {
+		if (!(opt & READLINK_FLAG_f))
+			free(buf);
+	}
 
 	return EXIT_SUCCESS;
 }


More information about the busybox mailing list