Skip to content

Commit c9ec48d

Browse files
committed
add function to return current registered provider
1 parent 51079a8 commit c9ec48d

File tree

2 files changed

+13
-1
lines changed

2 files changed

+13
-1
lines changed

src/crypto_impl.c

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,13 +81,23 @@ struct codec_ctx {
8181
};
8282

8383
int sqlcipher_register_provider(sqlcipher_provider *p) {
84-
if(default_provider != NULL) {
84+
if(default_provider != NULL && default_provider != p) {
85+
/* only free the current registerd provider if it has been initialized
86+
and it isn't a pointer to the same provider passed to the function
87+
(i.e. protect against a caller calling register twice for the same provider) */
8588
sqlcipher_free(default_provider, sizeof(sqlcipher_provider));
8689
}
8790
default_provider = p;
8891
return SQLITE_OK;
8992
}
9093

94+
/* return a pointer to the currently registered provider. This will
95+
allow an application to fetch the current registered provider and
96+
make minor changes to it */
97+
sqlcipher_provider* sqlcipher_get_provider() {
98+
return default_provider;
99+
}
100+
91101
void sqlcipher_activate() {
92102
sqlcipher_provider *p;
93103
sqlite3_mutex_enter(sqlite3MutexAlloc(SQLITE_MUTEX_STATIC_MASTER));

src/sqlcipher.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,9 @@ int sqlcipher_ismemset(const void *v, unsigned char value, int len);
6565
int sqlcipher_memcmp(const void *v0, const void *v1, int len);
6666
void sqlcipher_free(void *, int);
6767

68+
/* provider interfaces */
6869
int sqlcipher_register_provider(sqlcipher_provider *p);
70+
sqlcipher_provider* sqlcipher_get_provider();
6971

7072
#endif
7173
#endif

0 commit comments

Comments
 (0)