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