summaryrefslogtreecommitdiffstats
path: root/lib/libaccess/nsumgmt.cpp
diff options
context:
space:
mode:
authorRob Crittenden <rcritten@redhat.com>2005-03-07 14:49:18 +0000
committerRob Crittenden <rcritten@redhat.com>2005-03-07 14:49:18 +0000
commitab37199479f849ecae189e1a2314da49cc906187 (patch)
tree35e02b41332f187d083319cf486262c4df4d75e3 /lib/libaccess/nsumgmt.cpp
parentea64bb776b54e43e117d516e7e0e818d48287370 (diff)
downloadds-ab37199479f849ecae189e1a2314da49cc906187.tar.gz
ds-ab37199479f849ecae189e1a2314da49cc906187.tar.xz
ds-ab37199479f849ecae189e1a2314da49cc906187.zip
149510
Remove files that aren't needed.
Diffstat (limited to 'lib/libaccess/nsumgmt.cpp')
-rw-r--r--lib/libaccess/nsumgmt.cpp456
1 files changed, 0 insertions, 456 deletions
diff --git a/lib/libaccess/nsumgmt.cpp b/lib/libaccess/nsumgmt.cpp
deleted file mode 100644
index 06987483..00000000
--- a/lib/libaccess/nsumgmt.cpp
+++ /dev/null
@@ -1,456 +0,0 @@
-/** BEGIN COPYRIGHT BLOCK
- * Copyright (C) 2001 Sun Microsystems, Inc. Used by permission.
- * Copyright (C) 2005 Red Hat, Inc.
- * All rights reserved.
- * END COPYRIGHT BLOCK **/
-
-/*
- * Description (nsumgmt.c)
- *
- * This module contains routines for managing information in a
- * Netscape user database. Information for a particular user
- * is modified by retrieving the current information in the form
- * of a user object (UserObj_t), calling functions in this module,
- * to modify the user object, and then calling userStore() to
- * write the information in the user object back to the database.
- */
-
-#include "base/systems.h"
-#include "netsite.h"
-#include "assert.h"
-#include "libaccess/nsdbmgmt.h"
-#define __PRIVATE_NSUSER
-#include "libaccess/nsumgmt.h"
-
-/*
- * Description (userAddGroup)
- *
- * This function adds a group id to the list of group ids associated
- * with a user object.
- *
- * Arguments:
- *
- * uoptr - user object pointer
- * gid - group id to be added
- *
- * Returns:
- *
- * Returns zero if the group id is already present in the group id list.
- * Returns one if the group id was added successfully.
- * Returns a negative value if an error occurs.
- */
-
-int userAddGroup(UserObj_t * uoptr, USI_t gid)
-{
- int rv;
-
- rv = usiInsert(&uoptr->uo_groups, gid);
-
- if (rv > 0) {
-
- uoptr->uo_flags |= UOF_MODIFIED;
- }
-
- return rv;
-}
-
-/*
- * Description (userCreate)
- *
- * This function creates a user object, using information about
- * the user provided by the caller. The strings passed for the
- * user account name, password, and real user name may be on the
- * stack. The user id is set to zero, but the user object is
- * marked as being new. A user id will be assigned when
- * userStore() is called to add the user to a user database.
- *
- * Arguments:
- *
- * name - pointer to user account name string
- * pwd - pointer to (encrypted) password string
- * rname - real user name (gecos string)
- *
- * Returns:
- *
- * A pointer to a dynamically allocated UserObj_t structure is
- * returned.
- */
-
-NSAPI_PUBLIC UserObj_t * userCreate(NTS_t name, NTS_t pwd, NTS_t rname)
-{
- UserObj_t * uoptr; /* user object pointer */
-
- uoptr = (UserObj_t *)MALLOC(sizeof(UserObj_t));
- if (uoptr) {
- uoptr->uo_name = (NTS_t)STRDUP((char *)name);
- uoptr->uo_pwd = (pwd) ? (NTS_t)STRDUP((char *)pwd) : 0;
- uoptr->uo_uid = 0;
- uoptr->uo_flags = (UOF_MODIFIED | UOF_NEW);
- uoptr->uo_rname = (rname) ? (NTS_t)STRDUP((char *)rname) : 0;
- UILINIT(&uoptr->uo_groups);
- }
-
- return uoptr;
-}
-
-/*
- * Description (userDeleteGroup)
- *
- * This function removes a specified group id from a user object's
- * list of groups.
- *
- * Arguments:
- *
- * uoptr - pointer to user object
- * gid - group id to remove
- *
- * Returns:
- *
- * The return value is zero if the specified group id was not present
- * in the user object, or one if the group was successfully removed.
- */
-
-int userDeleteGroup(UserObj_t * uoptr, USI_t gid)
-{
- int rv; /* return value */
-
- rv = usiRemove(&uoptr->uo_groups, gid);
- if (rv > 0) {
- uoptr->uo_flags |= UOF_MODIFIED;
- }
-
- return rv;
-}
-
-/*
- * Description (userEncode)
- *
- * This function encodes a user object into a user DB record.
- *
- * Arguments:
- *
- * uoptr - pointer to user object
- * ureclen - pointer to returned record length
- * urecptr - pointer to returned record pointer
- *
- * Returns:
- *
- * The function return value is zero if successful. The length
- * and location of the created attribute record are returned
- * through 'ureclen' and 'urecptr'. A non-zero function value
- * is returned if there's an error.
- */
-
-int userEncode(UserObj_t * uoptr, int * ureclen, ATR_t * urecptr)
-{
- int reclen; /* length of DB record */
- ATR_t rptr; /* DB record pointer */
- ATR_t rstart = 0; /* pointer to beginning of DB record */
- ATR_t glptr; /* saved pointer to UAT_GROUPS length */
- ATR_t gptr; /* saved pointer to after length at glptr */
- int pwdlen; /* password encoding length */
- int uidlen; /* uid encoding length */
- int fllen; /* account flags encoding length */
- USI_t rnlen; /* real name encoding length */
- USI_t nglen; /* group count encoding length */
- USI_t gcnt; /* number of group ids */
- USI_t * gids; /* pointer to array of group ids */
- int i; /* group id index */
- int rv = -1;
-
- /*
- * First we need to figure out how long the generated record will be.
- * This doesn't have to be exact, but it must not be smaller than the
- * actual record size.
- */
-
- /* UAT_PASSWORD attribute: tag, length, NTS */
- pwdlen = NTSLENGTH(uoptr->uo_pwd);
- reclen = 1 + 1 + pwdlen;
- if (pwdlen > 127) goto punt;
-
- /* UAT_UID attribute: tag, length, USI */
- uidlen = USILENGTH(uoptr->uo_uid);
- reclen += (1 + 1 + uidlen);
-
- /* UAT_ACCFLAGS attribute: tag, length, USI */
- fllen = USILENGTH(uoptr->uo_flags & UOF_DBFLAGS);
- reclen += (1 + 1 + fllen);
-
- /* UAT_REALNAME attribute: tag, length, NTS */
- rnlen = NTSLENGTH(uoptr->uo_rname);
- reclen += (1 + USILENGTH(rnlen) + rnlen);
-
- /* UAT_GROUPS attribute: tag, length, USI(count), USI(gid)... */
- gcnt = UILCOUNT(&uoptr->uo_groups);
- nglen = USILENGTH(gcnt);
- reclen += (1 + USIALLOC() + nglen + (5 * gcnt));
-
- /* Allocate the attribute record buffer */
- rptr = (ATR_t)MALLOC(reclen);
- if (rptr) {
-
- /* Save pointer to start of record */
- rstart = rptr;
-
- /* Encode UAT_PASSWORD attribute */
- *rptr++ = UAT_PASSWORD;
- *rptr++ = pwdlen;
- rptr = NTSENCODE(rptr, uoptr->uo_pwd);
-
- /* Encode UAT_UID attribute */
- *rptr++ = UAT_UID;
- *rptr++ = uidlen;
- rptr = USIENCODE(rptr, uoptr->uo_uid);
-
- /* Encode UAT_ACCFLAGS attribute */
- *rptr++ = UAT_ACCFLAGS;
- *rptr++ = fllen;
- rptr = USIENCODE(rptr, (uoptr->uo_flags & UOF_DBFLAGS));
-
- /* Encode UAT_REALNAME attribute */
- *rptr++ = UAT_REALNAME;
- rptr = USIENCODE(rptr, rnlen);
- rptr = NTSENCODE(rptr, uoptr->uo_rname);
-
- /* Encode UAT_GROUPS attribute */
- *rptr++ = UAT_GROUPS;
-
- /*
- * Save a pointer to the attribute encoding length, and reserve
- * space for the maximum encoding size of a USI_t value.
- */
- glptr = rptr;
- rptr += USIALLOC();
- gptr = rptr;
-
- /* Encode number of groups */
- rptr = USIENCODE(rptr, gcnt);
-
- /* Generate group ids encodings */
- gids = UILLIST(&uoptr->uo_groups);
- for (i = 0; i < gcnt; ++i) {
- rptr = USIENCODE(rptr, gids[i]);
- }
-
- /* Now fix up the UAT_GROUPS attribute encoding length */
- glptr = USIINSERT(glptr, (USI_t)(rptr - gptr));
-
- /* Return record length and location if requested */
- if (ureclen) *ureclen = rptr - rstart;
- if (urecptr) *urecptr = rstart;
-
- /* Indicate success */
- rv = 0;
- }
-
- punt:
- return rv;
-}
-
-/*
- * Description (userRemove)
- *
- * This function is called to remove a user from a specified user
- * database. Both the primary DB file and the id-to-name DB file
- * are updated.
- *
- * Arguments:
- *
- * errp - error frame list pointer (may be null)
- * userdb - handle for user DB access
- * flags - (unused - must be zero)
- * name - pointer to user account name
- *
- * Returns:
- *
- * If successful, the return value is zero. Otherwise it is a
- * non-zero error code.
- */
-
-NSAPI_PUBLIC int userRemove(NSErr_t * errp, void * userdb, int flags, NTS_t name)
-{
- UserObj_t * uoptr; /* user object pointer */
- int rv;
- int rv2;
-
- /* First retrieve the user record */
- uoptr = userFindByName(errp, userdb, name);
- if (!uoptr) {
- /* Error - specified user not found */
- return NSAERRNAME;
- }
-
- /* Free the user id value, if any */
- rv = 0;
- if (uoptr->uo_uid != 0) {
- rv = ndbFreeId(errp, userdb, 0, (char *)name, uoptr->uo_uid);
- }
-
- rv2 = ndbDeleteName(errp, userdb, 0, 0, (char *)name);
-
- return (rv) ? rv : rv2;
-}
-
-/*
- * Description (userRename)
- *
- * This function is called to change the account name associated
- * with an existing user. The caller provides a pointer to a
- * user object for the existing user (with the current user account
- * name referenced by uo_name), and the new account name for this
- * user. A check is made to ensure the uniqueness of the new name
- * in the specified user database. The account name in the user
- * object is modified. The user database is not modified until
- * userStore() is called.
- *
- * Arguments:
- *
- * errp - error frame list pointer (may be null)
- * userdb - handle for user DB access
- * uoptr - user object pointer
- * newname - pointer to new account name string
- *
- * Returns:
- *
- * If successful, the return value is zero. Otherwise it is a
- * non-zero error code. The user object remains intact in either
- * case.
- */
-
-NSAPI_PUBLIC int userRename(NSErr_t * errp, void * userdb, UserObj_t * uoptr, NTS_t newname)
-{
- int reclen; /* user record length */
- ATR_t recptr = 0; /* user record pointer */
- char * oldname; /* old user account name */
- int eid; /* error id code */
- int rv; /* result value */
-
- /* Save the current account name and replace it with the new one */
- oldname = (char *)uoptr->uo_name;
- uoptr->uo_name = (unsigned char *) STRDUP((char *)newname);
-
- if ((oldname != 0) && !(uoptr->uo_flags & UOF_NEW)) {
-
- /* Convert the information in the user object to a DB record */
- rv = userEncode(uoptr, &reclen, &recptr);
- if (rv) goto err_nomem;
-
- /*
- * Store the record in the database
- * under the new user account name.
- */
- rv = ndbStoreName(errp, userdb, NDBF_NEWNAME,
- 0, (char *)uoptr->uo_name, reclen, (char *)recptr);
- if (rv) goto punt;
-
- /* Change the mapping of the user id to the new name */
- rv = ndbRenameId(errp, userdb, 0, (char *)uoptr->uo_name, uoptr->uo_uid);
- if (rv) goto punt;
-
- /* Delete the user record with the old account name */
- rv = ndbDeleteName(errp, userdb, 0, 0, oldname);
- if (rv) goto punt;
- }
- else {
- /* Set flags in user object for userStore() */
- uoptr->uo_flags |= UOF_MODIFIED;
- }
-
- punt:
- if (recptr) {
- FREE(recptr);
- }
- if (oldname) {
- FREE(oldname);
- }
- return rv;
-
- err_nomem:
- eid = NSAUERR1000;
- rv = NSAERRNOMEM;
- nserrGenerate(errp, rv, eid, NSAuth_Program, 0);
- goto punt;
-}
-
-/*
- * Description (userStore)
- *
- * This function is called to store a user object in the database.
- * If the object was created by userCreate(), it is assumed to be
- * a new user account, the user account name must not match any
- * existing user account names in the database, and a uid is
- * assigned before adding the user to the database. If the object
- * was created by userFindByName(), the information in the user
- * object will replace the existing database entry for the
- * indicated user account name.
- *
- * Arguments:
- *
- * errp - error frame list pointer (may be null)
- * userdb - handle for user DB access
- * flags - (unused - must be zero)
- * uoptr - user object pointer
- *
- * Returns:
- *
- * If successful, the return value is zero. Otherwise it is a
- * non-zero error code. The user object remains intact in either
- * case.
- */
-
-NSAPI_PUBLIC int userStore(NSErr_t * errp, void * userdb, int flags, UserObj_t * uoptr)
-{
- ATR_t recptr = 0;
- USI_t uid;
- int reclen = 0;
- int stflags = 0;
- int eid;
- int rv;
-
- /* If this is a new user, allocate a uid value */
- if (uoptr->uo_flags & UOF_NEW) {
- /*
- * Yes, allocate a user id and add a user id to user
- * account name mapping to the id-to-name DB file.
- */
- uid = 0;
- rv = ndbAllocId(errp, userdb, 0, (char *)uoptr->uo_name, &uid);
- if (rv) goto punt;
-
- uoptr->uo_uid = uid;
-
- /* Let the database manager know that this is a new entry */
- stflags = NDBF_NEWNAME;
- }
-
- /* Convert the information in the user object to a DB record */
- rv = userEncode(uoptr, &reclen, &recptr);
- if (rv) goto err_nomem;
-
- /* Store the record in the database under the user account name. */
- rv = ndbStoreName(errp, userdb, stflags,
- 0, (char *)uoptr->uo_name, reclen, (char *)recptr);
- if (rv) goto punt;
-
- FREE(recptr);
- recptr = 0;
-
- uoptr->uo_flags &= ~(UOF_NEW | UOF_MODIFIED);
- return 0;
-
- err_nomem:
- eid = NSAUERR1100;
- rv = NSAERRNOMEM;
- nserrGenerate(errp, rv, eid, NSAuth_Program, 0);
-
- punt:
- if (recptr) {
- FREE(recptr);
- }
- if ((uoptr->uo_flags & UOF_NEW) && (uid != 0)) {
- /* Free the user id value if we failed after allocating it */
- ndbFreeId(errp, userdb, 0, (char *)uoptr->uo_name, uid);
- }
- return rv;
-}