diff options
author | Greg Hudson <ghudson@mit.edu> | 2011-04-13 15:15:56 +0000 |
---|---|---|
committer | Greg Hudson <ghudson@mit.edu> | 2011-04-13 15:15:56 +0000 |
commit | b0031448502561da31fb8c2543c8b01d7df9a872 (patch) | |
tree | 88a4a65ca013f8e6ef7b2fc2f122b0b7b00c115b /src/lib/gssapi/generic/util_validate.c | |
parent | fb67497ceeedf9a398cd670440f699e35b3baa4b (diff) | |
download | krb5-b0031448502561da31fb8c2543c8b01d7df9a872.tar.gz krb5-b0031448502561da31fb8c2543c8b01d7df9a872.tar.xz krb5-b0031448502561da31fb8c2543c8b01d7df9a872.zip |
Remove pointer validation code from the gss krb5 mech
git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@24877 dc483132-0cff-0310-8789-dd5450dbe970
Diffstat (limited to 'src/lib/gssapi/generic/util_validate.c')
-rw-r--r-- | src/lib/gssapi/generic/util_validate.c | 314 |
1 files changed, 0 insertions, 314 deletions
diff --git a/src/lib/gssapi/generic/util_validate.c b/src/lib/gssapi/generic/util_validate.c deleted file mode 100644 index afb47eabf..000000000 --- a/src/lib/gssapi/generic/util_validate.c +++ /dev/null @@ -1,314 +0,0 @@ -/* -*- mode: c; c-basic-offset: 4; indent-tabs-mode: nil -*- */ -/* - * Copyright 1993 by OpenVision Technologies, Inc. - * - * Permission to use, copy, modify, distribute, and sell this software - * and its documentation for any purpose is hereby granted without fee, - * provided that the above copyright notice appears in all copies and - * that both that copyright notice and this permission notice appear in - * supporting documentation, and that the name of OpenVision not be used - * in advertising or publicity pertaining to distribution of the software - * without specific, written prior permission. OpenVision makes no - * representations about the suitability of this software for any - * purpose. It is provided "as is" without express or implied warranty. - * - * OPENVISION DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, - * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO - * EVENT SHALL OPENVISION BE LIABLE FOR ANY SPECIAL, INDIRECT OR - * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF - * USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR - * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR - * PERFORMANCE OF THIS SOFTWARE. - */ - -/* - * $Id$ - */ - -/* - * functions to validate name, credential, and context handles - */ - -#include "gssapiP_generic.h" - -#ifdef HAVE_SYS_TYPES_H -#include <sys/types.h> -#endif -#include <fcntl.h> -#include <limits.h> - -#ifdef HAVE_BSD_DB -#include <sys/file.h> -#include <db.h> - -static const int one = 1; -static const DBT dbtone = { (void *) &one, sizeof(one) }; - -typedef struct _vkey { - int type; - void *ptr; -} vkey; -#endif - -#define V_NAME 1 -#define V_CRED_ID 2 -#define V_CTX_ID 3 -#define V_LCTX_ID 4 - -/* All these functions return 0 on failure, and non-zero on success */ - -static int g_save(db, type, ptr) - g_set *db; -#ifdef HAVE_BSD_DB - int type; -#else - void *type; -#endif - void *ptr; -{ - int ret; -#ifdef HAVE_BSD_DB - DB **vdb; - vkey vk; - DBT key; - - ret = k5_mutex_lock(&db->mutex); - if (ret) - return 0; - - vdb = (DB **) &db->data; - - if (!*vdb) - *vdb = dbopen(NULL, O_CREAT|O_RDWR, O_CREAT|O_RDWR, DB_HASH, NULL); - - vk.type = type; - vk.ptr = ptr; - - key.data = &vk; - key.size = sizeof(vk); - - ret = ((*((*vdb)->put))(*vdb, &key, &dbtone, 0) == 0); - k5_mutex_unlock(&db->mutex); - return ret; -#else - g_set_elt *gs; - - ret = k5_mutex_lock(&db->mutex); - if (ret) - return 0; - - gs = (g_set_elt *) &db->data; - - if (!*gs) - if (g_set_init(gs)) { - k5_mutex_unlock(&db->mutex); - return(0); - } - - ret = (g_set_entry_add(gs, ptr, type) == 0); - k5_mutex_unlock(&db->mutex); - return ret; -#endif -} - -static int g_validate(db, type, ptr) - g_set *db; -#ifdef HAVE_BSD_DB - int type; -#else - void *type; -#endif - void *ptr; -{ - int ret; -#ifdef HAVE_BSD_DB - DB **vdb; - vkey vk; - DBT key, value; - - ret = k5_mutex_lock(&db->mutex); - if (ret) - return 0; - - vdb = (DB **) &db->data; - if (!*vdb) { - k5_mutex_unlock(&db->mutex); - return(0); - } - - vk.type = type; - vk.ptr = ptr; - - key.data = &vk; - key.size = sizeof(vk); - - if ((*((*vdb)->get))(*vdb, &key, &value, 0)) { - k5_mutex_unlock(&db->mutex); - return(0); - } - - k5_mutex_unlock(&db->mutex); - return((value.size == sizeof(one)) && - (*((int *) value.data) == one)); -#else - g_set_elt *gs; - void *value; - - ret = k5_mutex_lock(&db->mutex); - if (ret) - return 0; - - gs = (g_set_elt *) &db->data; - if (!*gs) { - k5_mutex_unlock(&db->mutex); - return(0); - } - - if (g_set_entry_get(gs, ptr, (void **) &value)) { - k5_mutex_unlock(&db->mutex); - return(0); - } - k5_mutex_unlock(&db->mutex); - return(value == type); -#endif -} - -static int g_delete(db, type, ptr) - g_set *db; -#ifdef HAVE_BSD_DB - int type; -#else - void *type; -#endif - void *ptr; -{ - int ret; -#ifdef HAVE_BSD_DB - DB **vdb; - vkey vk; - DBT key; - - ret = k5_mutex_lock(&db->mutex); - if (ret) - return 0; - - vdb = (DB **) &db->data; - if (!*vdb) { - k5_mutex_unlock(&db->mutex); - return(0); - } - - vk.type = type; - vk.ptr = ptr; - - key.data = &vk; - key.size = sizeof(vk); - - ret = ((*((*vdb)->del))(*vdb, &key, 0) == 0); - k5_mutex_unlock(&db->mutex); - return ret; -#else - g_set_elt *gs; - - ret = k5_mutex_lock(&db->mutex); - if (ret) - return 0; - - gs = (g_set_elt *) &db->data; - if (!*gs) { - k5_mutex_unlock(&db->mutex); - return(0); - } - - if (g_set_entry_delete(gs, ptr)) { - k5_mutex_unlock(&db->mutex); - return(0); - } - k5_mutex_unlock(&db->mutex); - return(1); -#endif -} - -/* functions for each type */ - -/* save */ - -int g_save_name(vdb, name) - g_set *vdb; - gss_name_t name; -{ - return(g_save(vdb, V_NAME, (void *) name)); -} -int g_save_cred_id(vdb, cred) - g_set *vdb; - gss_cred_id_t cred; -{ - return(g_save(vdb, V_CRED_ID, (void *) cred)); -} -int g_save_ctx_id(vdb, ctx) - g_set *vdb; - gss_ctx_id_t ctx; -{ - return(g_save(vdb, V_CTX_ID, (void *) ctx)); -} -int g_save_lucidctx_id(vdb, lctx) - g_set *vdb; - void *lctx; -{ - return(g_save(vdb, V_LCTX_ID, (void *) lctx)); -} - - -/* validate */ - -int g_validate_name(vdb, name) - g_set *vdb; - gss_name_t name; -{ - return(g_validate(vdb, V_NAME, (void *) name)); -} -int g_validate_cred_id(vdb, cred) - g_set *vdb; - gss_cred_id_t cred; -{ - return(g_validate(vdb, V_CRED_ID, (void *) cred)); -} -int g_validate_ctx_id(vdb, ctx) - g_set *vdb; - gss_ctx_id_t ctx; -{ - return(g_validate(vdb, V_CTX_ID, (void *) ctx)); -} -int g_validate_lucidctx_id(vdb, lctx) - g_set *vdb; - void *lctx; -{ - return(g_validate(vdb, V_LCTX_ID, (void *) lctx)); -} - -/* delete */ - -int g_delete_name(vdb, name) - g_set *vdb; - gss_name_t name; -{ - return(g_delete(vdb, V_NAME, (void *) name)); -} -int g_delete_cred_id(vdb, cred) - g_set *vdb; - gss_cred_id_t cred; -{ - return(g_delete(vdb, V_CRED_ID, (void *) cred)); -} -int g_delete_ctx_id(vdb, ctx) - g_set *vdb; - gss_ctx_id_t ctx; -{ - return(g_delete(vdb, V_CTX_ID, (void *) ctx)); -} -int g_delete_lucidctx_id(vdb, lctx) - g_set *vdb; - void *lctx; -{ - return(g_delete(vdb, V_LCTX_ID, (void *) lctx)); -} |