From: Todd C. Miller Date: Tue, 1 Nov 2016 20:13:47 +0000 (-0600) Subject: add_defaults() now calls sudoerserror() itself instead of the caller X-Git-Tag: SUDO_1_8_19^2~73 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=9de491dc277e0848b744292e2f8af14b5b76a0b8;p=sudo add_defaults() now calls sudoerserror() itself instead of the caller assuming any error means out of member. --- diff --git a/plugins/sudoers/gram.c b/plugins/sudoers/gram.c index 7743bf8df..9bd12bd8b 100644 --- a/plugins/sudoers/gram.c +++ b/plugins/sudoers/gram.c @@ -689,7 +689,7 @@ short *yysslim; YYSTYPE *yyvs; unsigned int yystacksize; int yyparse(void); -#line 859 "gram.y" +#line 849 "gram.y" void sudoerserror(const char *s) { @@ -810,6 +810,7 @@ add_defaults(int type, struct member *bmem, struct defaults *defs) if ((binding = malloc(sizeof(*binding))) == NULL) { sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, "unable to allocate memory"); + sudoerserror(N_("unable to allocate memory")); debug_return_bool(false); } if (bmem != NULL) @@ -993,7 +994,7 @@ init_parser(const char *path, bool quiet) debug_return_bool(ret); } -#line 944 "gram.c" +#line 945 "gram.c" /* allocate initial stack or double stack size, up to YYMAXDEPTH */ #if defined(__cplusplus) || defined(__STDC__) static int yygrowstack(void) @@ -1253,57 +1254,47 @@ break; case 12: #line 199 "gram.y" { - if (!add_defaults(DEFAULTS, NULL, yyvsp[0].defaults)) { - sudoerserror(N_("unable to allocate memory")); + if (!add_defaults(DEFAULTS, NULL, yyvsp[0].defaults)) YYERROR; - } } 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")); + if (!add_defaults(DEFAULTS_USER, yyvsp[-1].member, yyvsp[0].defaults)) YYERROR; - } } break; case 14: -#line 211 "gram.y" +#line 207 "gram.y" { - if (!add_defaults(DEFAULTS_RUNAS, yyvsp[-1].member, yyvsp[0].defaults)) { - sudoerserror(N_("unable to allocate memory")); + if (!add_defaults(DEFAULTS_RUNAS, yyvsp[-1].member, yyvsp[0].defaults)) YYERROR; - } } break; case 15: -#line 217 "gram.y" +#line 211 "gram.y" { - if (!add_defaults(DEFAULTS_HOST, yyvsp[-1].member, yyvsp[0].defaults)) { - sudoerserror(N_("unable to allocate memory")); + if (!add_defaults(DEFAULTS_HOST, yyvsp[-1].member, yyvsp[0].defaults)) YYERROR; - } } break; case 16: -#line 223 "gram.y" +#line 215 "gram.y" { - if (!add_defaults(DEFAULTS_CMND, yyvsp[-1].member, yyvsp[0].defaults)) { - sudoerserror(N_("unable to allocate memory")); + if (!add_defaults(DEFAULTS_CMND, yyvsp[-1].member, yyvsp[0].defaults)) YYERROR; - } } break; case 18: -#line 232 "gram.y" +#line 222 "gram.y" { HLTQ_CONCAT(yyvsp[-2].defaults, yyvsp[0].defaults, entries); yyval.defaults = yyvsp[-2].defaults; } break; case 19: -#line 238 "gram.y" +#line 228 "gram.y" { yyval.defaults = new_default(yyvsp[0].string, NULL, true); if (yyval.defaults == NULL) { @@ -1313,7 +1304,7 @@ case 19: } break; case 20: -#line 245 "gram.y" +#line 235 "gram.y" { yyval.defaults = new_default(yyvsp[0].string, NULL, false); if (yyval.defaults == NULL) { @@ -1323,7 +1314,7 @@ case 20: } break; case 21: -#line 252 "gram.y" +#line 242 "gram.y" { yyval.defaults = new_default(yyvsp[-2].string, yyvsp[0].string, true); if (yyval.defaults == NULL) { @@ -1333,7 +1324,7 @@ case 21: } break; case 22: -#line 259 "gram.y" +#line 249 "gram.y" { yyval.defaults = new_default(yyvsp[-2].string, yyvsp[0].string, '+'); if (yyval.defaults == NULL) { @@ -1343,7 +1334,7 @@ case 22: } break; case 23: -#line 266 "gram.y" +#line 256 "gram.y" { yyval.defaults = new_default(yyvsp[-2].string, yyvsp[0].string, '-'); if (yyval.defaults == NULL) { @@ -1353,14 +1344,14 @@ case 23: } break; case 25: -#line 276 "gram.y" +#line 266 "gram.y" { HLTQ_CONCAT(yyvsp[-2].privilege, yyvsp[0].privilege, entries); yyval.privilege = yyvsp[-2].privilege; } break; case 26: -#line 282 "gram.y" +#line 272 "gram.y" { struct privilege *p = calloc(1, sizeof(*p)); if (p == NULL) { @@ -1374,21 +1365,21 @@ case 26: } break; case 27: -#line 295 "gram.y" +#line 285 "gram.y" { yyval.member = yyvsp[0].member; yyval.member->negated = false; } break; case 28: -#line 299 "gram.y" +#line 289 "gram.y" { yyval.member = yyvsp[0].member; yyval.member->negated = true; } break; case 29: -#line 305 "gram.y" +#line 295 "gram.y" { yyval.member = new_member(yyvsp[0].string, ALIAS); if (yyval.member == NULL) { @@ -1398,7 +1389,7 @@ case 29: } break; case 30: -#line 312 "gram.y" +#line 302 "gram.y" { yyval.member = new_member(NULL, ALL); if (yyval.member == NULL) { @@ -1408,7 +1399,7 @@ case 30: } break; case 31: -#line 319 "gram.y" +#line 309 "gram.y" { yyval.member = new_member(yyvsp[0].string, NETGROUP); if (yyval.member == NULL) { @@ -1418,7 +1409,7 @@ case 31: } break; case 32: -#line 326 "gram.y" +#line 316 "gram.y" { yyval.member = new_member(yyvsp[0].string, NTWKADDR); if (yyval.member == NULL) { @@ -1428,7 +1419,7 @@ case 32: } break; case 33: -#line 333 "gram.y" +#line 323 "gram.y" { yyval.member = new_member(yyvsp[0].string, WORD); if (yyval.member == NULL) { @@ -1438,7 +1429,7 @@ case 33: } break; case 35: -#line 343 "gram.y" +#line 333 "gram.y" { struct cmndspec *prev; prev = HLTQ_LAST(yyvsp[-2].cmndspec, cmndspec, entries); @@ -1484,7 +1475,7 @@ case 35: } break; case 36: -#line 388 "gram.y" +#line 378 "gram.y" { struct cmndspec *cs = calloc(1, sizeof(*cs)); if (cs == NULL) { @@ -1533,7 +1524,7 @@ case 36: } break; case 37: -#line 436 "gram.y" +#line 426 "gram.y" { yyval.digest = new_digest(SUDO_DIGEST_SHA224, yyvsp[0].string); if (yyval.digest == NULL) { @@ -1543,7 +1534,7 @@ case 37: } break; case 38: -#line 443 "gram.y" +#line 433 "gram.y" { yyval.digest = new_digest(SUDO_DIGEST_SHA256, yyvsp[0].string); if (yyval.digest == NULL) { @@ -1553,7 +1544,7 @@ case 38: } break; case 39: -#line 450 "gram.y" +#line 440 "gram.y" { yyval.digest = new_digest(SUDO_DIGEST_SHA384, yyvsp[0].string); if (yyval.digest == NULL) { @@ -1563,7 +1554,7 @@ case 39: } break; case 40: -#line 457 "gram.y" +#line 447 "gram.y" { yyval.digest = new_digest(SUDO_DIGEST_SHA512, yyvsp[0].string); if (yyval.digest == NULL) { @@ -1573,13 +1564,13 @@ case 40: } break; case 41: -#line 466 "gram.y" +#line 456 "gram.y" { yyval.member = yyvsp[0].member; } break; case 42: -#line 469 "gram.y" +#line 459 "gram.y" { if (yyvsp[0].member->type != COMMAND) { sudoerserror(N_("a digest requires a path name")); @@ -1591,127 +1582,127 @@ case 42: } break; case 43: -#line 480 "gram.y" +#line 470 "gram.y" { yyval.member = yyvsp[0].member; yyval.member->negated = false; } break; case 44: -#line 484 "gram.y" +#line 474 "gram.y" { yyval.member = yyvsp[0].member; yyval.member->negated = true; } break; case 45: -#line 490 "gram.y" +#line 480 "gram.y" { yyval.string = yyvsp[0].string; } break; case 46: -#line 495 "gram.y" +#line 485 "gram.y" { yyval.string = yyvsp[0].string; } break; case 47: -#line 500 "gram.y" +#line 490 "gram.y" { yyval.seinfo.role = NULL; yyval.seinfo.type = NULL; } break; case 48: -#line 504 "gram.y" +#line 494 "gram.y" { yyval.seinfo.role = yyvsp[0].string; yyval.seinfo.type = NULL; } break; case 49: -#line 508 "gram.y" +#line 498 "gram.y" { yyval.seinfo.type = yyvsp[0].string; yyval.seinfo.role = NULL; } break; case 50: -#line 512 "gram.y" +#line 502 "gram.y" { yyval.seinfo.role = yyvsp[-1].string; yyval.seinfo.type = yyvsp[0].string; } break; case 51: -#line 516 "gram.y" +#line 506 "gram.y" { yyval.seinfo.type = yyvsp[-1].string; yyval.seinfo.role = yyvsp[0].string; } break; case 52: -#line 522 "gram.y" +#line 512 "gram.y" { yyval.string = yyvsp[0].string; } break; case 53: -#line 526 "gram.y" +#line 516 "gram.y" { yyval.string = yyvsp[0].string; } break; case 54: -#line 531 "gram.y" +#line 521 "gram.y" { yyval.privinfo.privs = NULL; yyval.privinfo.limitprivs = NULL; } break; case 55: -#line 535 "gram.y" +#line 525 "gram.y" { yyval.privinfo.privs = yyvsp[0].string; yyval.privinfo.limitprivs = NULL; } break; case 56: -#line 539 "gram.y" +#line 529 "gram.y" { yyval.privinfo.privs = NULL; yyval.privinfo.limitprivs = yyvsp[0].string; } break; case 57: -#line 543 "gram.y" +#line 533 "gram.y" { yyval.privinfo.privs = yyvsp[-1].string; yyval.privinfo.limitprivs = yyvsp[0].string; } break; case 58: -#line 547 "gram.y" +#line 537 "gram.y" { yyval.privinfo.limitprivs = yyvsp[-1].string; yyval.privinfo.privs = yyvsp[0].string; } break; case 59: -#line 553 "gram.y" +#line 543 "gram.y" { yyval.runas = NULL; } break; case 60: -#line 556 "gram.y" +#line 546 "gram.y" { yyval.runas = yyvsp[-1].runas; } break; case 61: -#line 561 "gram.y" +#line 551 "gram.y" { yyval.runas = calloc(1, sizeof(struct runascontainer)); if (yyval.runas != NULL) { @@ -1729,7 +1720,7 @@ case 61: } break; case 62: -#line 576 "gram.y" +#line 566 "gram.y" { yyval.runas = calloc(1, sizeof(struct runascontainer)); if (yyval.runas == NULL) { @@ -1741,7 +1732,7 @@ case 62: } break; case 63: -#line 585 "gram.y" +#line 575 "gram.y" { yyval.runas = calloc(1, sizeof(struct runascontainer)); if (yyval.runas == NULL) { @@ -1753,7 +1744,7 @@ case 63: } break; case 64: -#line 594 "gram.y" +#line 584 "gram.y" { yyval.runas = calloc(1, sizeof(struct runascontainer)); if (yyval.runas == NULL) { @@ -1765,7 +1756,7 @@ case 64: } break; case 65: -#line 603 "gram.y" +#line 593 "gram.y" { yyval.runas = calloc(1, sizeof(struct runascontainer)); if (yyval.runas != NULL) { @@ -1783,97 +1774,97 @@ case 65: } break; case 66: -#line 620 "gram.y" +#line 610 "gram.y" { TAGS_INIT(yyval.tag); } break; case 67: -#line 623 "gram.y" +#line 613 "gram.y" { yyval.tag.nopasswd = true; } break; case 68: -#line 626 "gram.y" +#line 616 "gram.y" { yyval.tag.nopasswd = false; } break; case 69: -#line 629 "gram.y" +#line 619 "gram.y" { yyval.tag.noexec = true; } break; case 70: -#line 632 "gram.y" +#line 622 "gram.y" { yyval.tag.noexec = false; } break; case 71: -#line 635 "gram.y" +#line 625 "gram.y" { yyval.tag.setenv = true; } break; case 72: -#line 638 "gram.y" +#line 628 "gram.y" { yyval.tag.setenv = false; } break; case 73: -#line 641 "gram.y" +#line 631 "gram.y" { yyval.tag.log_input = true; } break; case 74: -#line 644 "gram.y" +#line 634 "gram.y" { yyval.tag.log_input = false; } break; case 75: -#line 647 "gram.y" +#line 637 "gram.y" { yyval.tag.log_output = true; } break; case 76: -#line 650 "gram.y" +#line 640 "gram.y" { yyval.tag.log_output = false; } break; case 77: -#line 653 "gram.y" +#line 643 "gram.y" { yyval.tag.follow = true; } break; case 78: -#line 656 "gram.y" +#line 646 "gram.y" { yyval.tag.follow = false; } break; case 79: -#line 659 "gram.y" +#line 649 "gram.y" { yyval.tag.send_mail = true; } break; case 80: -#line 662 "gram.y" +#line 652 "gram.y" { yyval.tag.send_mail = false; } break; case 81: -#line 667 "gram.y" +#line 657 "gram.y" { yyval.member = new_member(NULL, ALL); if (yyval.member == NULL) { @@ -1883,7 +1874,7 @@ case 81: } break; case 82: -#line 674 "gram.y" +#line 664 "gram.y" { yyval.member = new_member(yyvsp[0].string, ALIAS); if (yyval.member == NULL) { @@ -1893,7 +1884,7 @@ case 82: } break; case 83: -#line 681 "gram.y" +#line 671 "gram.y" { struct sudo_command *c = calloc(1, sizeof(*c)); if (c == NULL) { @@ -1911,7 +1902,7 @@ case 83: } break; case 86: -#line 702 "gram.y" +#line 692 "gram.y" { const char *s; if ((s = alias_add(yyvsp[-2].string, HOSTALIAS, yyvsp[0].member)) != NULL) { @@ -1921,14 +1912,14 @@ case 86: } break; case 88: -#line 712 "gram.y" +#line 702 "gram.y" { HLTQ_CONCAT(yyvsp[-2].member, yyvsp[0].member, entries); yyval.member = yyvsp[-2].member; } break; case 91: -#line 722 "gram.y" +#line 712 "gram.y" { const char *s; if ((s = alias_add(yyvsp[-2].string, CMNDALIAS, yyvsp[0].member)) != NULL) { @@ -1938,14 +1929,14 @@ case 91: } break; case 93: -#line 732 "gram.y" +#line 722 "gram.y" { HLTQ_CONCAT(yyvsp[-2].member, yyvsp[0].member, entries); yyval.member = yyvsp[-2].member; } break; case 96: -#line 742 "gram.y" +#line 732 "gram.y" { const char *s; if ((s = alias_add(yyvsp[-2].string, RUNASALIAS, yyvsp[0].member)) != NULL) { @@ -1955,7 +1946,7 @@ case 96: } break; case 99: -#line 755 "gram.y" +#line 745 "gram.y" { const char *s; if ((s = alias_add(yyvsp[-2].string, USERALIAS, yyvsp[0].member)) != NULL) { @@ -1965,28 +1956,28 @@ case 99: } break; case 101: -#line 765 "gram.y" +#line 755 "gram.y" { HLTQ_CONCAT(yyvsp[-2].member, yyvsp[0].member, entries); yyval.member = yyvsp[-2].member; } break; case 102: -#line 771 "gram.y" +#line 761 "gram.y" { yyval.member = yyvsp[0].member; yyval.member->negated = false; } break; case 103: -#line 775 "gram.y" +#line 765 "gram.y" { yyval.member = yyvsp[0].member; yyval.member->negated = true; } break; case 104: -#line 781 "gram.y" +#line 771 "gram.y" { yyval.member = new_member(yyvsp[0].string, ALIAS); if (yyval.member == NULL) { @@ -1996,7 +1987,7 @@ case 104: } break; case 105: -#line 788 "gram.y" +#line 778 "gram.y" { yyval.member = new_member(NULL, ALL); if (yyval.member == NULL) { @@ -2006,7 +1997,7 @@ case 105: } break; case 106: -#line 795 "gram.y" +#line 785 "gram.y" { yyval.member = new_member(yyvsp[0].string, NETGROUP); if (yyval.member == NULL) { @@ -2016,7 +2007,7 @@ case 106: } break; case 107: -#line 802 "gram.y" +#line 792 "gram.y" { yyval.member = new_member(yyvsp[0].string, USERGROUP); if (yyval.member == NULL) { @@ -2026,7 +2017,7 @@ case 107: } break; case 108: -#line 809 "gram.y" +#line 799 "gram.y" { yyval.member = new_member(yyvsp[0].string, WORD); if (yyval.member == NULL) { @@ -2036,28 +2027,28 @@ case 108: } break; case 110: -#line 819 "gram.y" +#line 809 "gram.y" { HLTQ_CONCAT(yyvsp[-2].member, yyvsp[0].member, entries); yyval.member = yyvsp[-2].member; } break; case 111: -#line 825 "gram.y" +#line 815 "gram.y" { yyval.member = yyvsp[0].member; yyval.member->negated = false; } break; case 112: -#line 829 "gram.y" +#line 819 "gram.y" { yyval.member = yyvsp[0].member; yyval.member->negated = true; } break; case 113: -#line 835 "gram.y" +#line 825 "gram.y" { yyval.member = new_member(yyvsp[0].string, ALIAS); if (yyval.member == NULL) { @@ -2067,7 +2058,7 @@ case 113: } break; case 114: -#line 842 "gram.y" +#line 832 "gram.y" { yyval.member = new_member(NULL, ALL); if (yyval.member == NULL) { @@ -2077,7 +2068,7 @@ case 114: } break; case 115: -#line 849 "gram.y" +#line 839 "gram.y" { yyval.member = new_member(yyvsp[0].string, WORD); if (yyval.member == NULL) { @@ -2086,7 +2077,7 @@ case 115: } } break; -#line 2037 "gram.c" +#line 2028 "gram.c" } yyssp -= yym; yystate = *yyssp; diff --git a/plugins/sudoers/gram.y b/plugins/sudoers/gram.y index 542678618..1b087a995 100644 --- a/plugins/sudoers/gram.y +++ b/plugins/sudoers/gram.y @@ -197,34 +197,24 @@ entry : COMMENT { ; } | DEFAULTS defaults_list { - if (!add_defaults(DEFAULTS, NULL, $2)) { - sudoerserror(N_("unable to allocate memory")); + if (!add_defaults(DEFAULTS, NULL, $2)) YYERROR; - } } | DEFAULTS_USER userlist defaults_list { - if (!add_defaults(DEFAULTS_USER, $2, $3)) { - sudoerserror(N_("unable to allocate memory")); + if (!add_defaults(DEFAULTS_USER, $2, $3)) YYERROR; - } } | DEFAULTS_RUNAS userlist defaults_list { - if (!add_defaults(DEFAULTS_RUNAS, $2, $3)) { - sudoerserror(N_("unable to allocate memory")); + if (!add_defaults(DEFAULTS_RUNAS, $2, $3)) YYERROR; - } } | DEFAULTS_HOST hostlist defaults_list { - if (!add_defaults(DEFAULTS_HOST, $2, $3)) { - sudoerserror(N_("unable to allocate memory")); + if (!add_defaults(DEFAULTS_HOST, $2, $3)) YYERROR; - } } | DEFAULTS_CMND cmndlist defaults_list { - if (!add_defaults(DEFAULTS_CMND, $2, $3)) { - sudoerserror(N_("unable to allocate memory")); + if (!add_defaults(DEFAULTS_CMND, $2, $3)) YYERROR; - } } ; @@ -976,6 +966,7 @@ add_defaults(int type, struct member *bmem, struct defaults *defs) if ((binding = malloc(sizeof(*binding))) == NULL) { sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, "unable to allocate memory"); + sudoerserror(N_("unable to allocate memory")); debug_return_bool(false); } if (bmem != NULL)