[git commit] build system: prevent duplicate applet names

Denys Vlasenko vda.linux at googlemail.com
Tue Nov 27 09:47:06 UTC 2018


commit: https://git.busybox.net/busybox/commit/?id=2d217799e8f23514ad3be6a951aa928c265bc6a4
branch: https://git.busybox.net/busybox/commit/?id=refs/heads/master

The embedded script feature makes it easier to create applets with
duplicate names.  Currently in such cases the build succeeds but
the resulting executable doesn't work as the developer intended.

Catch duplicate names when the applet tables are being generated
and make the build fail.

Signed-off-by: Ron Yorston <rmy at pobox.com>
Signed-off-by: Denys Vlasenko <vda.linux at googlemail.com>
---
 applets/applet_tables.c | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

diff --git a/applets/applet_tables.c b/applets/applet_tables.c
index e3d10c83f..ce2037440 100644
--- a/applets/applet_tables.c
+++ b/applets/applet_tables.c
@@ -84,7 +84,15 @@ int main(int argc, char **argv)
 
 	qsort(applets, NUM_APPLETS, sizeof(applets[0]), cmp_name);
 
-	if (!argv[1])
+	for (i = j = 0; i < NUM_APPLETS-1; ++i) {
+		if (cmp_name(applets+i, applets+i+1) == 0) {
+			fprintf(stderr, "%s: duplicate applet name '%s'\n", argv[0],
+					applets[i].name);
+			j = 1;
+		}
+	}
+
+	if (j != 0 || !argv[1])
 		return 1;
 	snprintf(tmp1, PATH_MAX, "%s.%u.new", argv[1], (int) getpid());
 	i = open(tmp1, O_WRONLY | O_TRUNC | O_CREAT, 0666);


More information about the busybox-cvs mailing list