From owner-svn-src-user@FreeBSD.ORG Thu Mar 20 02:27:26 2014 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id B9821E9E; Thu, 20 Mar 2014 02:27:26 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 8CA85FFA; Thu, 20 Mar 2014 02:27:26 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.8/8.14.8) with ESMTP id s2K2RQrH070234; Thu, 20 Mar 2014 02:27:26 GMT (envelope-from marcel@svn.freebsd.org) Received: (from marcel@localhost) by svn.freebsd.org (8.14.8/8.14.8/Submit) id s2K2RQMm070231; Thu, 20 Mar 2014 02:27:26 GMT (envelope-from marcel@svn.freebsd.org) Message-Id: <201403200227.s2K2RQMm070231@svn.freebsd.org> From: Marcel Moolenaar Date: Thu, 20 Mar 2014 02:27:25 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r263414 - user/marcel/mkimg X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 20 Mar 2014 02:27:26 -0000 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); }