server_init.c revision 3441f6a1af86b9b2f883f3323bf02c9dd0f7a94d
/*
* Copyright 2007 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
#pragma ident "%Z%%M% %I% %E% SMI"
/*
* WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING
*
* Openvision retains the copyright to derivative works of
* this source code. Do *NOT* create a derivative of this
* source code before consulting with your legal department.
* Do *NOT* integrate *ANY* of this source code into another
* product before consulting with your legal department.
*
* For further information, read the top-level Openvision
* copyright which is contained in the top-level MIT Kerberos
* copyright.
*
* WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING
*
*/
/*
* Copyright 1993 OpenVision Technologies, Inc., All Rights Reserved.
*
* $Id: server_init.c,v 1.8 2002/10/15 15:40:49 epeisach Exp $
*/
#if !defined(lint) && !defined(__CODECENTER__)
static char *rcsid = "$Header: /cvs/krbdev/krb5/src/lib/kadm5/srv/server_init.c,v 1.8 2002/10/15 15:40:49 epeisach Exp $";
#endif
#include <stdio.h>
#include <stdlib.h>
#include <com_err.h>
#include <krb5.h>
#include "server_internal.h"
/*
* Function check_handle
*
* Purpose: Check a server handle and return a com_err code if it is
* invalid or 0 if it is valid.
*
* Arguments:
*
* handle The server handle.
*/
static int check_handle(void *handle)
{
return 0;
}
char *service_name,
void **server_handle)
{
}
char *service_name,
void **server_handle)
{
/*
* A program calling init_with_creds *never* expects to prompt the
* user. Therefore, always pass a dummy password in case this is
* KADM5_API_VERSION_1. If this is KADM5_API_VERSION_2 and
* MKEY_FROM_KBD is non-zero, return an error.
*/
return KADM5_BAD_SERVER_PARAMS;
}
char *service_name,
void **server_handle)
{
/*
* A program calling init_with_skey *never* expects to prompt the
* user. Therefore, always pass a dummy password in case this is
* KADM5_API_VERSION_1. If this is KADM5_API_VERSION_2 and
* MKEY_FROM_KBD is non-zero, return an error.
*/
return KADM5_BAD_SERVER_PARAMS;
}
char *service_name,
void **server_handle)
{
int ret;
if (! server_handle)
return EINVAL;
if (! client_name)
return EINVAL;
return ENOMEM;
if (ret) {
return(ret);
}
/*
* Verify the version numbers before proceeding; we can't use
* CHECK_HANDLE because not all fields are set yet.
*/
/*
* Acquire relevant profile entries. In version 2, merge values
* in params_in with values from profile, based on
* params_in->mask.
*
* In version 1, we've given a realm (which may be NULL) instead
* of params_in. So use that realm, make params_in contain an
* empty mask, and behave like version 2.
*/
if (api_version == KADM5_API_VERSION_1) {
if (params_in)
}
#define ILLEGAL_PARAMS (KADM5_CONFIG_ADMIN_SERVER)
return KADM5_BAD_SERVER_PARAMS;
}
if (ret) {
return(ret);
}
return KADM5_MISSING_CONF_PARAMS;
}
/*
* Set the db_name based on configuration before calling
* krb5_db_init, so it will get used.
*/
if (ret) {
return(ret);
}
if (ret) {
return(ret);
}
&handle->current_caller))) {
return ret;
}
return ENOMEM;
}
/* can't check the handle until current_caller is set */
if (ret) {
return ret;
}
/*
* The KADM5_API_VERSION_1 spec said "If pass (or keytab) is NULL
* or an empty string, reads the master password from [the stash
* file]. Otherwise, the non-NULL password is ignored and the
* user is prompted for it via the tty." However, the code was
* implemented the other way: when a non-NULL password was
* provided, the stash file was used. This is somewhat more
* sensible, as then a local or remote client that provides a
* password does not prompt the user. This code maintains the
* previous actual behavior, and not the old spec behavior,
* because that is how the unit tests are written.
*
* In KADM5_API_VERSION_2, this decision is controlled by
* params.
*
* kdb_init_master's third argument is "from_keyboard".
*/
/*
* Solaris Kerberos: Setting to an unknown enc type will make the function
* read the encryption type in the stash file instead of assumming that it
* is the default type.
*/
));
if (ret) {
return ret;
}
/*
* Solaris Kerberos: We used the enc type that was discovered in the stash
* file to associate with the other magic principals in the database.
*/
if (ret) {
return ret;
}
if (ret) {
return ret;
}
if (ret) {
return ret;
}
*server_handle = (void *) handle;
return KADM5_OK;
}
{
destroy_dict();
handle->magic_number = 0;
return KADM5_OK;
}
{
if (ret)
return ret;
if (ret)
return ret;
return KADM5_OK;
}
{
if (ret)
return ret;
if (ret)
return ret;
return KADM5_OK;
}
{
/*
* Set the db_name based on configuration before calling
* krb5_db_init, so it will get used.
*/
(void) kadm5_destroy(server_handle);
return ret;
}
return KADM5_OK;
}
int _kadm5_check_handle(void *handle)
{
return 0;
}
kadm5_init_iprop(void *handle)
{
FKCOMMAND)) != 0)
return (retval);
}
return (0);
}