summaryrefslogtreecommitdiff
path: root/pkcs11/xdg-store/gkm-xdg-trust.c
diff options
context:
space:
mode:
authorStef Walter <stefw@collabora.co.uk>2011-10-04 18:15:37 +0200
committerStef Walter <stefw@collabora.co.uk>2011-10-04 18:15:37 +0200
commit3ed15e88675ef6055706cabe805a8ddf0f782e22 (patch)
tree98a920e5925cd2bf2dc00ef62ff8890435f36181 /pkcs11/xdg-store/gkm-xdg-trust.c
parente97c283d65e2ba0bcd6676839b361eedb14c52dc (diff)
downloadgnome-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.c5
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;
}