|
@@ -437,6 +437,11 @@ static int __key_instantiate_and_link(struct key *key,
|
|
/* disable the authorisation key */
|
|
/* disable the authorisation key */
|
|
if (authkey)
|
|
if (authkey)
|
|
key_revoke(authkey);
|
|
key_revoke(authkey);
|
|
|
|
+
|
|
|
|
+ if (prep->expiry != TIME_T_MAX) {
|
|
|
|
+ key->expiry = prep->expiry;
|
|
|
|
+ key_schedule_gc(prep->expiry + key_gc_delay);
|
|
|
|
+ }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
@@ -479,6 +484,7 @@ int key_instantiate_and_link(struct key *key,
|
|
prep.data = data;
|
|
prep.data = data;
|
|
prep.datalen = datalen;
|
|
prep.datalen = datalen;
|
|
prep.quotalen = key->type->def_datalen;
|
|
prep.quotalen = key->type->def_datalen;
|
|
|
|
+ prep.expiry = TIME_T_MAX;
|
|
if (key->type->preparse) {
|
|
if (key->type->preparse) {
|
|
ret = key->type->preparse(&prep);
|
|
ret = key->type->preparse(&prep);
|
|
if (ret < 0)
|
|
if (ret < 0)
|
|
@@ -811,6 +817,7 @@ key_ref_t key_create_or_update(key_ref_t keyring_ref,
|
|
prep.datalen = plen;
|
|
prep.datalen = plen;
|
|
prep.quotalen = index_key.type->def_datalen;
|
|
prep.quotalen = index_key.type->def_datalen;
|
|
prep.trusted = flags & KEY_ALLOC_TRUSTED;
|
|
prep.trusted = flags & KEY_ALLOC_TRUSTED;
|
|
|
|
+ prep.expiry = TIME_T_MAX;
|
|
if (index_key.type->preparse) {
|
|
if (index_key.type->preparse) {
|
|
ret = index_key.type->preparse(&prep);
|
|
ret = index_key.type->preparse(&prep);
|
|
if (ret < 0) {
|
|
if (ret < 0) {
|
|
@@ -941,6 +948,7 @@ int key_update(key_ref_t key_ref, const void *payload, size_t plen)
|
|
prep.data = payload;
|
|
prep.data = payload;
|
|
prep.datalen = plen;
|
|
prep.datalen = plen;
|
|
prep.quotalen = key->type->def_datalen;
|
|
prep.quotalen = key->type->def_datalen;
|
|
|
|
+ prep.expiry = TIME_T_MAX;
|
|
if (key->type->preparse) {
|
|
if (key->type->preparse) {
|
|
ret = key->type->preparse(&prep);
|
|
ret = key->type->preparse(&prep);
|
|
if (ret < 0)
|
|
if (ret < 0)
|