svr_iters.c (56a424cc) | svr_iters.c (54925bf6) |
---|---|
1#pragma ident "%Z%%M% %I% %E% SMI" 2 3/* 4 * WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING 5 * 6 * Openvision retains the copyright to derivative works of 7 * this source code. Do *NOT* create a derivative of this 8 * source code before consulting with your legal department. --- 14 unchanged lines hidden (view full) --- 23 * 24 * $Header: /cvs/krbdev/krb5/src/lib/kadm5/srv/svr_iters.c,v 1.6 2003/01/12 18:17:02 epeisach Exp $ 25 */ 26 27#if !defined(lint) && !defined(__CODECENTER__) 28static char *rcsid = "$Header: /cvs/krbdev/krb5/src/lib/kadm5/srv/svr_iters.c,v 1.6 2003/01/12 18:17:02 epeisach Exp $"; 29#endif 30 | 1#pragma ident "%Z%%M% %I% %E% SMI" 2 3/* 4 * WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING 5 * 6 * Openvision retains the copyright to derivative works of 7 * this source code. Do *NOT* create a derivative of this 8 * source code before consulting with your legal department. --- 14 unchanged lines hidden (view full) --- 23 * 24 * $Header: /cvs/krbdev/krb5/src/lib/kadm5/srv/svr_iters.c,v 1.6 2003/01/12 18:17:02 epeisach Exp $ 25 */ 26 27#if !defined(lint) && !defined(__CODECENTER__) 28static char *rcsid = "$Header: /cvs/krbdev/krb5/src/lib/kadm5/srv/svr_iters.c,v 1.6 2003/01/12 18:17:02 epeisach Exp $"; 29#endif 30 |
31#include "autoconf.h" |
|
31#if defined(HAVE_COMPILE) && defined(HAVE_STEP) 32#define SOLARIS_REGEXPS 33#elif defined(HAVE_REGCOMP) && defined(HAVE_REGEXEC) 34#define POSIX_REGEXPS 35#elif defined(HAVE_RE_COMP) && defined(HAVE_RE_EXEC) 36#define BSD_REGEXPS 37#else 38#error I cannot find any regexp functions 39#endif 40 41#include <sys/types.h> 42#include <string.h> 43#include <kadm5/admin.h> | 32#if defined(HAVE_COMPILE) && defined(HAVE_STEP) 33#define SOLARIS_REGEXPS 34#elif defined(HAVE_REGCOMP) && defined(HAVE_REGEXEC) 35#define POSIX_REGEXPS 36#elif defined(HAVE_RE_COMP) && defined(HAVE_RE_EXEC) 37#define BSD_REGEXPS 38#else 39#error I cannot find any regexp functions 40#endif 41 42#include <sys/types.h> 43#include <string.h> 44#include <kadm5/admin.h> |
44#include "adb.h" | |
45#ifdef SOLARIS_REGEXPS 46#include <regexpr.h> 47#endif 48#ifdef POSIX_REGEXPS 49#include <regex.h> 50#endif 51#include <stdlib.h> 52 53#include "server_internal.h" 54 | 45#ifdef SOLARIS_REGEXPS 46#include <regexpr.h> 47#endif 48#ifdef POSIX_REGEXPS 49#include <regex.h> 50#endif 51#include <stdlib.h> 52 53#include "server_internal.h" 54 |
55krb5_error_code 56kdb_iter_entry(kadm5_server_handle_t handle, 57 void (*iter_fct)(void *, krb5_principal), void *data); 58 | |
59struct iter_data { 60 krb5_context context; 61 char **names; 62 int n_names, sz_names; 63 unsigned int malloc_failed; 64 char *exp; 65#ifdef SOLARIS_REGEXPS 66 char *expbuf; --- 61 unchanged lines hidden (view full) --- 128 case '.': 129 case '^': 130 case '$': 131 *p++ = '\\'; 132 *p++ = *glob; 133 break; 134 case '\\': 135 *p++ = '\\'; | 55struct iter_data { 56 krb5_context context; 57 char **names; 58 int n_names, sz_names; 59 unsigned int malloc_failed; 60 char *exp; 61#ifdef SOLARIS_REGEXPS 62 char *expbuf; --- 61 unchanged lines hidden (view full) --- 124 case '.': 125 case '^': 126 case '$': 127 *p++ = '\\'; 128 *p++ = *glob; 129 break; 130 case '\\': 131 *p++ = '\\'; |
136 *p++ = ++*glob; | 132 *p++ = *++glob; |
137 break; 138 default: 139 *p++ = *glob; 140 break; 141 } 142 glob++; 143 } 144 --- 104 unchanged lines hidden (view full) --- 249 data.names = malloc(sizeof(char *) * data.sz_names); 250 if (data.names == NULL) { 251 free(regexp); 252 return ENOMEM; 253 } 254 255 if (princ) { 256 data.context = handle->context; | 133 break; 134 default: 135 *p++ = *glob; 136 break; 137 } 138 glob++; 139 } 140 --- 104 unchanged lines hidden (view full) --- 245 data.names = malloc(sizeof(char *) * data.sz_names); 246 if (data.names == NULL) { 247 free(regexp); 248 return ENOMEM; 249 } 250 251 if (princ) { 252 data.context = handle->context; |
257 ret = kdb_iter_entry(handle, get_princs_iter, (void *) &data); | 253 ret = kdb_iter_entry(handle, exp, get_princs_iter, (void *) &data); |
258 } else { | 254 } else { |
259 ret = osa_adb_iter_policy(handle->policy_db, get_pols_iter, (void *)&data); | 255 ret = krb5_db_iter_policy(handle->context, exp, get_pols_iter, (void *)&data); |
260 } 261 262 free(regexp); 263#ifdef POSIX_REGEXPS 264 regfree(&data.preg); 265#endif | 256 } 257 258 free(regexp); 259#ifdef POSIX_REGEXPS 260 regfree(&data.preg); 261#endif |
266 if (ret == OSA_ADB_OK && data.malloc_failed) | 262 if ( !ret && data.malloc_failed) |
267 ret = ENOMEM; | 263 ret = ENOMEM; |
268 if (ret != OSA_ADB_OK) { | 264 if ( ret ) { |
269 for (i = 0; i < data.n_names; i++) 270 free(data.names[i]); 271 free(data.names); 272 return ret; 273 } 274 275 *princs = data.names; 276 *count = data.n_names; --- 19 unchanged lines hidden --- | 265 for (i = 0; i < data.n_names; i++) 266 free(data.names[i]); 267 free(data.names); 268 return ret; 269 } 270 271 *princs = data.names; 272 *count = data.n_names; --- 19 unchanged lines hidden --- |