Index: g_eli.h =================================================================== RCS file: /usr/repo/src/sys/geom/eli/g_eli.h,v retrieving revision 1.5 diff -u -p -r1.5 g_eli.h --- g_eli.h 1 Feb 2006 12:05:59 -0000 1.5 +++ g_eli.h 9 Feb 2006 17:30:57 -0000 @@ -183,15 +183,24 @@ eli_metadata_decode_v0(const u_char *dat { MD5_CTX ctx; const u_char *p; + uint16_t v16; + uint32_t v32; + uint64_t v64; p = data + sizeof(md->md_magic) + sizeof(md->md_version); - md->md_flags = le32dec(p); p += sizeof(md->md_flags); - md->md_algo = le16dec(p); p += sizeof(md->md_algo); - md->md_keylen = le16dec(p); p += sizeof(md->md_keylen); - md->md_provsize = le64dec(p); p += sizeof(md->md_provsize); - md->md_sectorsize = le32dec(p); p += sizeof(md->md_sectorsize); - md->md_keys = *p; p += sizeof(md->md_keys); - md->md_iterations = le32dec(p); p += sizeof(md->md_iterations); + bcopy(p, &v32, sizeof(v32)); + md->md_flags = le32dec(&v32); p += sizeof(md->md_flags); + bcopy(p, &v16, sizeof(v16)); + md->md_algo = le16dec(&v16); p += sizeof(md->md_algo); + bcopy(p, &v16, sizeof(v16)); + md->md_keylen = le16dec(&v16); p += sizeof(md->md_keylen); + bcopy(p, &v64, sizeof(v64)); + md->md_provsize = le64dec(&v64); p += sizeof(md->md_provsize); + bcopy(p, &v32, sizeof(v32)); + md->md_sectorsize = le32dec(&v32); p += sizeof(md->md_sectorsize); + md->md_keys = *p; p += sizeof(md->md_keys); + bcopy(p, &v32, sizeof(v32)); + md->md_iterations = le32dec(&v32); p += sizeof(md->md_iterations); bcopy(p, md->md_salt, sizeof(md->md_salt)); p += sizeof(md->md_salt); bcopy(p, md->md_mkeys, sizeof(md->md_mkeys)); p += sizeof(md->md_mkeys); MD5Init(&ctx);