From: Ron Yorston Date: Sun, 25 Nov 2018 11:46:39 +0000 (+0000) Subject: build system: prevent duplicate applet names X-Git-Tag: 1_30_0~357 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=2d217799e8f23514ad3be6a951aa928c265bc6a4;p=oweals%2Fbusybox.git build system: prevent duplicate applet names 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 Signed-off-by: Denys Vlasenko --- 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);