CVE-2020-25719 kdc: Avoid races and multiple DB lookups in s4u2self check
[Samba.git] / source3 / utils / split_tokens.c
blobab48dc5c9c1e63089aeb39c95c193c8357e081b0
1 /*
2 Unix SMB/CIFS implementation.
3 test program for the next_token() function
5 Copyright (C) 2009 Michael Adam
7 This program is free software; you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by
9 the Free Software Foundation; either version 2 of the License, or
10 (at your option) any later version.
12 This program is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU General Public License for more details.
17 You should have received a copy of the GNU General Public License
18 along with this program; if not, write to the Free Software
19 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
23 * Diagnostic output for "next_token()".
26 #include "includes.h"
27 #include "lib/cmdline/cmdline.h"
29 int main(int argc, const char *argv[])
31 const char *sequence = "";
32 poptContext pc;
33 char *buff;
34 TALLOC_CTX *ctx = talloc_stackframe();
35 int opt;
36 bool ok;
38 struct poptOption long_options[] = {
39 POPT_AUTOHELP
40 POPT_COMMON_VERSION
41 POPT_TABLEEND
44 smb_init_locale();
46 ok = samba_cmdline_init(ctx,
47 SAMBA_CMDLINE_CONFIG_CLIENT,
48 false /* require_smbconf */);
49 if (!ok) {
50 DBG_ERR("Failed to init cmdline parser!\n");
51 TALLOC_FREE(ctx);
52 exit(1);
55 pc = samba_popt_get_context(getprogname(),
56 argc,
57 argv,
58 long_options,
59 POPT_CONTEXT_KEEP_FIRST);
60 if (pc == NULL) {
61 DBG_ERR("Failed to setup popt context!\n");
62 TALLOC_FREE(ctx);
63 exit(1);
66 poptSetOtherOptionHelp(pc, "[OPTION...] <sequence-string>");
68 while((opt = poptGetNextOpt(pc)) != -1) {
69 switch (opt) {
70 case POPT_ERROR_BADOPT:
71 fprintf(stderr, "\nInvalid option %s: %s\n\n",
72 poptBadOption(pc, 0), poptStrerror(opt));
73 poptPrintUsage(pc, stderr, 0);
74 exit(1);
78 sequence = poptGetArg(pc);
80 if (sequence == NULL) {
81 fprintf(stderr, "ERROR: missing sequence string\n");
82 return 1;
85 lp_set_cmdline("log level", "0");
87 while(next_token_talloc(ctx, &sequence, &buff, NULL)) {
88 printf("[%s]\n", buff);
91 poptFreeContext(pc);
92 talloc_free(ctx);
94 return 0;