YYSTYPE *yyvs;
unsigned int yystacksize;
int yyparse(void);
-#line 899 "gram.y"
+#line 898 "gram.y"
void
sudoerserror(const char *s)
{
switch (yyn)
{
case 1:
-#line 176 "gram.y"
+#line 175 "gram.y"
{ ; }
break;
case 5:
-#line 184 "gram.y"
+#line 183 "gram.y"
{
;
}
break;
case 6:
-#line 187 "gram.y"
+#line 186 "gram.y"
{
yyerrok;
}
break;
case 7:
-#line 190 "gram.y"
+#line 189 "gram.y"
{
if (!add_userspec(yyvsp[-1].member, yyvsp[0].privilege)) {
sudoerserror(N_("unable to allocate memory"));
}
break;
case 8:
-#line 196 "gram.y"
+#line 195 "gram.y"
{
;
}
break;
case 9:
-#line 199 "gram.y"
+#line 198 "gram.y"
{
;
}
break;
case 10:
-#line 202 "gram.y"
+#line 201 "gram.y"
{
;
}
break;
case 11:
-#line 205 "gram.y"
+#line 204 "gram.y"
{
;
}
break;
case 12:
-#line 208 "gram.y"
+#line 207 "gram.y"
{
if (!add_defaults(DEFAULTS, NULL, yyvsp[0].defaults))
YYERROR;
}
break;
case 13:
-#line 212 "gram.y"
+#line 211 "gram.y"
{
if (!add_defaults(DEFAULTS_USER, yyvsp[-1].member, yyvsp[0].defaults))
YYERROR;
}
break;
case 14:
-#line 216 "gram.y"
+#line 215 "gram.y"
{
if (!add_defaults(DEFAULTS_RUNAS, yyvsp[-1].member, yyvsp[0].defaults))
YYERROR;
}
break;
case 15:
-#line 220 "gram.y"
+#line 219 "gram.y"
{
if (!add_defaults(DEFAULTS_HOST, yyvsp[-1].member, yyvsp[0].defaults))
YYERROR;
}
break;
case 16:
-#line 224 "gram.y"
+#line 223 "gram.y"
{
if (!add_defaults(DEFAULTS_CMND, yyvsp[-1].member, yyvsp[0].defaults))
YYERROR;
}
break;
case 18:
-#line 231 "gram.y"
+#line 230 "gram.y"
{
HLTQ_CONCAT(yyvsp[-2].defaults, yyvsp[0].defaults, entries);
yyval.defaults = yyvsp[-2].defaults;
}
break;
case 19:
-#line 237 "gram.y"
+#line 236 "gram.y"
{
yyval.defaults = new_default(yyvsp[0].string, NULL, true);
if (yyval.defaults == NULL) {
}
break;
case 20:
-#line 244 "gram.y"
+#line 243 "gram.y"
{
yyval.defaults = new_default(yyvsp[0].string, NULL, false);
if (yyval.defaults == NULL) {
}
break;
case 21:
-#line 251 "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 258 "gram.y"
+#line 257 "gram.y"
{
yyval.defaults = new_default(yyvsp[-2].string, yyvsp[0].string, '+');
if (yyval.defaults == NULL) {
}
break;
case 23:
-#line 265 "gram.y"
+#line 264 "gram.y"
{
yyval.defaults = new_default(yyvsp[-2].string, yyvsp[0].string, '-');
if (yyval.defaults == NULL) {
}
break;
case 25:
-#line 275 "gram.y"
+#line 274 "gram.y"
{
HLTQ_CONCAT(yyvsp[-2].privilege, yyvsp[0].privilege, entries);
yyval.privilege = yyvsp[-2].privilege;
}
break;
case 26:
-#line 281 "gram.y"
+#line 280 "gram.y"
{
struct privilege *p = calloc(1, sizeof(*p));
if (p == NULL) {
}
break;
case 27:
-#line 294 "gram.y"
+#line 293 "gram.y"
{
yyval.member = yyvsp[0].member;
yyval.member->negated = false;
}
break;
case 28:
-#line 298 "gram.y"
+#line 297 "gram.y"
{
yyval.member = yyvsp[0].member;
yyval.member->negated = true;
}
break;
case 29:
-#line 304 "gram.y"
+#line 303 "gram.y"
{
yyval.member = new_member(yyvsp[0].string, ALIAS);
if (yyval.member == NULL) {
}
break;
case 30:
-#line 311 "gram.y"
+#line 310 "gram.y"
{
yyval.member = new_member(NULL, ALL);
if (yyval.member == NULL) {
}
break;
case 31:
-#line 318 "gram.y"
+#line 317 "gram.y"
{
yyval.member = new_member(yyvsp[0].string, NETGROUP);
if (yyval.member == NULL) {
}
break;
case 32:
-#line 325 "gram.y"
+#line 324 "gram.y"
{
yyval.member = new_member(yyvsp[0].string, NTWKADDR);
if (yyval.member == NULL) {
}
break;
case 33:
-#line 332 "gram.y"
+#line 331 "gram.y"
{
yyval.member = new_member(yyvsp[0].string, WORD);
if (yyval.member == NULL) {
}
break;
case 35:
-#line 342 "gram.y"
+#line 341 "gram.y"
{
struct cmndspec *prev;
prev = HLTQ_LAST(yyvsp[-2].cmndspec, cmndspec, entries);
}
break;
case 36:
-#line 395 "gram.y"
+#line 394 "gram.y"
{
struct cmndspec *cs = calloc(1, sizeof(*cs));
if (cs == NULL) {
}
break;
case 37:
-#line 446 "gram.y"
+#line 445 "gram.y"
{
yyval.digest = new_digest(SUDO_DIGEST_SHA224, yyvsp[0].string);
if (yyval.digest == NULL) {
}
break;
case 38:
-#line 453 "gram.y"
+#line 452 "gram.y"
{
yyval.digest = new_digest(SUDO_DIGEST_SHA256, yyvsp[0].string);
if (yyval.digest == NULL) {
}
break;
case 39:
-#line 460 "gram.y"
+#line 459 "gram.y"
{
yyval.digest = new_digest(SUDO_DIGEST_SHA384, yyvsp[0].string);
if (yyval.digest == NULL) {
}
break;
case 40:
-#line 467 "gram.y"
+#line 466 "gram.y"
{
yyval.digest = new_digest(SUDO_DIGEST_SHA512, yyvsp[0].string);
if (yyval.digest == NULL) {
}
break;
case 41:
-#line 476 "gram.y"
+#line 475 "gram.y"
{
yyval.member = yyvsp[0].member;
}
break;
case 42:
-#line 479 "gram.y"
+#line 478 "gram.y"
{
if (yyvsp[0].member->type != COMMAND) {
sudoerserror(N_("a digest requires a path name"));
}
break;
case 43:
-#line 490 "gram.y"
+#line 489 "gram.y"
{
yyval.member = yyvsp[0].member;
yyval.member->negated = false;
}
break;
case 44:
-#line 494 "gram.y"
+#line 493 "gram.y"
{
yyval.member = yyvsp[0].member;
yyval.member->negated = true;
}
break;
case 45:
-#line 500 "gram.y"
+#line 499 "gram.y"
{
yyval.string = yyvsp[0].string;
}
break;
case 46:
-#line 505 "gram.y"
+#line 504 "gram.y"
{
yyval.string = yyvsp[0].string;
}
break;
case 47:
-#line 509 "gram.y"
+#line 508 "gram.y"
{
yyval.string = yyvsp[0].string;
}
break;
case 48:
-#line 514 "gram.y"
+#line 513 "gram.y"
{
yyval.string = yyvsp[0].string;
}
break;
case 49:
-#line 519 "gram.y"
+#line 518 "gram.y"
{
yyval.string = yyvsp[0].string;
}
break;
case 50:
-#line 524 "gram.y"
+#line 523 "gram.y"
{
yyval.string = yyvsp[0].string;
}
break;
case 51:
-#line 528 "gram.y"
+#line 527 "gram.y"
{
yyval.string = yyvsp[0].string;
}
break;
case 52:
-#line 533 "gram.y"
+#line 532 "gram.y"
{
yyval.runas = NULL;
}
break;
case 53:
-#line 536 "gram.y"
+#line 535 "gram.y"
{
yyval.runas = yyvsp[-1].runas;
}
break;
case 54:
-#line 541 "gram.y"
+#line 540 "gram.y"
{
yyval.runas = calloc(1, sizeof(struct runascontainer));
if (yyval.runas != NULL) {
}
break;
case 55:
-#line 556 "gram.y"
+#line 555 "gram.y"
{
yyval.runas = calloc(1, sizeof(struct runascontainer));
if (yyval.runas == NULL) {
}
break;
case 56:
-#line 565 "gram.y"
+#line 564 "gram.y"
{
yyval.runas = calloc(1, sizeof(struct runascontainer));
if (yyval.runas == NULL) {
}
break;
case 57:
-#line 574 "gram.y"
+#line 573 "gram.y"
{
yyval.runas = calloc(1, sizeof(struct runascontainer));
if (yyval.runas == NULL) {
}
break;
case 58:
-#line 583 "gram.y"
+#line 582 "gram.y"
{
yyval.runas = calloc(1, sizeof(struct runascontainer));
if (yyval.runas != NULL) {
}
break;
case 59:
-#line 600 "gram.y"
+#line 599 "gram.y"
{
init_options(&yyval.options);
}
break;
case 60:
-#line 603 "gram.y"
+#line 602 "gram.y"
{
yyval.options.notbefore = parse_gentime(yyvsp[0].string);
free(yyvsp[0].string);
}
break;
case 61:
-#line 611 "gram.y"
+#line 610 "gram.y"
{
yyval.options.notafter = parse_gentime(yyvsp[0].string);
free(yyvsp[0].string);
}
break;
case 62:
-#line 619 "gram.y"
+#line 618 "gram.y"
{
yyval.options.timeout = parse_timeout(yyvsp[0].string);
free(yyvsp[0].string);
}
break;
case 63:
-#line 630 "gram.y"
+#line 629 "gram.y"
{
#ifdef HAVE_SELINUX
free(yyval.options.role);
}
break;
case 64:
-#line 636 "gram.y"
+#line 635 "gram.y"
{
#ifdef HAVE_SELINUX
free(yyval.options.type);
}
break;
case 65:
-#line 642 "gram.y"
+#line 641 "gram.y"
{
#ifdef HAVE_PRIV_SET
free(yyval.options.privs);
}
break;
case 66:
-#line 648 "gram.y"
+#line 647 "gram.y"
{
#ifdef HAVE_PRIV_SET
free(yyval.options.limitprivs);
}
break;
case 67:
-#line 656 "gram.y"
+#line 655 "gram.y"
{
TAGS_INIT(yyval.tag);
}
break;
case 68:
-#line 659 "gram.y"
+#line 658 "gram.y"
{
yyval.tag.nopasswd = true;
}
break;
case 69:
-#line 662 "gram.y"
+#line 661 "gram.y"
{
yyval.tag.nopasswd = false;
}
break;
case 70:
-#line 665 "gram.y"
+#line 664 "gram.y"
{
yyval.tag.noexec = true;
}
break;
case 71:
-#line 668 "gram.y"
+#line 667 "gram.y"
{
yyval.tag.noexec = false;
}
break;
case 72:
-#line 671 "gram.y"
+#line 670 "gram.y"
{
yyval.tag.setenv = true;
}
break;
case 73:
-#line 674 "gram.y"
+#line 673 "gram.y"
{
yyval.tag.setenv = false;
}
break;
case 74:
-#line 677 "gram.y"
+#line 676 "gram.y"
{
yyval.tag.log_input = true;
}
break;
case 75:
-#line 680 "gram.y"
+#line 679 "gram.y"
{
yyval.tag.log_input = false;
}
break;
case 76:
-#line 683 "gram.y"
+#line 682 "gram.y"
{
yyval.tag.log_output = true;
}
break;
case 77:
-#line 686 "gram.y"
+#line 685 "gram.y"
{
yyval.tag.log_output = false;
}
break;
case 78:
-#line 689 "gram.y"
+#line 688 "gram.y"
{
yyval.tag.follow = true;
}
break;
case 79:
-#line 692 "gram.y"
+#line 691 "gram.y"
{
yyval.tag.follow = false;
}
break;
case 80:
-#line 695 "gram.y"
+#line 694 "gram.y"
{
yyval.tag.send_mail = true;
}
break;
case 81:
-#line 698 "gram.y"
+#line 697 "gram.y"
{
yyval.tag.send_mail = false;
}
break;
case 82:
-#line 703 "gram.y"
+#line 702 "gram.y"
{
yyval.member = new_member(NULL, ALL);
if (yyval.member == NULL) {
}
break;
case 83:
-#line 710 "gram.y"
+#line 709 "gram.y"
{
yyval.member = new_member(yyvsp[0].string, ALIAS);
if (yyval.member == NULL) {
}
break;
case 84:
-#line 717 "gram.y"
+#line 716 "gram.y"
{
struct sudo_command *c = calloc(1, sizeof(*c));
if (c == NULL) {
}
break;
case 87:
-#line 738 "gram.y"
+#line 737 "gram.y"
{
const char *s;
s = alias_add(yyvsp[-2].string, HOSTALIAS, sudoers, this_lineno, yyvsp[0].member);
}
break;
case 89:
-#line 749 "gram.y"
+#line 748 "gram.y"
{
HLTQ_CONCAT(yyvsp[-2].member, yyvsp[0].member, entries);
yyval.member = yyvsp[-2].member;
}
break;
case 92:
-#line 759 "gram.y"
+#line 758 "gram.y"
{
const char *s;
s = alias_add(yyvsp[-2].string, CMNDALIAS, sudoers, this_lineno, yyvsp[0].member);
}
break;
case 94:
-#line 770 "gram.y"
+#line 769 "gram.y"
{
HLTQ_CONCAT(yyvsp[-2].member, yyvsp[0].member, entries);
yyval.member = yyvsp[-2].member;
}
break;
case 97:
-#line 780 "gram.y"
+#line 779 "gram.y"
{
const char *s;
s = alias_add(yyvsp[-2].string, RUNASALIAS, sudoers, this_lineno, yyvsp[0].member);
}
break;
case 100:
-#line 794 "gram.y"
+#line 793 "gram.y"
{
const char *s;
s = alias_add(yyvsp[-2].string, USERALIAS, sudoers, this_lineno, yyvsp[0].member);
}
break;
case 102:
-#line 805 "gram.y"
+#line 804 "gram.y"
{
HLTQ_CONCAT(yyvsp[-2].member, yyvsp[0].member, entries);
yyval.member = yyvsp[-2].member;
}
break;
case 103:
-#line 811 "gram.y"
+#line 810 "gram.y"
{
yyval.member = yyvsp[0].member;
yyval.member->negated = false;
}
break;
case 104:
-#line 815 "gram.y"
+#line 814 "gram.y"
{
yyval.member = yyvsp[0].member;
yyval.member->negated = true;
}
break;
case 105:
-#line 821 "gram.y"
+#line 820 "gram.y"
{
yyval.member = new_member(yyvsp[0].string, ALIAS);
if (yyval.member == NULL) {
}
break;
case 106:
-#line 828 "gram.y"
+#line 827 "gram.y"
{
yyval.member = new_member(NULL, ALL);
if (yyval.member == NULL) {
}
break;
case 107:
-#line 835 "gram.y"
+#line 834 "gram.y"
{
yyval.member = new_member(yyvsp[0].string, NETGROUP);
if (yyval.member == NULL) {
}
break;
case 108:
-#line 842 "gram.y"
+#line 841 "gram.y"
{
yyval.member = new_member(yyvsp[0].string, USERGROUP);
if (yyval.member == NULL) {
}
break;
case 109:
-#line 849 "gram.y"
+#line 848 "gram.y"
{
yyval.member = new_member(yyvsp[0].string, WORD);
if (yyval.member == NULL) {
}
break;
case 111:
-#line 859 "gram.y"
+#line 858 "gram.y"
{
HLTQ_CONCAT(yyvsp[-2].member, yyvsp[0].member, entries);
yyval.member = yyvsp[-2].member;
}
break;
case 112:
-#line 865 "gram.y"
+#line 864 "gram.y"
{
yyval.member = yyvsp[0].member;
yyval.member->negated = false;
}
break;
case 113:
-#line 869 "gram.y"
+#line 868 "gram.y"
{
yyval.member = yyvsp[0].member;
yyval.member->negated = true;
}
break;
case 114:
-#line 875 "gram.y"
+#line 874 "gram.y"
{
yyval.member = new_member(yyvsp[0].string, ALIAS);
if (yyval.member == NULL) {
}
break;
case 115:
-#line 882 "gram.y"
+#line 881 "gram.y"
{
yyval.member = new_member(NULL, ALL);
if (yyval.member == NULL) {
}
break;
case 116:
-#line 889 "gram.y"
+#line 888 "gram.y"
{
yyval.member = new_member(yyvsp[0].string, WORD);
if (yyval.member == NULL) {