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 ---