From owner-svn-src-head@FreeBSD.ORG Mon Aug 27 14:51:26 2012 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id C22DA106566B; Mon, 27 Aug 2012 14:51:26 +0000 (UTC) (envelope-from rdivacky@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id AC7F98FC14; Mon, 27 Aug 2012 14:51:26 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q7REpQpq013161; Mon, 27 Aug 2012 14:51:26 GMT (envelope-from rdivacky@svn.freebsd.org) Received: (from rdivacky@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q7REpQ6W013159; Mon, 27 Aug 2012 14:51:26 GMT (envelope-from rdivacky@svn.freebsd.org) Message-Id: <201208271451.q7REpQ6W013159@svn.freebsd.org> From: Roman Divacky Date: Mon, 27 Aug 2012 14:51:26 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r239733 - head/usr.sbin/nvram X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 27 Aug 2012 14:51:26 -0000 Author: rdivacky Date: Mon Aug 27 14:51:26 2012 New Revision: 239733 URL: http://svn.freebsd.org/changeset/base/239733 Log: Dont cast from char* to struct chrp_header* which has a bigger alignment requirements. Copy it via union instead. Fixes a clang warning about alignment. Reviewed by: sobomax Modified: head/usr.sbin/nvram/nvram.c Modified: head/usr.sbin/nvram/nvram.c ============================================================================== --- head/usr.sbin/nvram/nvram.c Mon Aug 27 14:44:40 2012 (r239732) +++ head/usr.sbin/nvram/nvram.c Mon Aug 27 14:51:26 2012 (r239733) @@ -51,12 +51,16 @@ struct deletelist { struct deletelist *last; }; +union { + uint8_t buf[sizeof(struct chrp_header)]; + struct chrp_header header; +} conv; + int main(int argc, char **argv) { int opt, dump, fd, res, i, size; uint8_t buf[NVRAM_SIZE], *cp, *common; - struct chrp_header *header; struct deletelist *dl; dump = 0; @@ -116,9 +120,9 @@ main(int argc, char **argv) /* Locate common block */ size = 0; for (cp = buf; cp < buf + sizeof(buf); cp += size) { - header = (struct chrp_header *)cp; - size = header->length * 0x10; - if (strncmp(header->name, "common", 7) == 0) + memcpy(conv.buf, cp, sizeof(struct chrp_header)); + size = conv.header.length * 0x10; + if (strncmp(conv.header.name, "common", 7) == 0) break; } if (cp >= buf + sizeof(buf) || size <= (int)sizeof(struct chrp_header))