ipsec-tools: switch to multi-user keystore.
diff --git a/main.c b/main.c
index 7947984..75e09f8 100644
--- a/main.c
+++ b/main.c
@@ -266,12 +266,10 @@
{
vchar_t *p = NULL;
#ifdef ANDROID_CHANGES
- char *value = keystore_get(key, &size);
- if (value) {
- if ((p = vmalloc(size)) != NULL) {
- memcpy(p->v, value, p->l);
- }
- free(value);
+ char value[KEYSTORE_MESSAGE_SIZE];
+ int length = keystore_get(key, value);
+ if (length != -1 && (p = vmalloc(length)) != NULL) {
+ memcpy(p->v, value, length);
}
#else
if (key && (p = vmalloc(size)) != NULL) {
diff --git a/src/racoon/crypto_openssl.c b/src/racoon/crypto_openssl.c
index 0ec53cf..77d9ee9 100644
--- a/src/racoon/crypto_openssl.c
+++ b/src/racoon/crypto_openssl.c
@@ -440,16 +440,10 @@
static BIO *BIO_from_keystore(char *key)
{
BIO *bio = NULL;
- char *value;
- int size;
-
- value = keystore_get(key, &size);
- if (value) {
- bio = BIO_new(BIO_s_mem());
- if (bio) {
- BIO_write(bio, value, size);
- }
- free(value);
+ char value[KEYSTORE_MESSAGE_SIZE];
+ int length = keystore_get(key, value);
+ if (length != -1 && (bio = BIO_new(BIO_s_mem())) != NULL) {
+ BIO_write(bio, value, length);
}
return bio;
}