Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 26 Apr 2016 10:04:06 +0000 (UTC)
From:      Ed Schouten <ed@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r298624 - head/usr.sbin/bsdinstall/partedit
Message-ID:  <201604261004.u3QA46sY044464@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: ed
Date: Tue Apr 26 10:04:06 2016
New Revision: 298624
URL: https://svnweb.freebsd.org/changeset/base/298624

Log:
  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

Modified:
  head/usr.sbin/bsdinstall/partedit/partedit.c

Modified: head/usr.sbin/bsdinstall/partedit/partedit.c
==============================================================================
--- head/usr.sbin/bsdinstall/partedit/partedit.c	Tue Apr 26 07:47:01 2016	(r298623)
+++ head/usr.sbin/bsdinstall/partedit/partedit.c	Tue Apr 26 10:04:06 2016	(r298624)
@@ -27,15 +27,15 @@
  */
 
 #include <sys/param.h>
-#include <libgen.h>
-#include <libutil.h>
-#include <inttypes.h>
-#include <errno.h>
 
-#include <fstab.h>
-#include <libgeom.h>
 #include <dialog.h>
 #include <dlg_keys.h>
+#include <errno.h>
+#include <fstab.h>
+#include <inttypes.h>
+#include <libgeom.h>
+#include <libutil.h>
+#include <stdlib.h>
 
 #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) {



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201604261004.u3QA46sY044464>