fix iv cache

This commit is contained in:
Max Lv
2015-09-02 19:41:41 +08:00
parent 5a52a97bd4
commit e686d6594f
2 changed files with 19 additions and 11 deletions
+17 -9
View File
@@ -87,8 +87,10 @@ int cache_delete(struct cache *cache, int keep_data)
} else {
HASH_ITER(hh, cache->entries, entry, tmp){
HASH_DEL(cache->entries, entry);
if (cache->free_cb) {
cache->free_cb(entry->data);
if (entry->data != NULL) {
if (cache->free_cb) {
cache->free_cb(entry->data);
}
}
free(entry->key);
free(entry);
@@ -125,8 +127,12 @@ int cache_remove(struct cache *cache, char *key, size_t key_len)
if (tmp) {
HASH_DEL(cache->entries, tmp);
if (cache->free_cb) {
cache->free_cb(tmp->data);
if (tmp->data != NULL) {
if (cache->free_cb) {
cache->free_cb(tmp->data);
} else {
free(tmp->data);
}
}
free(tmp->key);
free(tmp);
@@ -217,7 +223,7 @@ int cache_insert(struct cache *cache, char *key, size_t key_len, void *data)
struct cache_entry *entry = NULL;
struct cache_entry *tmp_entry = NULL;
if (!cache || !data) {
if (!cache) {
return EINVAL;
}
@@ -233,10 +239,12 @@ int cache_insert(struct cache *cache, char *key, size_t key_len, void *data)
if (HASH_COUNT(cache->entries) >= cache->max_entries) {
HASH_ITER(hh, cache->entries, entry, tmp_entry){
HASH_DELETE(hh, cache->entries, entry);
if (cache->free_cb) {
cache->free_cb(entry->data);
} else {
free(entry->data);
if (entry->data != NULL) {
if (cache->free_cb) {
cache->free_cb(entry->data);
} else {
free(entry->data);
}
}
free(entry->key);
free(entry);
+2 -2
View File
@@ -1267,11 +1267,11 @@ char * ss_decrypt(int buf_size, char *ciphertext, ssize_t *len,
ctx->counter = 0;
ctx->init = 1;
if (cache_key_exist(iv_cache, (char *)iv, MAX_IV_LENGTH)) {
if (cache_key_exist(iv_cache, (char *)iv, iv_len)) {
free(ciphertext);
return NULL;
} else {
cache_insert(iv_cache, (char *)iv, MAX_IV_LENGTH, NULL);
cache_insert(iv_cache, (char *)iv, iv_len, NULL);
}
}