make it slightly more working.
git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@20600 ec53bebd-3082-4978-b11e-865c3cabbd6b
This commit is contained in:
@@ -276,13 +276,18 @@ kadm5_log_replay_create (kadm5_server_context *context,
|
|||||||
memset(&ent, 0, sizeof(ent));
|
memset(&ent, 0, sizeof(ent));
|
||||||
|
|
||||||
ret = krb5_data_alloc (&data, len);
|
ret = krb5_data_alloc (&data, len);
|
||||||
if (ret)
|
if (ret) {
|
||||||
|
krb5_set_error_string(context->context, "out of memory");
|
||||||
return ret;
|
return ret;
|
||||||
|
}
|
||||||
krb5_storage_read (sp, data.data, len);
|
krb5_storage_read (sp, data.data, len);
|
||||||
ret = hdb_value2entry (context->context, &data, &ent.entry);
|
ret = hdb_value2entry (context->context, &data, &ent.entry);
|
||||||
krb5_data_free(&data);
|
krb5_data_free(&data);
|
||||||
if (ret)
|
if (ret) {
|
||||||
|
krb5_set_error_string(context->context,
|
||||||
|
"Unmarshaling hdb entry failed");
|
||||||
return ret;
|
return ret;
|
||||||
|
}
|
||||||
ret = context->db->hdb_store(context->context, context->db, 0, &ent);
|
ret = context->db->hdb_store(context->context, context->db, 0, &ent);
|
||||||
hdb_free_entry (context->context, &ent);
|
hdb_free_entry (context->context, &ent);
|
||||||
return ret;
|
return ret;
|
||||||
@@ -678,23 +683,20 @@ kadm5_log_replay_modify (kadm5_server_context *context,
|
|||||||
if ((mask & KADM5_TL_DATA) && log_ent.entry.extensions) {
|
if ((mask & KADM5_TL_DATA) && log_ent.entry.extensions) {
|
||||||
HDB_extensions *es = ent.entry.extensions;
|
HDB_extensions *es = ent.entry.extensions;
|
||||||
|
|
||||||
if (ent.entry.extensions == NULL) {
|
|
||||||
ent.entry.extensions = calloc(1, sizeof(*ent.entry.extensions));
|
ent.entry.extensions = calloc(1, sizeof(*ent.entry.extensions));
|
||||||
if (ent.entry.extensions == NULL)
|
if (ent.entry.extensions == NULL)
|
||||||
goto out;
|
goto out;
|
||||||
}
|
|
||||||
|
|
||||||
ret = copy_HDB_extensions(es, ent.entry.extensions);
|
ret = copy_HDB_extensions(log_ent.entry.extensions,
|
||||||
|
ent.entry.extensions);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
free(ent.entry.extensions);
|
free(ent.entry.extensions);
|
||||||
ent.entry.extensions = es;
|
ent.entry.extensions = es;
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
if (es) {
|
|
||||||
free_HDB_extensions(es);
|
free_HDB_extensions(es);
|
||||||
free(es);
|
free(es);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
ret = context->db->hdb_store(context->context, context->db,
|
ret = context->db->hdb_store(context->context, context->db,
|
||||||
HDB_F_REPLACE, &ent);
|
HDB_F_REPLACE, &ent);
|
||||||
out:
|
out:
|
||||||
|
Reference in New Issue
Block a user