Date: Thu, 20 Mar 2014 02:27:25 +0000 (UTC) From: Marcel Moolenaar <marcel@FreeBSD.org> To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r263414 - user/marcel/mkimg Message-ID: <201403200227.s2K2RQMm070231@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: marcel Date: Thu Mar 20 02:27:25 2014 New Revision: 263414 URL: http://svnweb.freebsd.org/changeset/base/263414 Log: Check the partition type alias as defined by the scheme. Modified: user/marcel/mkimg/mkimg.c user/marcel/mkimg/mkimg.h user/marcel/mkimg/scheme.c Modified: user/marcel/mkimg/mkimg.c ============================================================================== --- user/marcel/mkimg/mkimg.c Thu Mar 20 02:23:52 2014 (r263413) +++ user/marcel/mkimg/mkimg.c Thu Mar 20 02:27:25 2014 (r263414) @@ -133,12 +133,12 @@ parse_part(const char *spec) error = EINVAL; goto errout; } - part->type = malloc(len); - if (part->type == NULL) { + part->alias = malloc(len); + if (part->alias == NULL) { error = ENOMEM; goto errout; } - strlcpy(part->type, spec, len); + strlcpy(part->alias, spec, len); spec = sep + 1; switch (*spec) { @@ -169,8 +169,8 @@ parse_part(const char *spec) return (0); errout: - if (part->type != NULL) - free(part->type); + if (part->alias != NULL) + free(part->alias); free(part); return (error); } @@ -246,7 +246,9 @@ mkimg(void) break; } part->size = size; - scheme_check_part(part); + error = scheme_check_part(part); + if (error) + errc(EX_DATAERR, error, "partition %d", part->index+1); offset = scheme_next_offset(offset, size); } Modified: user/marcel/mkimg/mkimg.h ============================================================================== --- user/marcel/mkimg/mkimg.h Thu Mar 20 02:23:52 2014 (r263413) +++ user/marcel/mkimg/mkimg.h Thu Mar 20 02:27:25 2014 (r263414) @@ -31,7 +31,7 @@ struct part { STAILQ_ENTRY(part) link; - char *type; /* Partition type. */ + char *alias; /* Partition type alias. */ char *contents; /* Contents/size specification. */ u_int kind; /* Content kind. */ #define PART_UNDEF 0 Modified: user/marcel/mkimg/scheme.c ============================================================================== --- user/marcel/mkimg/scheme.c Thu Mar 20 02:23:52 2014 (r263413) +++ user/marcel/mkimg/scheme.c Thu Mar 20 02:27:25 2014 (r263414) @@ -67,11 +67,25 @@ scheme_selected(void) int scheme_check_part(struct part *p) { + struct mkimg_alias *alias, *iter; warnx("part(%s): index=%u, type=`%s', offset=%ju, size=%ju", - scheme->name, p->index, p->type, (uintmax_t)p->offset, + scheme->name, p->index, p->alias, (uintmax_t)p->offset, (uintmax_t)p->size); + /* Check the partition type alias */ + alias = NULL; + iter = scheme->aliases; + while (iter->name != NULL) { + if (strcasecmp(p->alias, iter->name) == 0) { + alias = iter; + break; + } + iter++; + } + if (alias == NULL) + return (EINVAL); + return (0); }
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201403200227.s2K2RQMm070231>