aboutsummaryrefslogtreecommitdiff
path: root/usr.sbin/nvram
diff options
context:
space:
mode:
authorRoman Divacky <rdivacky@FreeBSD.org>2012-08-27 14:51:26 +0000
committerRoman Divacky <rdivacky@FreeBSD.org>2012-08-27 14:51:26 +0000
commitb1fcaf5f95107aebf2ec6152633460399f11808d (patch)
tree1838d93cce9d3d29b1c1695f8816b75b0c85d8cd /usr.sbin/nvram
parentae7f84a9a4c211d9285dd608ae190cd91aaa1d2a (diff)
downloadsrc-b1fcaf5f95107aebf2ec6152633460399f11808d.tar.gz
src-b1fcaf5f95107aebf2ec6152633460399f11808d.zip
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
Notes
Notes: svn path=/head/; revision=239733
Diffstat (limited to 'usr.sbin/nvram')
-rw-r--r--usr.sbin/nvram/nvram.c12
1 files changed, 8 insertions, 4 deletions
diff --git a/usr.sbin/nvram/nvram.c b/usr.sbin/nvram/nvram.c
index 9d56f9d537b1..a286ee3e60ea 100644
--- a/usr.sbin/nvram/nvram.c
+++ b/usr.sbin/nvram/nvram.c
@@ -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))