diff options
author | Stef Walter <stefw@collabora.co.uk> | 2011-10-04 18:15:37 +0200 |
---|---|---|
committer | Stef Walter <stefw@collabora.co.uk> | 2011-10-04 18:15:37 +0200 |
commit | 3ed15e88675ef6055706cabe805a8ddf0f782e22 (patch) | |
tree | 98a920e5925cd2bf2dc00ef62ff8890435f36181 /pkcs11/xdg-store/gkm-xdg-trust.c | |
parent | e97c283d65e2ba0bcd6676839b361eedb14c52dc (diff) | |
download | gnome-keyring-3ed15e88675ef6055706cabe805a8ddf0f782e22.tar.gz |
egg: Fix parsing of unsigned integers in DER
* When the unsigned integer had a high bit set, we would store/parse
it incorrectly. We have to force these numbers to be unsigned so
we prefix/strip an extra zero byte on the front.
* Also make accessing raw and usg numbers in DER not have to copy
the value, since these are often sensitive.
Diffstat (limited to 'pkcs11/xdg-store/gkm-xdg-trust.c')
-rw-r--r-- | pkcs11/xdg-store/gkm-xdg-trust.c | 5 |
1 files changed, 2 insertions, 3 deletions
diff --git a/pkcs11/xdg-store/gkm-xdg-trust.c b/pkcs11/xdg-store/gkm-xdg-trust.c index 0ba9bf76..f9a4f596 100644 --- a/pkcs11/xdg-store/gkm-xdg-trust.c +++ b/pkcs11/xdg-store/gkm-xdg-trust.c @@ -127,7 +127,7 @@ static CK_RV trust_get_integer (GkmXdgTrust *self, const gchar *part, CK_ATTRIBUTE_PTR attr) { GNode *node; - gpointer integer; + gconstpointer integer; gsize n_integer; CK_RV rv; @@ -140,11 +140,10 @@ trust_get_integer (GkmXdgTrust *self, const gchar *part, CK_ATTRIBUTE_PTR attr) if (!egg_asn1x_have (node)) return CKR_ATTRIBUTE_TYPE_INVALID; - integer = egg_asn1x_get_integer_as_raw (node, NULL, &n_integer); + integer = egg_asn1x_get_integer_as_raw (node, &n_integer); g_return_val_if_fail (integer, CKR_GENERAL_ERROR); rv = gkm_attribute_set_data (attr, integer, n_integer); - g_free (integer); return rv; } |