Author: imp
Date: Sat Dec  9 07:43:55 2017
New Revision: 326727
URL: https://svnweb.freebsd.org/changeset/base/326727

Log:
  Remove vestiges of -d and -p commands.
  Fix two core dumps when optional data isn't specified.
  
  Sponsored by: Netflix

Modified:
  head/usr.sbin/efibootmgr/efibootmgr.c

Modified: head/usr.sbin/efibootmgr/efibootmgr.c
==============================================================================
--- head/usr.sbin/efibootmgr/efibootmgr.c       Sat Dec  9 06:57:19 2017        
(r326726)
+++ head/usr.sbin/efibootmgr/efibootmgr.c       Sat Dec  9 07:43:55 2017        
(r326727)
@@ -69,7 +69,6 @@ __FBSDID("$FreeBSD$");
 #define BAD_LENGTH     ((size_t)-1)
        
 typedef struct _bmgr_opts {
-       char    *dev;
        char    *env;
        char    *loader;
        char    *label;
@@ -84,7 +83,6 @@ typedef struct _bmgr_opts {
        bool    del_timeout;
        bool    dry_run;
        bool    once;
-       int     part;
        int     cp_src;
        bool    set_active;
        bool    set_bootnext;
@@ -194,7 +192,7 @@ parse_args(int argc, char *argv[])
 {
        int ch;
 
-       while ((ch = getopt_long(argc, argv, 
"A:a:B:C:cDd:e:hk:L:l:Nn:Oo:p:Tt:v",
+       while ((ch = getopt_long(argc, argv, "A:a:B:C:cDe:hk:L:l:Nn:Oo:Tt:v",
                    lopts, NULL)) != -1) {
                switch (ch) {
                case 'A':
@@ -218,9 +216,6 @@ parse_args(int argc, char *argv[])
                case 'D': /* should be remove dups XXX */
                        opts.dry_run = true;
                        break;
-               case 'd':
-                       opts.dev = optarg;
-                       break;
                case 'e':
                        opts.env = strdup(optarg);
                        break;
@@ -251,9 +246,6 @@ parse_args(int argc, char *argv[])
                case 'o':
                        opts.order = strdup(optarg);
                        break;
-               case 'p':
-                       opts.part = strtoul(optarg, NULL, 10);
-                       break;
                case 'T':
                        opts.del_timeout = true;
                        break;
@@ -267,7 +259,7 @@ parse_args(int argc, char *argv[])
                }
        }
        if (opts.create) {
-               if (!(opts.loader && opts.dev && opts.part))
+               if (!opts.loader)
                        errx(1, "%s",CREATE_USAGE);
                return;
        }
@@ -598,7 +590,12 @@ create_loadopt(uint8_t *buf, size_t bufmax, uint32_t a
        /*
         * Compute the length to make sure the passed in buffer is long enough.
         */
-       utf8_to_ucs2(description, &bbuf, &desc_len);
+       if (description)
+               utf8_to_ucs2(description, &bbuf, &desc_len);
+       else {
+               desc_len = 0;
+               bbuf = NULL;
+       }
        len = sizeof(uint32_t) + sizeof(uint16_t) + desc_len + dp_size + 
optional_data_size;
        if (len > bufmax) {
                free(bbuf);
@@ -665,7 +662,7 @@ make_boot_var(const char *label, const char *loader, c
                err(1, "malloc");
 
        lopt_size = create_loadopt(load_opt_buf, MAX_LOADOPT_LEN, load_attrs,
-           dp, llen + klen, label, env, strlen(env) + 1);
+           dp, llen + klen, label, env, env ? strlen(env) + 1 : 0);
        if (lopt_size == BAD_LENGTH)
                errx(1, "Can't crate loadopt");
 
_______________________________________________
svn-src-all@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to