diff options
author | pjd <pjd@FreeBSD.org> | 2011-10-25 13:44:23 +0000 |
---|---|---|
committer | pjd <pjd@FreeBSD.org> | 2011-10-25 13:44:23 +0000 |
commit | c81944165865e672dfdc82f496f20a2896f64312 (patch) | |
tree | f4d5f7e2cb84f224fc3171e6083575fc4a8f32b0 /sys/geom | |
parent | 63e5ed957095fe6fdf121764efcefeaae39cc414 (diff) | |
download | FreeBSD-src-c81944165865e672dfdc82f496f20a2896f64312.zip FreeBSD-src-c81944165865e672dfdc82f496f20a2896f64312.tar.gz |
When decoding metadata, check magic string, so we know this is not GELI device
before we check its version. We don't want to report that some garbage is
unsupported version if this is not even GELI provider.
MFC after: 3 days
Diffstat (limited to 'sys/geom')
-rw-r--r-- | sys/geom/eli/g_eli.h | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/sys/geom/eli/g_eli.h b/sys/geom/eli/g_eli.h index ae43859..0f35cd6 100644 --- a/sys/geom/eli/g_eli.h +++ b/sys/geom/eli/g_eli.h @@ -294,6 +294,8 @@ eli_metadata_decode(const u_char *data, struct g_eli_metadata *md) int error; bcopy(data, md->md_magic, sizeof(md->md_magic)); + if (strcmp(md->md_magic, G_ELI_MAGIC) != 0) + return (EINVAL); md->md_version = le32dec(data + sizeof(md->md_magic)); switch (md->md_version) { case G_ELI_VERSION_00: |