#ifdef HAVE_STRINGS_H
# include <strings.h>
#endif /* HAVE_STRINGS_H */
-#ifdef HAVE_UNISTD_H
-# include <unistd.h>
-#endif /* HAVE_UNISTD_H */
+#include <unistd.h>
#if defined(HAVE_STDINT_H)
# include <stdint.h>
#elif defined(HAVE_INTTYPES_H)
static struct defaults *new_default(char *, char *, int);
static struct member *new_member(char *, int);
static struct sudo_digest *new_digest(int, const char *);
-#line 75 "gram.y"
+#line 73 "gram.y"
#ifndef YYSTYPE_DEFINED
#define YYSTYPE_DEFINED
typedef union {
int tok;
} YYSTYPE;
#endif /* YYSTYPE_DEFINED */
-#line 129 "gram.c"
+#line 127 "gram.c"
#define COMMAND 257
#define ALIAS 258
#define DEFVAR 259
short *yysslim;
YYSTYPE *yyvs;
unsigned int yystacksize;
-#line 852 "gram.y"
+#line 850 "gram.y"
void
sudoerserror(const char *s)
{
debug_return_bool(rval);
}
-#line 936 "gram.c"
+#line 934 "gram.c"
/* allocate initial stack or double stack size, up to YYMAXDEPTH */
#if defined(__cplusplus) || defined(__STDC__)
static int yygrowstack(void)
switch (yyn)
{
case 1:
-#line 167 "gram.y"
+#line 165 "gram.y"
{ ; }
break;
case 5:
-#line 175 "gram.y"
+#line 173 "gram.y"
{
;
}
break;
case 6:
-#line 178 "gram.y"
+#line 176 "gram.y"
{
yyerrok;
}
break;
case 7:
-#line 181 "gram.y"
+#line 179 "gram.y"
{
if (!add_userspec(yyvsp[-1].member, yyvsp[0].privilege)) {
sudoerserror(N_("unable to allocate memory"));
}
break;
case 8:
-#line 187 "gram.y"
+#line 185 "gram.y"
{
;
}
break;
case 9:
-#line 190 "gram.y"
+#line 188 "gram.y"
{
;
}
break;
case 10:
-#line 193 "gram.y"
+#line 191 "gram.y"
{
;
}
break;
case 11:
-#line 196 "gram.y"
+#line 194 "gram.y"
{
;
}
break;
case 12:
-#line 199 "gram.y"
+#line 197 "gram.y"
{
if (!add_defaults(DEFAULTS, NULL, yyvsp[0].defaults)) {
sudoerserror(N_("unable to allocate memory"));
}
break;
case 13:
-#line 205 "gram.y"
+#line 203 "gram.y"
{
if (!add_defaults(DEFAULTS_USER, yyvsp[-1].member, yyvsp[0].defaults)) {
sudoerserror(N_("unable to allocate memory"));
}
break;
case 14:
-#line 211 "gram.y"
+#line 209 "gram.y"
{
if (!add_defaults(DEFAULTS_RUNAS, yyvsp[-1].member, yyvsp[0].defaults)) {
sudoerserror(N_("unable to allocate memory"));
}
break;
case 15:
-#line 217 "gram.y"
+#line 215 "gram.y"
{
if (!add_defaults(DEFAULTS_HOST, yyvsp[-1].member, yyvsp[0].defaults)) {
sudoerserror(N_("unable to allocate memory"));
}
break;
case 16:
-#line 223 "gram.y"
+#line 221 "gram.y"
{
if (!add_defaults(DEFAULTS_CMND, yyvsp[-1].member, yyvsp[0].defaults)) {
sudoerserror(N_("unable to allocate memory"));
}
break;
case 18:
-#line 232 "gram.y"
+#line 230 "gram.y"
{
HLTQ_CONCAT(yyvsp[-2].defaults, yyvsp[0].defaults, entries);
yyval.defaults = yyvsp[-2].defaults;
}
break;
case 19:
-#line 238 "gram.y"
+#line 236 "gram.y"
{
yyval.defaults = new_default(yyvsp[0].string, NULL, true);
if (yyval.defaults == NULL) {
}
break;
case 20:
-#line 245 "gram.y"
+#line 243 "gram.y"
{
yyval.defaults = new_default(yyvsp[0].string, NULL, false);
if (yyval.defaults == NULL) {
}
break;
case 21:
-#line 252 "gram.y"
+#line 250 "gram.y"
{
yyval.defaults = new_default(yyvsp[-2].string, yyvsp[0].string, true);
if (yyval.defaults == NULL) {
}
break;
case 22:
-#line 259 "gram.y"
+#line 257 "gram.y"
{
yyval.defaults = new_default(yyvsp[-2].string, yyvsp[0].string, '+');
if (yyval.defaults == NULL) {
}
break;
case 23:
-#line 266 "gram.y"
+#line 264 "gram.y"
{
yyval.defaults = new_default(yyvsp[-2].string, yyvsp[0].string, '-');
if (yyval.defaults == NULL) {
}
break;
case 25:
-#line 276 "gram.y"
+#line 274 "gram.y"
{
HLTQ_CONCAT(yyvsp[-2].privilege, yyvsp[0].privilege, entries);
yyval.privilege = yyvsp[-2].privilege;
}
break;
case 26:
-#line 282 "gram.y"
+#line 280 "gram.y"
{
struct privilege *p = calloc(1, sizeof(*p));
if (p == NULL) {
}
break;
case 27:
-#line 295 "gram.y"
+#line 293 "gram.y"
{
yyval.member = yyvsp[0].member;
yyval.member->negated = false;
}
break;
case 28:
-#line 299 "gram.y"
+#line 297 "gram.y"
{
yyval.member = yyvsp[0].member;
yyval.member->negated = true;
}
break;
case 29:
-#line 305 "gram.y"
+#line 303 "gram.y"
{
yyval.member = new_member(yyvsp[0].string, ALIAS);
if (yyval.member == NULL) {
}
break;
case 30:
-#line 312 "gram.y"
+#line 310 "gram.y"
{
yyval.member = new_member(NULL, ALL);
if (yyval.member == NULL) {
}
break;
case 31:
-#line 319 "gram.y"
+#line 317 "gram.y"
{
yyval.member = new_member(yyvsp[0].string, NETGROUP);
if (yyval.member == NULL) {
}
break;
case 32:
-#line 326 "gram.y"
+#line 324 "gram.y"
{
yyval.member = new_member(yyvsp[0].string, NTWKADDR);
if (yyval.member == NULL) {
}
break;
case 33:
-#line 333 "gram.y"
+#line 331 "gram.y"
{
yyval.member = new_member(yyvsp[0].string, WORD);
if (yyval.member == NULL) {
}
break;
case 35:
-#line 343 "gram.y"
+#line 341 "gram.y"
{
struct cmndspec *prev;
prev = HLTQ_LAST(yyvsp[-2].cmndspec, cmndspec, entries);
}
break;
case 36:
-#line 386 "gram.y"
+#line 384 "gram.y"
{
struct cmndspec *cs = calloc(1, sizeof(*cs));
if (cs == NULL) {
}
break;
case 37:
-#line 434 "gram.y"
+#line 432 "gram.y"
{
yyval.digest = new_digest(SUDO_DIGEST_SHA224, yyvsp[0].string);
if (yyval.digest == NULL) {
}
break;
case 38:
-#line 441 "gram.y"
+#line 439 "gram.y"
{
yyval.digest = new_digest(SUDO_DIGEST_SHA256, yyvsp[0].string);
if (yyval.digest == NULL) {
}
break;
case 39:
-#line 448 "gram.y"
+#line 446 "gram.y"
{
yyval.digest = new_digest(SUDO_DIGEST_SHA384, yyvsp[0].string);
if (yyval.digest == NULL) {
}
break;
case 40:
-#line 455 "gram.y"
+#line 453 "gram.y"
{
yyval.digest = new_digest(SUDO_DIGEST_SHA512, yyvsp[0].string);
if (yyval.digest == NULL) {
}
break;
case 41:
-#line 464 "gram.y"
+#line 462 "gram.y"
{
yyval.member = yyvsp[0].member;
}
break;
case 42:
-#line 467 "gram.y"
+#line 465 "gram.y"
{
if (yyvsp[0].member->type != COMMAND) {
sudoerserror(N_("a digest requires a path name"));
}
break;
case 43:
-#line 478 "gram.y"
+#line 476 "gram.y"
{
yyval.member = yyvsp[0].member;
yyval.member->negated = false;
}
break;
case 44:
-#line 482 "gram.y"
+#line 480 "gram.y"
{
yyval.member = yyvsp[0].member;
yyval.member->negated = true;
}
break;
case 45:
-#line 488 "gram.y"
+#line 486 "gram.y"
{
yyval.string = yyvsp[0].string;
}
break;
case 46:
-#line 493 "gram.y"
+#line 491 "gram.y"
{
yyval.string = yyvsp[0].string;
}
break;
case 47:
-#line 498 "gram.y"
+#line 496 "gram.y"
{
yyval.seinfo.role = NULL;
yyval.seinfo.type = NULL;
}
break;
case 48:
-#line 502 "gram.y"
+#line 500 "gram.y"
{
yyval.seinfo.role = yyvsp[0].string;
yyval.seinfo.type = NULL;
}
break;
case 49:
-#line 506 "gram.y"
+#line 504 "gram.y"
{
yyval.seinfo.type = yyvsp[0].string;
yyval.seinfo.role = NULL;
}
break;
case 50:
-#line 510 "gram.y"
+#line 508 "gram.y"
{
yyval.seinfo.role = yyvsp[-1].string;
yyval.seinfo.type = yyvsp[0].string;
}
break;
case 51:
-#line 514 "gram.y"
+#line 512 "gram.y"
{
yyval.seinfo.type = yyvsp[-1].string;
yyval.seinfo.role = yyvsp[0].string;
}
break;
case 52:
-#line 520 "gram.y"
+#line 518 "gram.y"
{
yyval.string = yyvsp[0].string;
}
break;
case 53:
-#line 524 "gram.y"
+#line 522 "gram.y"
{
yyval.string = yyvsp[0].string;
}
break;
case 54:
-#line 529 "gram.y"
+#line 527 "gram.y"
{
yyval.privinfo.privs = NULL;
yyval.privinfo.limitprivs = NULL;
}
break;
case 55:
-#line 533 "gram.y"
+#line 531 "gram.y"
{
yyval.privinfo.privs = yyvsp[0].string;
yyval.privinfo.limitprivs = NULL;
}
break;
case 56:
-#line 537 "gram.y"
+#line 535 "gram.y"
{
yyval.privinfo.privs = NULL;
yyval.privinfo.limitprivs = yyvsp[0].string;
}
break;
case 57:
-#line 541 "gram.y"
+#line 539 "gram.y"
{
yyval.privinfo.privs = yyvsp[-1].string;
yyval.privinfo.limitprivs = yyvsp[0].string;
}
break;
case 58:
-#line 545 "gram.y"
+#line 543 "gram.y"
{
yyval.privinfo.limitprivs = yyvsp[-1].string;
yyval.privinfo.privs = yyvsp[0].string;
}
break;
case 59:
-#line 551 "gram.y"
+#line 549 "gram.y"
{
yyval.runas = NULL;
}
break;
case 60:
-#line 554 "gram.y"
+#line 552 "gram.y"
{
yyval.runas = yyvsp[-1].runas;
}
break;
case 61:
-#line 559 "gram.y"
+#line 557 "gram.y"
{
yyval.runas = calloc(1, sizeof(struct runascontainer));
if (yyval.runas != NULL) {
}
break;
case 62:
-#line 574 "gram.y"
+#line 572 "gram.y"
{
yyval.runas = calloc(1, sizeof(struct runascontainer));
if (yyval.runas == NULL) {
}
break;
case 63:
-#line 583 "gram.y"
+#line 581 "gram.y"
{
yyval.runas = calloc(1, sizeof(struct runascontainer));
if (yyval.runas == NULL) {
}
break;
case 64:
-#line 592 "gram.y"
+#line 590 "gram.y"
{
yyval.runas = calloc(1, sizeof(struct runascontainer));
if (yyval.runas == NULL) {
}
break;
case 65:
-#line 601 "gram.y"
+#line 599 "gram.y"
{
yyval.runas = calloc(1, sizeof(struct runascontainer));
if (yyval.runas != NULL) {
}
break;
case 66:
-#line 618 "gram.y"
+#line 616 "gram.y"
{
yyval.tag.log_input = yyval.tag.log_output = yyval.tag.noexec =
yyval.tag.nopasswd = yyval.tag.send_mail = yyval.tag.setenv = UNSPEC;
}
break;
case 67:
-#line 622 "gram.y"
+#line 620 "gram.y"
{
yyval.tag.nopasswd = true;
}
break;
case 68:
-#line 625 "gram.y"
+#line 623 "gram.y"
{
yyval.tag.nopasswd = false;
}
break;
case 69:
-#line 628 "gram.y"
+#line 626 "gram.y"
{
yyval.tag.noexec = true;
}
break;
case 70:
-#line 631 "gram.y"
+#line 629 "gram.y"
{
yyval.tag.noexec = false;
}
break;
case 71:
-#line 634 "gram.y"
+#line 632 "gram.y"
{
yyval.tag.setenv = true;
}
break;
case 72:
-#line 637 "gram.y"
+#line 635 "gram.y"
{
yyval.tag.setenv = false;
}
break;
case 73:
-#line 640 "gram.y"
+#line 638 "gram.y"
{
yyval.tag.log_input = true;
}
break;
case 74:
-#line 643 "gram.y"
+#line 641 "gram.y"
{
yyval.tag.log_input = false;
}
break;
case 75:
-#line 646 "gram.y"
+#line 644 "gram.y"
{
yyval.tag.log_output = true;
}
break;
case 76:
-#line 649 "gram.y"
+#line 647 "gram.y"
{
yyval.tag.log_output = false;
}
break;
case 77:
-#line 652 "gram.y"
+#line 650 "gram.y"
{
yyval.tag.send_mail = true;
}
break;
case 78:
-#line 655 "gram.y"
+#line 653 "gram.y"
{
yyval.tag.send_mail = false;
}
break;
case 79:
-#line 660 "gram.y"
+#line 658 "gram.y"
{
yyval.member = new_member(NULL, ALL);
if (yyval.member == NULL) {
}
break;
case 80:
-#line 667 "gram.y"
+#line 665 "gram.y"
{
yyval.member = new_member(yyvsp[0].string, ALIAS);
if (yyval.member == NULL) {
}
break;
case 81:
-#line 674 "gram.y"
+#line 672 "gram.y"
{
struct sudo_command *c = calloc(1, sizeof(*c));
if (c == NULL) {
}
break;
case 84:
-#line 695 "gram.y"
+#line 693 "gram.y"
{
const char *s;
if ((s = alias_add(yyvsp[-2].string, HOSTALIAS, yyvsp[0].member)) != NULL) {
}
break;
case 86:
-#line 705 "gram.y"
+#line 703 "gram.y"
{
HLTQ_CONCAT(yyvsp[-2].member, yyvsp[0].member, entries);
yyval.member = yyvsp[-2].member;
}
break;
case 89:
-#line 715 "gram.y"
+#line 713 "gram.y"
{
const char *s;
if ((s = alias_add(yyvsp[-2].string, CMNDALIAS, yyvsp[0].member)) != NULL) {
}
break;
case 91:
-#line 725 "gram.y"
+#line 723 "gram.y"
{
HLTQ_CONCAT(yyvsp[-2].member, yyvsp[0].member, entries);
yyval.member = yyvsp[-2].member;
}
break;
case 94:
-#line 735 "gram.y"
+#line 733 "gram.y"
{
const char *s;
if ((s = alias_add(yyvsp[-2].string, RUNASALIAS, yyvsp[0].member)) != NULL) {
}
break;
case 97:
-#line 748 "gram.y"
+#line 746 "gram.y"
{
const char *s;
if ((s = alias_add(yyvsp[-2].string, USERALIAS, yyvsp[0].member)) != NULL) {
}
break;
case 99:
-#line 758 "gram.y"
+#line 756 "gram.y"
{
HLTQ_CONCAT(yyvsp[-2].member, yyvsp[0].member, entries);
yyval.member = yyvsp[-2].member;
}
break;
case 100:
-#line 764 "gram.y"
+#line 762 "gram.y"
{
yyval.member = yyvsp[0].member;
yyval.member->negated = false;
}
break;
case 101:
-#line 768 "gram.y"
+#line 766 "gram.y"
{
yyval.member = yyvsp[0].member;
yyval.member->negated = true;
}
break;
case 102:
-#line 774 "gram.y"
+#line 772 "gram.y"
{
yyval.member = new_member(yyvsp[0].string, ALIAS);
if (yyval.member == NULL) {
}
break;
case 103:
-#line 781 "gram.y"
+#line 779 "gram.y"
{
yyval.member = new_member(NULL, ALL);
if (yyval.member == NULL) {
}
break;
case 104:
-#line 788 "gram.y"
+#line 786 "gram.y"
{
yyval.member = new_member(yyvsp[0].string, NETGROUP);
if (yyval.member == NULL) {
}
break;
case 105:
-#line 795 "gram.y"
+#line 793 "gram.y"
{
yyval.member = new_member(yyvsp[0].string, USERGROUP);
if (yyval.member == NULL) {
}
break;
case 106:
-#line 802 "gram.y"
+#line 800 "gram.y"
{
yyval.member = new_member(yyvsp[0].string, WORD);
if (yyval.member == NULL) {
}
break;
case 108:
-#line 812 "gram.y"
+#line 810 "gram.y"
{
HLTQ_CONCAT(yyvsp[-2].member, yyvsp[0].member, entries);
yyval.member = yyvsp[-2].member;
}
break;
case 109:
-#line 818 "gram.y"
+#line 816 "gram.y"
{
yyval.member = yyvsp[0].member;
yyval.member->negated = false;
}
break;
case 110:
-#line 822 "gram.y"
+#line 820 "gram.y"
{
yyval.member = yyvsp[0].member;
yyval.member->negated = true;
}
break;
case 111:
-#line 828 "gram.y"
+#line 826 "gram.y"
{
yyval.member = new_member(yyvsp[0].string, ALIAS);
if (yyval.member == NULL) {
}
break;
case 112:
-#line 835 "gram.y"
+#line 833 "gram.y"
{
yyval.member = new_member(NULL, ALL);
if (yyval.member == NULL) {
}
break;
case 113:
-#line 842 "gram.y"
+#line 840 "gram.y"
{
yyval.member = new_member(yyvsp[0].string, WORD);
if (yyval.member == NULL) {
}
}
break;
-#line 2016 "gram.c"
+#line 2014 "gram.c"
}
yyssp -= yym;
yystate = *yyssp;