summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaiki Ueno <dueno@src.gnome.org>2019-09-16 16:34:30 +0200
committerDaiki Ueno <ueno@gnu.org>2019-09-24 04:53:02 +0000
commitbf04c45535dc9fae80d3beead16fcd760989b44e (patch)
tree5dab00288f4e58057a5e18382974369f17f15dbf
parent10a3663d10a9326cde76f7cfd7cb57efbd7e5e9c (diff)
downloadgnome-keyring-bf04c45535dc9fae80d3beead16fcd760989b44e.tar.gz
pkcs11: Fix load of misaligned address
-rw-r--r--pkcs11/gkm/gkm-attributes.c14
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;
}