From 4e7e2cad096f1f932f288d74e029294d2c6e5ef6 Mon Sep 17 00:00:00 2001 From: Ed Schouten Date: Tue, 26 Apr 2016 10:04:06 +0000 Subject: [PATCH] Remove unportable calls to basename(). The POSIX version of basename() doesn't use a 'const char *' argument; the function may overwrite its input buffer. Instead of copying the input string, let's just simplify this code by using our getprogname() function that already returns the name of the application in the right format. Reviewed by: allanjude Differential Revision: https://reviews.freebsd.org/D6094 --- usr.sbin/bsdinstall/partedit/partedit.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/usr.sbin/bsdinstall/partedit/partedit.c b/usr.sbin/bsdinstall/partedit/partedit.c index f02204437b8b..6723af5e8a7a 100644 --- a/usr.sbin/bsdinstall/partedit/partedit.c +++ b/usr.sbin/bsdinstall/partedit/partedit.c @@ -27,15 +27,15 @@ */ #include -#include -#include -#include -#include -#include -#include #include #include +#include +#include +#include +#include +#include +#include #include "diskeditor.h" #include "partedit.h" @@ -71,13 +71,14 @@ int main(int argc, const char **argv) { struct partition_metadata *md; - const char *prompt; + const char *progname, *prompt; struct partedit_item *items = NULL; struct gmesh mesh; int i, op, nitems, nscroll; int error; - if (strcmp(basename(argv[0]), "sade") == 0) + progname = getprogname(); + if (strcmp(progname, "sade") == 0) sade_mode = 1; TAILQ_INIT(&part_metadata); @@ -93,7 +94,7 @@ main(int argc, const char **argv) /* Revert changes on SIGINT */ signal(SIGINT, sigint_handler); - if (strcmp(basename(argv[0]), "autopart") == 0) { /* Guided */ + if (strcmp(progname, "autopart") == 0) { /* Guided */ prompt = "Please review the disk setup. When complete, press " "the Finish button."; /* Experimental ZFS autopartition support */ @@ -102,7 +103,7 @@ main(int argc, const char **argv) } else { part_wizard("ufs"); } - } else if (strcmp(basename(argv[0]), "scriptedpart") == 0) { + } else if (strcmp(progname, "scriptedpart") == 0) { error = scripted_editor(argc, argv); prompt = NULL; if (error != 0) {