bug fixes, for actually writing the full dump to the database. based

on a patch from Love <lha@stacken.kth.se>


git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@8356 ec53bebd-3082-4978-b11e-865c3cabbd6b
This commit is contained in:
Assar Westerlund
2000-06-08 00:37:14 +00:00
parent 1daa7e2d23
commit a6ff60aadc

View File

@@ -211,7 +211,7 @@ receive (krb5_context context,
ret = server_context->db->open(context,
server_context->db,
O_RDWR | O_CREAT, 0);
O_RDWR | O_CREAT, 0600);
if (ret)
krb5_err (context, 1, ret, "db->open");
@@ -224,7 +224,8 @@ receive (krb5_context context,
static void
receive_everything (krb5_context context, int *fd,
kadm5_server_context *server_context)
kadm5_server_context *server_context,
krb5_auth_context auth_context)
{
int ret;
krb5_data data;
@@ -233,18 +234,26 @@ receive_everything (krb5_context context, int *fd,
ret = server_context->db->open(context,
server_context->db,
O_RDWR | O_CREAT | O_TRUNC, 0);
O_RDWR | O_CREAT | O_TRUNC, 0600);
if (ret)
krb5_err (context, 1, ret, "db->open");
do {
krb5_data data;
krb5_data packet, data;
krb5_storage *sp;
ret = krb5_read_message (context, fd, &data);
ret = krb5_read_message (context, fd, &packet);
if (ret)
krb5_err (context, 1, ret, "krb5_read_message");
ret = krb5_rd_priv (context,
auth_context,
&packet,
&data,
NULL);
if (ret)
krb5_err (context, 1, ret, "krb5_rd_priv");
sp = krb5_storage_from_data (&data);
krb5_ret_int32 (sp, &opcode);
if (opcode == ONE_PRINC) {
@@ -257,9 +266,16 @@ receive_everything (krb5_context context, int *fd,
ret = hdb_value2entry (context, &fake_data, &entry);
if (ret)
krb5_err (context, 1, ret, "hdb_value2entry");
ret = server_context->db->store(server_context->context,
server_context->db,
0, &entry);
if (ret)
krb5_err (context, 1, ret, "hdb_store");
hdb_free_entry (context, &entry);
krb5_data_free (&data);
}
krb5_data_free (&packet);
} while (opcode == ONE_PRINC);
if (opcode != NOW_YOU_HAVE)
@@ -412,7 +428,8 @@ main(int argc, char **argv)
server_context->log_context.version);
break;
case TELL_YOU_EVERYTHING :
receive_everything (context, &master_fd, server_context);
receive_everything (context, &master_fd, server_context,
auth_context);
break;
case NOW_YOU_HAVE :
case I_HAVE :