diff options
author | Daiki Ueno <dueno@src.gnome.org> | 2019-09-16 16:34:30 +0200 |
---|---|---|
committer | Daiki Ueno <ueno@gnu.org> | 2019-09-24 04:53:02 +0000 |
commit | bf04c45535dc9fae80d3beead16fcd760989b44e (patch) | |
tree | 5dab00288f4e58057a5e18382974369f17f15dbf | |
parent | 10a3663d10a9326cde76f7cfd7cb57efbd7e5e9c (diff) | |
download | gnome-keyring-bf04c45535dc9fae80d3beead16fcd760989b44e.tar.gz |
pkcs11: Fix load of misaligned address
-rw-r--r-- | pkcs11/gkm/gkm-attributes.c | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/pkcs11/gkm/gkm-attributes.c b/pkcs11/gkm/gkm-attributes.c index fb185bc0..dfdd08f3 100644 --- a/pkcs11/gkm/gkm-attributes.c +++ b/pkcs11/gkm/gkm-attributes.c @@ -518,8 +518,11 @@ gkm_attributes_find_boolean (CK_ATTRIBUTE_PTR attrs, CK_ULONG n_attrs, CK_ATTRIB if (attr->ulValueLen != sizeof (CK_BBOOL)) return FALSE; - if (value != NULL) - *value = *((CK_BBOOL*)attr->pValue) == CK_TRUE ? TRUE : FALSE; + if (value != NULL) { + CK_BBOOL bbool; + memcpy (&bbool, attr->pValue, sizeof (CK_BBOOL)); + *value = bbool == CK_TRUE ? TRUE : FALSE; + } return TRUE; } @@ -538,8 +541,11 @@ gkm_attributes_find_ulong (CK_ATTRIBUTE_PTR attrs, CK_ULONG n_attrs, CK_ATTRIBUT if (attr->ulValueLen != sizeof (CK_ULONG)) return FALSE; - if (value != NULL) - *value = *((CK_ULONG*)attr->pValue); + if (value != NULL) { + CK_ULONG ulong; + memcpy (&ulong, attr->pValue, sizeof (CK_ULONG)); + *value = ulong; + } return TRUE; } |