]> granicus.if.org Git - sudo/commitdiff
add_defaults() now calls sudoerserror() itself instead of the caller
authorTodd C. Miller <Todd.Miller@courtesan.com>
Tue, 1 Nov 2016 20:13:47 +0000 (14:13 -0600)
committerTodd C. Miller <Todd.Miller@courtesan.com>
Tue, 1 Nov 2016 20:13:47 +0000 (14:13 -0600)
assuming any error means out of member.

plugins/sudoers/gram.c
plugins/sudoers/gram.y

index 7743bf8df470f2fb278b912e75df3c8b3b7897a4..9bd12bd8be2b43cc55819774bf59988d7e92fcff 100644 (file)
@@ -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;
index 54267861845da89d4f7293c891e184cfc4267f5a..1b087a9952eae60543f12923721246b77bed79a5 100644 (file)
@@ -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)