summaryrefslogtreecommitdiffstats
path: root/runtime
diff options
context:
space:
mode:
Diffstat (limited to 'runtime')
-rw-r--r--runtime/Makefile.am2
-rw-r--r--runtime/libgcry.c4
-rw-r--r--runtime/lmcry_gcry.c8
3 files changed, 10 insertions, 4 deletions
diff --git a/runtime/Makefile.am b/runtime/Makefile.am
index be68ce60..e1f0673c 100644
--- a/runtime/Makefile.am
+++ b/runtime/Makefile.am
@@ -184,7 +184,7 @@ if ENABLE_LIBGCRYPT
pkglib_LTLIBRARIES += lmcry_gcry.la
lmcry_gcry_la_SOURCES = lmcry_gcry.c lmcry_gcry.h libgcry.c libgcry.h
lmcry_gcry_la_CPPFLAGS = $(RSRT_CFLAGS) $(LIBGCRYPT_CFLAGS)
- lmcry_gcry_la_LDFLAGS = -module -avoid-version
+ lmcry_gcry_la_LDFLAGS = -module -avoid-version `libgcrypt-config --libs`
#lmcry_gcry_la_LIBADD = libgcry.la $(LIBGCRYPT_LIBS)
lmcry_gcry_la_LIBADD = $(LIBGCRYPT_LIBS)
endif
diff --git a/runtime/libgcry.c b/runtime/libgcry.c
index 5f1dbf58..c1ab3abf 100644
--- a/runtime/libgcry.c
+++ b/runtime/libgcry.c
@@ -108,8 +108,10 @@ rsgcrySetKey(gcryctx ctx, unsigned char *key, uint16_t keyLen)
uint16_t reqKeyLen = gcry_cipher_get_algo_keylen(GCRY_CIPHER);
int r;
- if(keyLen != reqKeyLen)
+ if(keyLen != reqKeyLen) {
r = reqKeyLen;
+ goto done;
+ }
ctx->keyLen = keyLen;
ctx->key = malloc(keyLen);
memcpy(ctx->key, key, keyLen);
diff --git a/runtime/lmcry_gcry.c b/runtime/lmcry_gcry.c
index ce0fef2f..31e648fc 100644
--- a/runtime/lmcry_gcry.c
+++ b/runtime/lmcry_gcry.c
@@ -92,6 +92,8 @@ SetCnfParam(void *pT, struct nvlst *lst)
uchar *cstr;
uchar *key = NULL;
struct cnfparamvals *pvals;
+ DEFiRet;
+
pvals = nvlstGetParams(lst, &pblk, NULL);
if(Debug) {
dbgprintf("param blk in lmcry_gcry:\n");
@@ -125,8 +127,9 @@ SetCnfParam(void *pT, struct nvlst *lst)
"config file is highly insecure - DO NOT USE FOR PRODUCTION");
r = rsgcrySetKey(pThis->ctx, key, strlen((char*)key));
if(r > 0) {
- errmsg.LogError(0, RS_RET_ERR, "Key length %d expected, but "
+ errmsg.LogError(0, RS_RET_INVALID_PARAMS, "Key length %d expected, but "
"key of length %d given", r, strlen((char*)key));
+ ABORT_FINALIZE(RS_RET_INVALID_PARAMS);
}
}
@@ -135,7 +138,8 @@ SetCnfParam(void *pT, struct nvlst *lst)
memset(key, 0, strlen((char*)key));
free(key);
}
- return RS_RET_OK;
+finalize_it:
+ RETiRet;
}