Skip to content

Commit 2feea53

Browse files
committed
Clean up KeyringGenerateNewKey()
Instead of returning NULL when we failed the generate a key we throw an error like all other places where random fails. Additionally we stop hardcoding 32 in the assertion.
1 parent 7f940c5 commit 2feea53

File tree

1 file changed

+6
-5
lines changed

1 file changed

+6
-5
lines changed

contrib/pg_tde/src/keyring/keyring_api.c

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010

1111
#include <assert.h>
1212
#include <openssl/rand.h>
13+
#include <openssl/err.h>
1314

1415
typedef struct RegisteredKeyProviderType
1516
{
@@ -127,15 +128,15 @@ KeyringGenerateNewKey(const char *key_name, unsigned key_len)
127128
{
128129
KeyInfo *key;
129130

130-
Assert(key_len <= 32);
131+
Assert(key_len <= sizeof(key->data));
131132
/* Struct will be saved to disk so keep clean */
132133
key = palloc0_object(KeyInfo);
133134
key->data.len = key_len;
134135
if (!RAND_bytes(key->data.data, key_len))
135-
{
136-
pfree(key);
137-
return NULL; /* openssl error */
138-
}
136+
ereport(ERROR,
137+
errcode(ERRCODE_INTERNAL_ERROR),
138+
errmsg("could not generate new principal key: %s",
139+
ERR_error_string(ERR_get_error(), NULL)));
139140
strlcpy(key->name, key_name, sizeof(key->name));
140141
return key;
141142
}

0 commit comments

Comments
 (0)