[BACK]Return to ChangeLog CVS log [TXT][DIR] Up to [local] / src / usr.bin / sudo

Annotation of src/usr.bin/sudo/ChangeLog, Revision 1.1

1.1     ! millert     1: 2008-11-10 08:07  millert
        !             2:
        !             3:        * pathnames.h.in, sudo.c: s/overriden/overridden/; from Tobias
        !             4:          Stoeckmann
        !             5:
        !             6: 2008-11-09 15:18  millert
        !             7:
        !             8:        * visudo.c, WHATSNEW: check sudoers owner and mode in strict mode
        !             9:
        !            10: 2008-11-09 09:15  millert
        !            11:
        !            12:        * gram.c, toke.c: regen
        !            13:
        !            14: 2008-11-09 09:13  millert
        !            15:
        !            16:        * alias.c, alloc.c, closefrom.c, compat.h, defaults.c, defaults.h,
        !            17:          env.c, fileops.c, gettime.c, gram.y, ins_csops.h, insults.h,
        !            18:          interfaces.c, interfaces.h, lbuf.c, license.pod, list.c,
        !            19:          logging.c, logging.h, parse.c, parse.h, pwutil.c, redblack.c,
        !            20:          redblack.h, snprintf.c, sudo.c, sudo.pod, sudo_edit.c,
        !            21:          sudo_nss.h, testsudoers.c, toke.l, tsgetgrpw.c, utimes.c,
        !            22:          version.h, visudo.c, zero_bytes.c, LICENSE, sudoers.pod,
        !            23:          visudo.pod, auth/afs.c, auth/aix_auth.c, auth/bsdauth.c,
        !            24:          auth/fwtk.c, auth/kerb4.c, auth/kerb5.c, auth/pam.c,
        !            25:          auth/securid.c, auth/securid5.c, auth/sia.c, auth/sudo_auth.h,
        !            26:          sudo.man.in, sudoers.man.in, visudo.man.in: Update copyright
        !            27:          years.
        !            28:
        !            29: 2008-11-09 08:48  millert
        !            30:
        !            31:        * fnmatch.c, glob.c, emul/charclass.h: add my copyright
        !            32:
        !            33: 2008-11-08 10:40  millert
        !            34:
        !            35:        * toke.c, toke.l: The loop in fill_cmnd() was going one byte too
        !            36:          far past the end, resulting in a NUL being written immediately
        !            37:          after the buffer end.
        !            38:
        !            39: 2008-11-08 10:31  millert
        !            40:
        !            41:        * UPGRADE, WHATSNEW: add sections on tgetpass changes
        !            42:
        !            43: 2008-11-08 10:30  millert
        !            44:
        !            45:        * tgetpass.c: Treat EOF w/o newline as an error.
        !            46:
        !            47: 2008-11-07 17:42  millert
        !            48:
        !            49:        * parse.c: Fix "sudo -v" when NOPASSWD is set.
        !            50:
        !            51: 2008-11-07 12:45  millert
        !            52:
        !            53:        * auth/: bsdauth.c, fwtk.c, pam.c, sudo_auth.c, sudo_auth.h: No
        !            54:          longer treat an empty password at the prompt as special.  To quit
        !            55:          out of sudo you now need to hit ^C at the password prompt.
        !            56:
        !            57: 2008-11-06 21:07  millert
        !            58:
        !            59:        * sudoers.cat, sudoers.man.in: regen
        !            60:
        !            61: 2008-11-06 21:06  millert
        !            62:
        !            63:        * def_data.c, def_data.h, def_data.in, sudo.c, sudoers.pod: Sudo
        !            64:          will now refuse to run if no tty is present unless the new
        !            65:          visiblepw sudoers flag is set.
        !            66:
        !            67: 2008-11-05 19:42  millert
        !            68:
        !            69:        * aix.c: just use RLIM_INFINITY for RLIM_SAVED_MAX if
        !            70:          RLIM_SAVED_MAX not defined
        !            71:
        !            72: 2008-11-05 19:40  millert
        !            73:
        !            74:        * aix.c: fix fallback value for RLIM_SAVED_MAX
        !            75:
        !            76: 2008-11-05 19:14  millert
        !            77:
        !            78:        * auth/: aix_auth.c, sudo_auth.h: Move clearing of AUTHSTATE into
        !            79:          aixauth_cleanup.
        !            80:
        !            81: 2008-11-05 19:08  millert
        !            82:
        !            83:        * env.c, auth/aix_auth.c: Unset AUTHSTATE after calling
        !            84:          authenticate() as it may not be correct for the user we are
        !            85:          running the command as.
        !            86:
        !            87: 2008-11-05 19:05  millert
        !            88:
        !            89:        * isblank.c: Add isblank() function for systems without it.  Needed
        !            90:          for POSIX character class matching in fnmatch.c and glob.c.
        !            91:
        !            92: 2008-11-05 11:02  millert
        !            93:
        !            94:        * TROUBLESHOOTING: expound on sudo and cd
        !            95:
        !            96: 2008-11-04 15:52  millert
        !            97:
        !            98:        * ChangeLog: regen
        !            99:
        !           100: 2008-11-04 15:46  millert
        !           101:
        !           102:        * sudoers.cat, sudoers.man.in: regen
        !           103:
        !           104: 2008-11-04 15:45  millert
        !           105:
        !           106:        * sudoers.pod: mention defauts parse order
        !           107:
        !           108: 2008-11-03 13:19  millert
        !           109:
        !           110:        * Makefile.in, aclocal.m4, compat.h, configure: Add isblank()
        !           111:          function for systems without it.  Needed for POSIX character
        !           112:          class matching in fnmatch.c and glob.c.
        !           113:
        !           114: 2008-11-03 12:54  millert
        !           115:
        !           116:        * Makefile.in: add emul/charclass.h to HDRS
        !           117:
        !           118: 2008-11-02 14:08  millert
        !           119:
        !           120:        * TODO: checkpoint
        !           121:
        !           122: 2008-11-02 14:06  millert
        !           123:
        !           124:        * parse.c, defaults.c, testsudoers.c, visudo.c: Move
        !           125:          update_defaults into defaults.c and call it properly from visudo
        !           126:          and testsudoers.
        !           127:
        !           128: 2008-11-02 09:51  millert
        !           129:
        !           130:        * defaults.c, interfaces.c, pwutil.c, sudo.c, sudo_edit.c,
        !           131:          tgetpass.c, tsgetgrpw.c: use zero_bytes() instead of memset() for
        !           132:          consistency
        !           133:
        !           134: 2008-11-02 09:45  millert
        !           135:
        !           136:        * logging.c, mon_systrace.c, parse.c, sudo.c, sudo_edit.c,
        !           137:          tgetpass.c, visudo.c: Zero out sigaction_t before use in case it
        !           138:          has non-standard entries.
        !           139:
        !           140: 2008-11-02 09:35  millert
        !           141:
        !           142:        * match.c: quiet gcc
        !           143:
        !           144: 2008-11-02 09:28  millert
        !           145:
        !           146:        * match.c: Short circuit glob() checks if basename(pattern) !=
        !           147:          basename(command).  Refactor code that checks for a command in a
        !           148:          directory and use it in the glob case if the resolved pattern
        !           149:          ends in a '/'.
        !           150:
        !           151: 2008-11-01 09:20  millert
        !           152:
        !           153:        * defaults.h, parse.c, sudo.c, testsudoers.c, visudo.c: Defer
        !           154:          setting runas defaults until after runaspw/gr is setup.
        !           155:
        !           156: 2008-10-29 13:26  millert
        !           157:
        !           158:        * match.c, sudo.c, testsudoers.c: Use MAXHOSTNAMELEN+1 when
        !           159:          allocating host/domain name since some systems do not include
        !           160:          space for the NUL in the size.  Also manually NUL-terminate
        !           161:          buffer from gethostname() since POSIX is wishy-washy on this.
        !           162:
        !           163: 2008-10-26 17:13  millert
        !           164:
        !           165:        * sudo.c, sudoers.pod: When setting the umask, use the union of the
        !           166:          user's umask and the default value set in sudoers so that we
        !           167:          never lower the user's umask when running a command.
        !           168:
        !           169: 2008-10-26 16:43  millert
        !           170:
        !           171:        * sudo.c: Don't try to read from a zero-length sudoers file.
        !           172:          Remove the bogus Solaris work-around for EAGAIN.  Since we now
        !           173:          use fgetc() it should not be a problem.
        !           174:
        !           175: 2008-10-25 09:22  millert
        !           176:
        !           177:        * parse.c: In update_defaults() check the return value of
        !           178:          user*_matches against ALLOW so we don't inadvertantly match on
        !           179:          UNSPEC.
        !           180:
        !           181: 2008-10-24 09:52  millert
        !           182:
        !           183:        * sudo.cat, sudo.man.in, sudoers.cat, sudoers.ldap.cat,
        !           184:          sudoers.ldap.man.in, sudoers.man.in, visudo.cat, visudo.man.in:
        !           185:          regen man pages; no more hyphenation
        !           186:
        !           187: 2008-10-24 09:49  millert
        !           188:
        !           189:        * sudo.c: Don't error out on a zero-length sudoers file.  With the
        !           190:          advent of #include the user could create a situation where sudo
        !           191:          is unusable.
        !           192:
        !           193: 2008-10-23 12:06  millert
        !           194:
        !           195:        * config.h.in, configure, configure.in, auth/kerb5.c: Newer heimdal
        !           196:          has 2-argument krb5_get_init_creds_opt_free() like MIT krb5.
        !           197:          Really old heimdal has no krb5_get_init_creds_opt_alloc() at all.
        !           198:          Add configure tests to handle all the cases.
        !           199:
        !           200: 2008-10-08 17:28  millert
        !           201:
        !           202:        * sudo.pod: resort ENVIRONMENT
        !           203:
        !           204: 2008-10-08 17:09  millert
        !           205:
        !           206:        * sudoers.pod: document sudoers_locale
        !           207:
        !           208: 2008-10-08 16:56  millert
        !           209:
        !           210:        * sudo.pod, sudo_edit.c: add SUDO_EDITOR variable that sudoedit
        !           211:          uses in preference to VISUAL or EDITOR
        !           212:
        !           213: 2008-10-08 14:27  millert
        !           214:
        !           215:        * toke.c, toke.l: In fill_cmnd(), collapse any escaped
        !           216:          sudo-specific characters.  Allows character classes to be used in
        !           217:          pathnames.
        !           218:
        !           219: 2008-10-03 16:02  millert
        !           220:
        !           221:        * lbuf.c: fix typo in non-C89 function declaration
        !           222:
        !           223: 2008-10-03 15:56  millert
        !           224:
        !           225:        * sudoers.pod: Mention POSIX characters classes now that out
        !           226:          fnmatch() and glob() support them.
        !           227:
        !           228: 2008-10-03 15:55  millert
        !           229:
        !           230:        * sample.sudoers, sudoers.pod: Replace [A-z] (which won't match in
        !           231:          UTF8) with [A-Za-z] which is locale agnostic.
        !           232:
        !           233: 2008-10-03 10:02  millert
        !           234:
        !           235:        * parse.h: use __signed char if we are going to assign a negative
        !           236:          value since on Power, char is unsigned by default
        !           237:
        !           238: 2008-10-03 09:59  millert
        !           239:
        !           240:        * configure, configure.in, config.h.in: Add tests for __signed char
        !           241:          and signed char.
        !           242:
        !           243: 2008-10-03 09:19  millert
        !           244:
        !           245:        * aix.c: Fix AIX limit setting.  getuserattr() returns values in
        !           246:          disk blocks rather than bytes.  The default hard stack size in
        !           247:          newer AIX is RLIM_SAVED_MAX.  From Dale King.
        !           248:
        !           249: 2008-09-26 17:13  millert
        !           250:
        !           251:        * fnmatch.c, glob.c, emul/charclass.h: Add character class support
        !           252:          to included glob(3) and fnmatch(3).
        !           253:
        !           254: 2008-09-16 08:28  millert
        !           255:
        !           256:        * emul/fnmatch.h: Remove UCB advertising clause and some
        !           257:          compatibility defines.
        !           258:
        !           259: 2008-09-14 16:07  millert
        !           260:
        !           261:        * sudo_edit.c: Check EDITOR/VISUAL to make sure sudoedit is not
        !           262:          re-invoking itself or sudo.  This allows one to set EDITOR to
        !           263:          sudoedit without getting into an infinite loop of sudoedit
        !           264:          running itself until the path gets too big.
        !           265:
        !           266: 2008-09-13 20:45  millert
        !           267:
        !           268:        * def_data.c, def_data.h, def_data.in, defaults.c, sudo.c: Add
        !           269:          sudoers_locale Defaults option to override the default sudoers
        !           270:          locale of "C".
        !           271:
        !           272: 2008-09-13 14:09  millert
        !           273:
        !           274:        * sudo.c: Set locale to system default except for during sudoers
        !           275:          parse.
        !           276:
        !           277: 2008-09-12 09:34  millert
        !           278:
        !           279:        * match.c: Redo change in 1.34 to use pointer arithmetic.
        !           280:
        !           281: 2008-09-11 07:06  millert
        !           282:
        !           283:        * match.c: Fix a dereference (read) of a freed pointer.  Reported
        !           284:          by Patrick Williams.
        !           285:
        !           286: 2008-08-23 19:09  millert
        !           287:
        !           288:        * sudo.c: Set locale to "C" to avoid interpretation issues with
        !           289:          character ranges in sudoers.  May want to make the locale a
        !           290:          sudoers option in the future.
        !           291:
        !           292: 2008-08-20 07:45  millert
        !           293:
        !           294:        * config.h.in: we no longer use setproctitle
        !           295:
        !           296: 2008-08-20 07:41  millert
        !           297:
        !           298:        * sudo.h: remove #if 1
        !           299:
        !           300: 2008-08-20 07:40  millert
        !           301:
        !           302:        * LICENSE, mkstemp.c: Use my replacement mkstemp() from the mktemp
        !           303:          package.
        !           304:
        !           305: 2008-07-12 08:53  millert
        !           306:
        !           307:        * gram.c: regen with yacc skeleton bug fixed
        !           308:
        !           309: 2008-07-12 08:48  millert
        !           310:
        !           311:        * sudoers.pod: Remove duplicate "as root".  From Martin Toft.
        !           312:
        !           313: 2008-07-02 06:27  millert
        !           314:
        !           315:        * pwutil.c, sudo.c, testsudoers.c, sudo.h: Flesh out the fake
        !           316:          passwd entry used for running commands as a uid not listed in the
        !           317:          passwd database.  Fixes an issue with some PAM modules.
        !           318:
        !           319: 2008-07-01 07:57  millert
        !           320:
        !           321:        * sudo.c: Error out in -i mode if the user has no shell.  This can
        !           322:          happen when running commands as a uid with no password entry.
        !           323:
        !           324: 2008-06-26 07:49  millert
        !           325:
        !           326:        * toke.c, toke.l: Better fix for line continuation inside double
        !           327:          quotes.  Now accepts whitespace between the backslash and the
        !           328:          newline like the main lexer.
        !           329:
        !           330: 2008-06-25 14:31  millert
        !           331:
        !           332:        * toke.c, toke.l: Fix line continuation in strings.  It was only
        !           333:          being honored if preceded by whitespace.
        !           334:
        !           335: 2008-06-22 16:19  millert
        !           336:
        !           337:        * config.h.in, configure, configure.in, logging.c: Replace the
        !           338:          double fork with a fork + daemonize.
        !           339:
        !           340: 2008-06-21 14:59  millert
        !           341:
        !           342:        * env.c, sudo.c: The -i flag should imply env_reset.  This got
        !           343:          broken in sudo 1.6.9.
        !           344:
        !           345: 2008-06-20 20:34  millert
        !           346:
        !           347:        * logging.c, sudo.c, sudo_edit.c, visudo.c: Change how the mailer
        !           348:          is waited for.  Instead of having a SIGCHLD handler, use the
        !           349:          double fork trick to orphan the child that opens the pipe to
        !           350:          sendmail.  Fixes a problem running su on some Linux distros.
        !           351:
        !           352: 2008-06-20 17:16  millert
        !           353:
        !           354:        * configure, configure.in: Fix configure test for dirfd() on Linux
        !           355:          where DIR is opaque.
        !           356:
        !           357: 2008-06-17 17:42  millert
        !           358:
        !           359:        * tgetpass.c: Get rid of the QNX TCSAFLUSH -> TCSADRAIN hack.  If
        !           360:          QNX still has this problem we'll need to revisit this again.
        !           361:
        !           362: 2008-06-10 21:13  millert
        !           363:
        !           364:        * logging.c: Ignore SIGPIPE instead of blocking it when piping to
        !           365:          the mailer.  If we only block the signal it may be delivered
        !           366:          later when we unblock.  Also, there is no need to block SIGCHLD
        !           367:          since we no longer do the double fork.  The normal SIGCHLD
        !           368:          handler is sufficient.
        !           369:
        !           370: 2008-06-08 17:37  millert
        !           371:
        !           372:        * configure, configure.in: Add description for NO_PAM_SESSION, from
        !           373:          a redhat patch.
        !           374:
        !           375: 2008-06-06 09:36  millert
        !           376:
        !           377:        * sudo.cat, sudo.man.in, sudo.pod: Fix typos in -i usage
        !           378:
        !           379: 2008-05-18 13:54  millert
        !           380:
        !           381:        * configure, configure.in: Redo the test for dgettext() in a way
        !           382:          that hopefully will work around the libintl_dgettext() undefined
        !           383:          problem.
        !           384:
        !           385: 2008-05-11 09:21  millert
        !           386:
        !           387:        * schema.ActiveDirectory: change filename in comment
        !           388:
        !           389: 2008-05-10 09:18  millert
        !           390:
        !           391:        * Makefile.in, README.LDAP, sudoers.ldap.cat, sudoers.ldap.man.in,
        !           392:          sudoers.ldap.pod: Reference schema.ActiveDirectory
        !           393:
        !           394: 2008-05-09 14:49  millert
        !           395:
        !           396:        * schema.OpenLDAP, schema.iPlanet: Mark sudoRunAs as deprecated.
        !           397:
        !           398: 2008-05-09 14:48  millert
        !           399:
        !           400:        * schema.ActiveDirectory: add sudoRunAsUser and sudoRunAsGroup
        !           401:
        !           402: 2008-05-09 14:01  millert
        !           403:
        !           404:        * schema.ActiveDirectory: Active Directory schema by Chantal
        !           405:          Paradis and Eric Paquet
        !           406:
        !           407: 2008-05-08 17:54  millert
        !           408:
        !           409:        * parse.c: remove an XXX that was fixed
        !           410:
        !           411: 2008-05-08 12:53  millert
        !           412:
        !           413:        * ChangeLog: sync
        !           414:
        !           415: 2008-05-08 12:49  millert
        !           416:
        !           417:        * parse.c: Initialize tags to UNSPEC instead of def_* in "sudo -l"
        !           418:          mode.  This fixes a problem where the tag value printed was
        !           419:          influenced by defaults set in the first pass through the parser.
        !           420:
        !           421: 2008-05-03 21:29  millert
        !           422:
        !           423:        * Makefile.in, sudo.psf: No point in packaging the TODO file
        !           424:
        !           425: 2008-05-03 21:24  millert
        !           426:
        !           427:        * ChangeLog: sync
        !           428:
        !           429: 2008-05-02 20:53  millert
        !           430:
        !           431:        * WHATSNEW, def_data.c, def_data.h, def_data.in, env.c, sudo.c,
        !           432:          sudo.h, sudoers.cat, sudoers.man.in, sudoers.pod: Add env_file
        !           433:          Defaults option that is similar to /etc/environment on some
        !           434:          systems.
        !           435:
        !           436: 2008-05-02 16:38  millert
        !           437:
        !           438:        * Makefile.in, README, TODO, WHATSNEW, sudo.cat, sudo.man.in,
        !           439:          sudoers.cat, sudoers.ldap.cat, sudoers.ldap.man.in,
        !           440:          sudoers.man.in, version.h, visudo.cat, visudo.man.in: change
        !           441:          version to 1.7.0
        !           442:
        !           443: 2008-05-02 16:37  millert
        !           444:
        !           445:        * UPGRADE: initial valgrind pass done
        !           446:
        !           447: 2008-04-23 08:30  millert
        !           448:
        !           449:        * ldap.c: Fix typo/think in sudo_ldap_read_secret() when storing
        !           450:          the secret.
        !           451:
        !           452: 2008-04-11 10:03  millert
        !           453:
        !           454:        * ldap.c: define LDAPS_PORT if the system headers do not
        !           455:
        !           456: 2008-04-10 14:54  millert
        !           457:
        !           458:        * gram.c, gram.y: Fix another memory leak in init_parser().
        !           459:
        !           460: 2008-04-10 12:51  millert
        !           461:
        !           462:        * configure, configure.in: There was a missing space before the
        !           463:          ldap libs in SUDO_LIBS for some configurations.
        !           464:
        !           465: 2008-04-10 11:28  millert
        !           466:
        !           467:        * alias.c, gram.c, gram.y, toke.c, toke.l: Clean up some memory
        !           468:          leaks pointed out by valgrind.
        !           469:
        !           470: 2008-04-07 14:39  millert
        !           471:
        !           472:        * sudo.c: fix "sudo -s" broken by mode/flags breakout
        !           473:
        !           474: 2008-04-07 14:26  millert
        !           475:
        !           476:        * configure, configure.in: remove duplicate check for dgettext
        !           477:
        !           478: 2008-04-05 15:54  millert
        !           479:
        !           480:        * aix.c: Fall back to default stanza if no user-specific limit is
        !           481:          found.
        !           482:
        !           483: 2008-04-02 15:56  millert
        !           484:
        !           485:        * snprintf.c: include stdint.h if present
        !           486:
        !           487: 2008-04-02 15:28  millert
        !           488:
        !           489:        * snprintf.c: Use LLONG_MAX, not the old QUAD_MAX
        !           490:
        !           491: 2008-04-01 19:18  millert
        !           492:
        !           493:        * sudoers.ldap.pod: fix cut and pasto
        !           494:
        !           495: 2008-03-31 11:24  millert
        !           496:
        !           497:        * pwutil.c: Add #ifdef PURITY
        !           498:
        !           499: 2008-03-30 17:36  millert
        !           500:
        !           501:        * auth/bsdauth.c: remove useless cast
        !           502:
        !           503: 2008-03-27 19:07  millert
        !           504:
        !           505:        * ChangeLog: sync
        !           506:
        !           507: 2008-03-27 19:04  millert
        !           508:
        !           509:        * TODO: sync
        !           510:
        !           511: 2008-03-27 19:01  millert
        !           512:
        !           513:        * sudo.h: Split MODE_* defines into primary and flags.
        !           514:
        !           515: 2008-03-26 13:11  millert
        !           516:
        !           517:        * aix.c: It turns out the logic for getting AIX limits is more
        !           518:          convoluted than I realized and differs depending on whether the
        !           519:          soft and/or hard limits are defined.
        !           520:
        !           521: 2008-03-23 10:18  millert
        !           522:
        !           523:        * Makefile.in, configure, configure.in: Back out AIX-specific
        !           524:          change to set the sudo_noexec path to the .a file, we do really
        !           525:          want to use the .so file.  Since libtool doesn't do that
        !           526:          correctly, just install the .so file ourselves in the Makefile.
        !           527:
        !           528: 2008-03-23 10:12  millert
        !           529:
        !           530:        * install-sh: If the file given to install is a path, only use the
        !           531:          basename of the file when building the destination path.
        !           532:
        !           533: 2008-03-18 16:08  millert
        !           534:
        !           535:        * sudo.c: parse_args() cleanup: Sort command line options in the
        !           536:          getopt() switch The -U option requires a parameter Normalize a
        !           537:          few ISSET calls Split mode into mode and flags and retire the
        !           538:          now-obsolete excl variable
        !           539:
        !           540: 2008-03-18 16:04  millert
        !           541:
        !           542:        * WHATSNEW, check.c, sudo.c, sudo.cat, sudo.h, sudo.man.in,
        !           543:          sudo.pod, sudo_usage.h.in: Add -n (non-interactive) flag.
        !           544:
        !           545: 2008-03-18 15:59  millert
        !           546:
        !           547:        * sudo.c: Move version printing, etc. into a separate function.
        !           548:
        !           549: 2008-03-18 15:57  millert
        !           550:
        !           551:        * sudo.c: Don't try to cleanup nsswitch if it has not been
        !           552:          initialized.
        !           553:
        !           554: 2008-03-17 11:09  millert
        !           555:
        !           556:        * logging.c: Block SIGPIPE in send_mail() so sudo is not killed by
        !           557:          a problem executing the mailer.
        !           558:
        !           559: 2008-03-14 08:11  millert
        !           560:
        !           561:        * configure.in, configure: AIX shared libs end in .a, not .so.
        !           562:
        !           563: 2008-03-13 07:34  millert
        !           564:
        !           565:        * env.c: Preserve HOME by default too. Matches documentation and
        !           566:          previous behavior.
        !           567:
        !           568: 2008-03-12 19:42  millert
        !           569:
        !           570:        * sudo.c: Use getopt() to parse the command line.  We need to be
        !           571:          able to intersperse env variables and options yet still honor
        !           572:          "--"" which complicates things slightly.
        !           573:
        !           574: 2008-03-06 14:46  millert
        !           575:
        !           576:        * ChangeLog: sync
        !           577:
        !           578: 2008-03-06 14:43  millert
        !           579:
        !           580:        * acsite.m4, configure, ltmain.sh: update to libtool-1.5.26
        !           581:
        !           582: 2008-03-06 14:32  millert
        !           583:
        !           584:        * config.guess, config.sub: update from libtool-1.5.26 distribution
        !           585:
        !           586: 2008-03-06 13:18  millert
        !           587:
        !           588:        * aix.c, sudo.h: attempt to fix compilation errors on AIX
        !           589:
        !           590: 2008-03-06 13:08  millert
        !           591:
        !           592:        * Makefile.in: fix typo in last commit
        !           593:
        !           594: 2008-03-06 13:07  millert
        !           595:
        !           596:        * Makefile.in: Add WHATSNEW file to the distribution
        !           597:
        !           598: 2008-03-06 12:43  millert
        !           599:
        !           600:        * visudo.c: use warningx instead of fprintf(stderr, ...)
        !           601:
        !           602: 2008-03-06 12:31  millert
        !           603:
        !           604:        * list.c: add DEBUG to list2tq
        !           605:
        !           606: 2008-03-06 12:28  millert
        !           607:
        !           608:        * ChangeLog, TODO: sync
        !           609:
        !           610: 2008-03-06 12:21  millert
        !           611:
        !           612:        * WHATSNEW: mention mailfrom
        !           613:
        !           614: 2008-03-06 12:19  millert
        !           615:
        !           616:        * Makefile.in, config.h.in, configure, configure.in, set_perms.c,
        !           617:          sudo.h, aix.c: Add aix_setlimits() to set resource limits on AIX
        !           618:          using a combination of getuserattr() and setrlimit().  Currently
        !           619:          untested.
        !           620:
        !           621: 2008-03-05 16:52  millert
        !           622:
        !           623:        * def_data.c, def_data.h, def_data.in, logging.c, sudoers.cat,
        !           624:          sudoers.pod, sudoers.man.in: Add mailfrom Defaults option that
        !           625:          sets the value of the From: field in the warning/error mail.  If
        !           626:          unset the login name of the invoking user is used.
        !           627:
        !           628: 2008-03-05 16:18  millert
        !           629:
        !           630:        * defaults.c: store a copy of _PATH_SUDO_ASKPASS in def_askpass
        !           631:          that is freeable
        !           632:
        !           633: 2008-03-05 15:19  millert
        !           634:
        !           635:        * gram.c, gram.y: When adding a default, only call list2tq() once
        !           636:          to do the list to tq conversion.  It is not legal to call list2tq
        !           637:          multiple times on the same list since list2tq consumes and
        !           638:          modifies the list argument.
        !           639:
        !           640: 2008-03-05 09:38  millert
        !           641:
        !           642:        * sudoers.ldap.cat, sudoers.ldap.man.in, sudoers.ldap.pod: comment
        !           643:          out XXXs for now
        !           644:
        !           645: 2008-03-05 09:36  millert
        !           646:
        !           647:        * WHATSNEW: mention askpass
        !           648:
        !           649: 2008-03-04 17:20  millert
        !           650:
        !           651:        * sudo.c: Error out if both -A and -S are specified Error out if -A
        !           652:          is specified but no askpass is configured
        !           653:
        !           654: 2008-03-04 17:16  millert
        !           655:
        !           656:        * configure, configure.in: we are not going to ship a sudo-specific
        !           657:          askpass
        !           658:
        !           659: 2008-03-03 14:30  millert
        !           660:
        !           661:        * sudo.h: fix definition of TGP_ASKPASS
        !           662:
        !           663: 2008-03-03 13:54  millert
        !           664:
        !           665:        * def_data.c, def_data.in: make askpass boolean-capable
        !           666:
        !           667: 2008-03-03 13:53  millert
        !           668:
        !           669:        * INSTALL: document --with-askpass
        !           670:
        !           671: 2008-03-02 19:27  millert
        !           672:
        !           673:        * sudo.cat, sudo.man.in, sudoers.cat, sudoers.man.in,
        !           674:          sudoers.ldap.cat, visudo.cat: regen
        !           675:
        !           676: 2008-03-02 17:31  millert
        !           677:
        !           678:        * sudo.pod, sudo_usage.h.in, sudoers.pod: document -A and askpass
        !           679:
        !           680: 2008-03-02 09:31  millert
        !           681:
        !           682:        * check.c, configure, configure.in, def_data.c, def_data.h,
        !           683:          def_data.in, defaults.c, pathnames.h.in, sudo.c, sudo.h,
        !           684:          sudo_usage.h.in, tgetpass.c, auth/sudo_auth.c: Add support for
        !           685:          running a helper program to read the password when no tty is
        !           686:          present (or when specified with the -A flag).  TODO: docs.
        !           687:
        !           688: 2008-03-02 08:38  millert
        !           689:
        !           690:        * def_data.c, def_data.in: add missing printf format to SELinux
        !           691:          role and type strings
        !           692:
        !           693: 2008-02-27 09:26  millert
        !           694:
        !           695:        * INSTALL, configure, configure.in: Disable use of
        !           696:          gss_krb5_ccache_name() by default and add
        !           697:          --enable-gss-krb5-ccache-name configure option to enable it.  It
        !           698:          seems that gss_krb5_ccache_name() doesn't work properly with some
        !           699:          combinations of Heimdal and OpenLDAP.
        !           700:
        !           701: 2008-02-22 15:33  millert
        !           702:
        !           703:        * selinux.c: Ignore setexeccon() failing in permissive mode.  Also
        !           704:          add a call to setkeycreatecon() (though this is probably
        !           705:          insufficient).  From Dan Walsh.
        !           706:
        !           707: 2008-02-22 15:19  millert
        !           708:
        !           709:        * auth/pam.c: Only set std_prompt for the PAM_PROMPT_* cases.  The
        !           710:          conversation function may be called for non-password reading
        !           711:          purposes so we must be careful not to use def_prompt in cases
        !           712:          where it may not be set.
        !           713:
        !           714: 2008-02-20 12:00  millert
        !           715:
        !           716:        * selinux.c: Don't free the new tty context, we need to keep it
        !           717:          around when we restore the tty context after the command
        !           718:          completes
        !           719:
        !           720: 2008-02-19 16:04  millert
        !           721:
        !           722:        * selinux.c: s/newrole/sudo/
        !           723:
        !           724: 2008-02-19 13:21  millert
        !           725:
        !           726:        * sudo.man.pl, sudo.pod: Only put login_cap(3) in SEE ALSO section
        !           727:          if we have login.conf support
        !           728:
        !           729: 2008-02-18 11:05  millert
        !           730:
        !           731:        * sudo.cat, sudo.man.in, sudoers.cat, sudoers.ldap.cat,
        !           732:          sudoers.ldap.man.in, sudoers.man.in, visudo.cat, visudo.man.in:
        !           733:          regen
        !           734:
        !           735: 2008-02-18 10:53  millert
        !           736:
        !           737:        * Makefile.in, configure, configure.in, sudo.man.pl, sudo.pod,
        !           738:          sudoers.man.pl, sudoers.pod: Substitute in comment characters for
        !           739:          lines partaining to login.conf, BSD auth and SELinux and only
        !           740:          enable them if pertinent.
        !           741:
        !           742: 2008-02-18 10:42  millert
        !           743:
        !           744:        * Makefile.in, sudo.pod, sudoers.ldap.pod, sudoers.pod, visudo.pod:
        !           745:          Remove the =cut on the first line (above the copyright notice) to
        !           746:          quiet pod2man.  Also remove the hackery in the FILES section and
        !           747:          just deal with the fact that there will a newline between each
        !           748:          pathname.
        !           749:
        !           750: 2008-02-17 08:19  millert
        !           751:
        !           752:        * Makefile.in: run sudo.man.pl when generating sudo.man.in
        !           753:
        !           754: 2008-02-17 08:11  millert
        !           755:
        !           756:        * configure, configure.in, sudo.man.pl: comment out SELinux manual
        !           757:          bits unless --with-selinux was specified
        !           758:
        !           759: 2008-02-17 08:04  millert
        !           760:
        !           761:        * sudoers.pod: document role and type defaults for SELinux
        !           762:
        !           763: 2008-02-16 20:26  millert
        !           764:
        !           765:        * sudo.c, sudo.cat, sudo.man.in, sudo.pod, sudo_usage.h.in:
        !           766:          Document "sudo -ll" and make "sudo -l -l" be equivalent.
        !           767:
        !           768: 2008-02-15 15:23  millert
        !           769:
        !           770:        * configure.in, configure: Treat k*bsd*-gnu like Linux, not BSD.
        !           771:          Fixes compilation problems on Debian GNU/kFreeBSD.
        !           772:
        !           773: 2008-02-13 17:17  millert
        !           774:
        !           775:        * auth/kerb5.c: Avoid Heimdal'isms introduced in the rev 1.32
        !           776:          rewrite of verify_krb_v5_tgt()
        !           777:
        !           778: 2008-02-13 07:28  millert
        !           779:
        !           780:        * logging.c, logging.h, sudo.c: Remove dependence on
        !           781:          VALIDATE_NOT_OK in logging functions.  Split log_auth() into
        !           782:          log_allowed() and log_denial() Replace mail_auth() with
        !           783:          should_mail() and a call to send_mail()
        !           784:
        !           785: 2008-02-10 18:06  millert
        !           786:
        !           787:        * ldap.c: Add debugging so we can tell if the krb5 ccache is
        !           788:          accessible
        !           789:
        !           790: 2008-02-10 17:34  millert
        !           791:
        !           792:        * INSTALL: mention --with-selinux
        !           793:
        !           794: 2008-02-09 09:48  millert
        !           795:
        !           796:        * configure: regen
        !           797:
        !           798: 2008-02-09 09:43  millert
        !           799:
        !           800:        * selinux.c: add Sudo tag
        !           801:
        !           802: 2008-02-09 09:30  millert
        !           803:
        !           804:        * Makefile.in, config.h.in, configure.in, def_data.c, def_data.h,
        !           805:          def_data.in, gram.c, gram.h, gram.y, ldap.c, parse.c, parse.h,
        !           806:          pathnames.h.in, selinux.c, sesh.c, sudo.c, sudo.cat, sudo.h,
        !           807:          sudo.man.in, sudo.pod, sudo_usage.h.in, sudoers.ldap.cat,
        !           808:          sudoers.ldap.man.in, sudoers.ldap.pod, testsudoers.c, toke.c,
        !           809:          toke.l: Add support for SELinux RBAC.  Sudoers entries may
        !           810:          specify a role and type.  There are also role and type defaults
        !           811:          that may be used.  To make sure a transition occurs, when using
        !           812:          RBAC commands are executed via the new sesh binary.  Based on
        !           813:          initial changes from Dan Walsh.
        !           814:
        !           815: 2008-02-08 08:18  millert
        !           816:
        !           817:        * lbuf.c, ldap.c, parse.c, sudo.c, sudo.h, sudo_nss.c: Add long
        !           818:          list (sudo -ll) support for printing verbose LDAP and sudoers
        !           819:          file entries.  Still need to update manual.
        !           820:
        !           821: 2008-02-03 10:43  millert
        !           822:
        !           823:        * ldap.c, parse.c, sudo.h, sudo_nss.c, sudo_nss.h: Unify the -l
        !           824:          output for file and ldap based sudoers and use lbufs for both.
        !           825:          The ldap output does not currently include options that cannot be
        !           826:          represented as tags.  This will be remedied in a long list output
        !           827:          mode to come.
        !           828:
        !           829: 2008-01-27 16:37  millert
        !           830:
        !           831:        * set_perms.c: Use a specific error message for errno == EAGAIN
        !           832:          when setuid() et al fails.  On Linux systems setuid() will fail
        !           833:          with errno set to EAGAIN if changing to the new uid would result
        !           834:          in a resource limit violation.
        !           835:
        !           836: 2008-01-27 16:34  millert
        !           837:
        !           838:        * sudo.c: Unlimit nproc on Linux systems where calling the setuid()
        !           839:          family of syscalls causes the nroc resource limit to be checked.
        !           840:          The limits will be reset by pam_limits.so when PAM is used.  In
        !           841:          the non-PAM case the nproc limit will remain unlimited but there
        !           842:          doesn't seem to be a way around that other than having sudo parse
        !           843:          /etc/security/limits.conf directly.
        !           844:
        !           845: 2008-01-27 16:31  millert
        !           846:
        !           847:        * env.c, sudo.c, sudo.pod: Only read /etc/environment on Linux and
        !           848:          AIX
        !           849:
        !           850: 2008-01-23 06:33  millert
        !           851:
        !           852:        * configure, configure.in: Use SUDO_DEFINE_UNQUOTED instead of
        !           853:          AC_DEFINE_UNQUOTED to prevent ldap.conf and ldap.secret paths
        !           854:          from going into config.h.  Avoid single quotes in variable
        !           855:          expansion when using SUDO_DEFINE_UNQUOTED since in some versions
        !           856:          of bash they will end up literally in the resulting define.
        !           857:
        !           858: 2008-01-21 13:22  millert
        !           859:
        !           860:        * README.LDAP: mention --with-nsswitch=no
        !           861:
        !           862: 2008-01-21 11:43  millert
        !           863:
        !           864:        * configure, configure.in: ldap_ssl.h depends on ldap.h being
        !           865:          included first
        !           866:
        !           867: 2008-01-21 11:07  millert
        !           868:
        !           869:        * configure, configure.in, ldap.c, config.h.in: Include ldap_ssl.h
        !           870:          if we can find it.  Needed for the ldapssl_set_strength defines
        !           871:          on HP-UX at least.
        !           872:
        !           873: 2008-01-21 10:02  millert
        !           874:
        !           875:        * TODO, sudoers.ldap.pod: sync
        !           876:
        !           877: 2008-01-21 10:01  millert
        !           878:
        !           879:        * sudo.cat, sudo.man.in, sudoers.cat, sudoers.ldap.cat,
        !           880:          sudoers.ldap.man.in, sudoers.man.in, visudo.cat, visudo.man.in:
        !           881:          regen
        !           882:
        !           883: 2008-01-21 10:00  millert
        !           884:
        !           885:        * Makefile.in: Use 78n line length when formatting cat pages.
        !           886:
        !           887: 2008-01-21 09:50  millert
        !           888:
        !           889:        * README.LDAP: Remove redundant info that is now in
        !           890:          sudoers.ldap.pod
        !           891:
        !           892: 2008-01-20 16:18  millert
        !           893:
        !           894:        * sudoers.ldap.cat, sudoers.ldap.man.in, sudoers.ldap.pod:
        !           895:          Reorganize the first section a bit.  Substitute the proper path
        !           896:          for /etc/sudoers.
        !           897:
        !           898: 2008-01-20 10:17  millert
        !           899:
        !           900:        * sudoers.ldap.cat, sudoers.ldap.man.in, sudoers.ldap.pod:
        !           901:          Substitute values for ldap.conf, ldap.secret and nsswitch.conf
        !           902:          Move schema into EXAMPLES
        !           903:
        !           904: 2008-01-20 10:15  millert
        !           905:
        !           906:        * configure.in, configure: Substitute values for ldap.conf,
        !           907:          ldap.secret and nsswitch.conf into sudoers.ldap.man.
        !           908:
        !           909: 2008-01-19 20:35  millert
        !           910:
        !           911:        * configure, configure.in: substitute for sudoers.ldap.man
        !           912:
        !           913: 2008-01-19 20:34  millert
        !           914:
        !           915:        * Makefile.in: Fix cut & pasto introduced when adding sudoers.ldap
        !           916:          man page.
        !           917:
        !           918: 2008-01-19 20:25  millert
        !           919:
        !           920:        * sudoers.ldap.pod, sudoers.ldap.cat, sudoers.ldap.man.in: Fill in
        !           921:          some of the missing pieces.  Still needs some reorganization and
        !           922:          editing.
        !           923:
        !           924: 2008-01-19 15:06  millert
        !           925:
        !           926:        * Makefile.in, sudoers.ldap.cat, sudoers.ldap.man.in,
        !           927:          sudoers.ldap.pod: Beginnings of a sudoers.ldap man page.
        !           928:          Currently, much of the information is adapted from README.LDAP.
        !           929:
        !           930: 2008-01-18 17:32  millert
        !           931:
        !           932:        * pwutil.c: When copying gr_mem we must guarantee that the storage
        !           933:          space for gr_mem is properly aligned.  The simplest way to do
        !           934:          this is to simply store gr_mem directly after struct group.  This
        !           935:          is not a problem for gr_passwd or gr_name as they are simple
        !           936:          strings.
        !           937:
        !           938: 2008-01-18 16:47  millert
        !           939:
        !           940:        * ldap.c: Fix a typo/thinko in one of the calls to
        !           941:          sudo_ldap_check_user_netgroup().  From Marco van Wieringen.
        !           942:
        !           943: 2008-01-17 15:44  millert
        !           944:
        !           945:        * config.h.in, configure, configure.in, ldap.c: include
        !           946:          <mps/ldap_ssl.h> in ldap.c if available
        !           947:
        !           948: 2008-01-16 18:20  millert
        !           949:
        !           950:        * gram.c, gram.y: Make sure we define SIZE_MAX for yacc's
        !           951:          skeleton.c
        !           952:
        !           953: 2008-01-16 13:03  millert
        !           954:
        !           955:        * tgetpass.c: Use TCSAFLUSH when restoring terminal settings (and
        !           956:          echo) to guarantee that any pending output is discarded
        !           957:
        !           958: 2008-01-15 17:18  millert
        !           959:
        !           960:        * sudoers: no longer need to specify SETENV when user has sudo ALL
        !           961:
        !           962: 2008-01-15 09:40  millert
        !           963:
        !           964:        * testsudoers.c: sync user_args size calculation with sudo.c Add -g
        !           965:          group option, renaming old -g to -G Add set_runasgr() and
        !           966:          set_runaspw() and use them
        !           967:
        !           968: 2008-01-15 09:23  millert
        !           969:
        !           970:        * sudo.h, sudo.c: Make set_runaspw static void
        !           971:
        !           972: 2008-01-15 09:17  millert
        !           973:
        !           974:        * testsudoers.c, visudo.c: g/c set_runaspw stub
        !           975:
        !           976: 2008-01-15 07:28  millert
        !           977:
        !           978:        * configure, configure.in: Don't add -llber twice.
        !           979:
        !           980: 2008-01-14 06:40  millert
        !           981:
        !           982:        * ldap.c: fix typo
        !           983:
        !           984: 2008-01-13 15:39  millert
        !           985:
        !           986:        * gram.c: regen
        !           987:
        !           988: 2008-01-13 14:57  millert
        !           989:
        !           990:        * configure, configure.in: Fix check that determines whether -llber
        !           991:          is required.
        !           992:
        !           993: 2008-01-13 14:22  millert
        !           994:
        !           995:        * config.h.in, configure, configure.in, README.LDAP, ldap.c: For
        !           996:          netscape-based LDAP, use ldapssl_set_strength() to implement the
        !           997:          checkpeer ldap.conf option.
        !           998:
        !           999: 2008-01-13 09:49  millert
        !          1000:
        !          1001:        * auth/kerb5.c: Delay krb5_cc_initialize() until we actually need
        !          1002:          to use the cred cache, which is what krb5_verify_user() does.
        !          1003:          Better cleanup on failure.
        !          1004:
        !          1005: 2008-01-12 12:40  millert
        !          1006:
        !          1007:        * auth/kerb5.c: Rewrite verify_krb_v5_tgt() based on what heimdal's
        !          1008:          krb5_verify_user() does.
        !          1009:
        !          1010: 2008-01-09 14:58  millert
        !          1011:
        !          1012:        * gram.c: The U suffix on constants is an ANSI feature
        !          1013:
        !          1014: 2008-01-09 12:08  millert
        !          1015:
        !          1016:        * configure.in, configure: Add check for ber_set_option() in -llber
        !          1017:
        !          1018: 2008-01-06 19:02  millert
        !          1019:
        !          1020:        * README.LDAP: default if no nsswitch.conf is files only
        !          1021:
        !          1022: 2008-01-06 17:28  millert
        !          1023:
        !          1024:        * README.LDAP: don't tell people to mail aaron about LDAP stuff
        !          1025:
        !          1026: 2008-01-06 12:32  millert
        !          1027:
        !          1028:        * README.LDAP: timelimit and bind_timelimit
        !          1029:
        !          1030: 2008-01-06 08:54  millert
        !          1031:
        !          1032:        * ChangeLog: sync
        !          1033:
        !          1034: 2008-01-06 07:56  millert
        !          1035:
        !          1036:        * ldap.c: Move ldap.secret reading into a separate function.
        !          1037:
        !          1038: 2008-01-05 19:09  millert
        !          1039:
        !          1040:        * check.c: user_runas -> runas_pw
        !          1041:
        !          1042: 2008-01-05 18:59  millert
        !          1043:
        !          1044:        * TODO: sync
        !          1045:
        !          1046: 2008-01-05 18:59  millert
        !          1047:
        !          1048:        * check.c, sudo.pod, sudoers.pod: Add and document the %p escape in
        !          1049:          the password prompt.  Based on a patch from Patrick Schoenfeld.
        !          1050:
        !          1051: 2008-01-05 18:25  millert
        !          1052:
        !          1053:        * ldap.c: Check strlcpy() return values.
        !          1054:
        !          1055: 2008-01-05 18:12  millert
        !          1056:
        !          1057:        * ldap.c: refactor ldap binding code into sudo_ldap_bind_s()
        !          1058:
        !          1059: 2008-01-05 16:35  millert
        !          1060:
        !          1061:        * README.LDAP: Make it clear that host and uri can take multiple
        !          1062:          parameters.  URI is now supported for more than just openldap
        !          1063:          nsswitch.conf does't accept "compat"
        !          1064:
        !          1065: 2008-01-05 16:27  millert
        !          1066:
        !          1067:        * sudo.c: comment cleanup and update (c) year
        !          1068:
        !          1069: 2008-01-05 16:25  millert
        !          1070:
        !          1071:        * parse.c, sudo_nss.c: Move display_privs() and display_cmnd() from
        !          1072:          parse.c to sudo_nss.c.  This should make it possible to build an
        !          1073:          LDAP-only sudo binary.
        !          1074:
        !          1075: 2008-01-05 13:27  millert
        !          1076:
        !          1077:        * ldap.c, parse.c, sudo.c, sudo.h, sudo_nss.h: Improve chaining of
        !          1078:          multiple sudoers sources by passing in the previous return value
        !          1079:          to the next in the chain
        !          1080:
        !          1081: 2008-01-05 13:26  millert
        !          1082:
        !          1083:        * gram.y: Free up parser data structures in sudo_file_close().
        !          1084:
        !          1085: 2008-01-05 08:13  millert
        !          1086:
        !          1087:        * gram.c, parse.c: Free up parser data structures in
        !          1088:          sudo_file_close().
        !          1089:
        !          1090: 2008-01-05 07:59  millert
        !          1091:
        !          1092:        * ldap.c: Parse uri ourself if no ldap_initialize() is present Use
        !          1093:          ldap_create() instead of deprecated ldap_init() Use
        !          1094:          ldap_sasl_bind_s() instead of deprecated ldap_simple_bind_s()
        !          1095:
        !          1096: 2008-01-05 07:56  millert
        !          1097:
        !          1098:        * config.h.in, configure, configure.in: Add check for
        !          1099:          ldap_sasl_bind_s() Remove -DLDAP_DEPRECATED from CFLAGS
        !          1100:
        !          1101: 2008-01-04 09:56  millert
        !          1102:
        !          1103:        * configure.in, configure, config.h.in: add check for ldap_create
        !          1104:
        !          1105: 2008-01-03 16:11  millert
        !          1106:
        !          1107:        * config.h.in, configure, configure.in, ldap.c: Add
        !          1108:          sudo_ldap_get_first_rdn() to return the first rdn of an entry's
        !          1109:          dn using the mechanism appropriate for the LDAP SDK in use.  Use
        !          1110:          ldap_unbind_ext_s() instead of deprecated ldap_unbind_s().
        !          1111:          Emulate ldap_unbind_ext_s() and ldap_search_ext_s() for SDK's
        !          1112:          without them.
        !          1113:
        !          1114: 2008-01-03 16:02  millert
        !          1115:
        !          1116:        * lbuf.c: include unistd.h
        !          1117:
        !          1118: 2008-01-03 11:05  millert
        !          1119:
        !          1120:        * config.h.in, configure.in: fix typo in mtim_getnsec
        !          1121:
        !          1122: 2008-01-02 15:29  millert
        !          1123:
        !          1124:        * config.h.in, configure.in, configure: add check for st__tim in
        !          1125:          struct stat as used by SCO
        !          1126:
        !          1127: 2008-01-02 11:05  millert
        !          1128:
        !          1129:        * ldap.c: use ldap_search_ext_s instead of deprecated ldap_search_s
        !          1130:
        !          1131: 2008-01-02 10:09  millert
        !          1132:
        !          1133:        * Makefile.in, TODO, sudo.cat, sudo.man.in: add sudo_nss.h to HDRS
        !          1134:
        !          1135: 2008-01-01 19:04  millert
        !          1136:
        !          1137:        * ldap.c: Replace deprecated ldap_explode_dn() with calls to
        !          1138:          ldap_str2dn() and ldap_rdn2str().
        !          1139:
        !          1140: 2008-01-01 18:37  millert
        !          1141:
        !          1142:        * ldap.c: Use ldap_get_values_len()/ldap_value_free_len() instead
        !          1143:          of the deprecated ldap_get_values()/ldap_value_free().
        !          1144:
        !          1145: 2008-01-01 17:07  millert
        !          1146:
        !          1147:        * TODO, ChangeLog: sync
        !          1148:
        !          1149: 2008-01-01 17:06  millert
        !          1150:
        !          1151:        * gettime.c, sudo.c: Remove some already fixed XXXs
        !          1152:
        !          1153: 2008-01-01 17:03  millert
        !          1154:
        !          1155:        * ldap.c: Same return value as non-existent sudoers if LDAP was
        !          1156:          unable to connect.
        !          1157:
        !          1158: 2008-01-01 16:52  millert
        !          1159:
        !          1160:        * sudo.pod: mention /etc/environment
        !          1161:
        !          1162: 2008-01-01 16:42  millert
        !          1163:
        !          1164:        * UPGRADE, WHATSNEW, README.LDAP: Update to reflect recent
        !          1165:          developments.
        !          1166:
        !          1167: 2008-01-01 16:42  millert
        !          1168:
        !          1169:        * sudo.c: Print nsswitch.conf, ldap.conf and ldap.secret paths in
        !          1170:          -V output.
        !          1171:
        !          1172: 2008-01-01 16:25  millert
        !          1173:
        !          1174:        * ldap.c: When building up a query don't list groups in the aux
        !          1175:          group vector that are the same as the passwd file group.  On most
        !          1176:          systems the first gid in the group vector is the same as the
        !          1177:          passwd entry gid.
        !          1178:
        !          1179: 2008-01-01 14:01  millert
        !          1180:
        !          1181:        * env.c, ldap.c: Define LDAPNOINIT before calling ldap_init(), etc.
        !          1182:          to disable user ldaprc and system defaults that could affect how
        !          1183:          LDAP works.
        !          1184:
        !          1185: 2008-01-01 13:21  millert
        !          1186:
        !          1187:        * INSTALL, configure, configure.in, pathnames.h.in, sudo.c,
        !          1188:          sudo_nss.c, sudo_nss.h: Rename read_nss -> sudo_read_nss Add
        !          1189:          --with-nsswitch to allow users to specify nsswitch.conf path or
        !          1190:          disable it.  If --with-nsswitch=no but --with-ldap, order is
        !          1191:          LDAP, then sudoers.  Fix --with-ldap-conf-file and
        !          1192:          --with-ldap-secret-file
        !          1193:
        !          1194: 2008-01-01 13:12  millert
        !          1195:
        !          1196:        * parse.c: Honor def_ignore_local_sudoers
        !          1197:
        !          1198: 2007-12-31 16:44  millert
        !          1199:
        !          1200:        * ldap.c: no longer need to check def_ignore_local_sudoers here
        !          1201:
        !          1202: 2007-12-31 16:36  millert
        !          1203:
        !          1204:        * parse.c: Refactor group vector resetting into a function and also
        !          1205:          call it from display_cmnd.  Stop after the first sucessful match
        !          1206:          in display_cmnd.  Print a newline between each display_privs
        !          1207:          method.
        !          1208:
        !          1209: 2007-12-31 16:23  millert
        !          1210:
        !          1211:        * parse.c: fix double free introduced in rev 1.218
        !          1212:
        !          1213: 2007-12-31 16:10  millert
        !          1214:
        !          1215:        * ldap.c: belt and suspenders; zero out result after freeing it
        !          1216:
        !          1217: 2007-12-31 15:04  millert
        !          1218:
        !          1219:        * env.c, fileops.c, ldap.c, sudo.h, sudo_nss.c: Refactor line
        !          1220:          reading into a separate function, sudo_parseln(), which removes
        !          1221:          comments, leading/trailing whitespace and newlines.  May want to
        !          1222:          rethink the use of sudo_parseln() for /etc/ldap.secret
        !          1223:
        !          1224: 2007-12-31 14:26  millert
        !          1225:
        !          1226:        * parse.c, sudo.c: Make the inability to read the sudoers file a
        !          1227:          non-fatal error if there are other sudoers sources available.
        !          1228:          sudoers_file_lookup now returns "not OK" if sudoers was not
        !          1229:          present
        !          1230:
        !          1231: 2007-12-31 14:24  millert
        !          1232:
        !          1233:        * ldap.c: make it clear that the global options are from LDAP
        !          1234:
        !          1235: 2007-12-31 14:13  millert
        !          1236:
        !          1237:        * logging.c: allocate proper amount of space for error string
        !          1238:
        !          1239: 2007-12-31 10:24  millert
        !          1240:
        !          1241:        * sudo_nss.c, sudo_nss.h: actual sudo nss code
        !          1242:
        !          1243: 2007-12-31 10:08  millert
        !          1244:
        !          1245:        * ldap.c, parse.c, sudo.c, sudo.h: nss-ify display_privs and
        !          1246:          display_cmnd.
        !          1247:
        !          1248: 2007-12-31 07:54  millert
        !          1249:
        !          1250:        * defaults.c, parse.c, testsudoers.c, visudo.c: move
        !          1251:          update_defaults() to parse.c
        !          1252:
        !          1253: 2007-12-31 07:39  millert
        !          1254:
        !          1255:        * Makefile.in, ldap.c, list.c, parse.c, parse.h, sudo.c, sudo.h:
        !          1256:          Use nsswitch to hide some sudoers vs. ldap implementation details
        !          1257:          and reduce the number of #ifdef LDAP TODO: fix display routines
        !          1258:          and error handling
        !          1259:
        !          1260: 2007-12-28 11:20  millert
        !          1261:
        !          1262:        * Makefile.in, README.LDAP, ldap.c, pathnames.h.in, sudo.c, sudo.h:
        !          1263:          First cut at nsswitch.conf support.  Further reorganizaton and
        !          1264:          related changes are forthcoming.
        !          1265:
        !          1266: 2007-12-21 16:53  millert
        !          1267:
        !          1268:        * env.c, pathnames.h.in, sudo.c, sudo.h: Add support for reading
        !          1269:          and /etc/environment file.  Still needs to be documented and
        !          1270:          should probably only applies to OSes that have it (AIX and Linux,
        !          1271:          maybe others).
        !          1272:
        !          1273: 2007-12-21 16:20  millert
        !          1274:
        !          1275:        * ldap.c: include limits.h
        !          1276:
        !          1277: 2007-12-20 10:02  millert
        !          1278:
        !          1279:        * WHATSNEW: reword LDAP SASL
        !          1280:
        !          1281: 2007-12-19 16:40  millert
        !          1282:
        !          1283:        * TODO: sync
        !          1284:
        !          1285: 2007-12-19 16:39  millert
        !          1286:
        !          1287:        * README.LDAP: Add an example sudoRole, clarify netscape vs.
        !          1288:          openldap a bit more
        !          1289:
        !          1290: 2007-12-19 14:42  millert
        !          1291:
        !          1292:        * README.LDAP: Be clear on what is OpenLDAP vs. Netscape-derived
        !          1293:
        !          1294: 2007-12-19 14:28  millert
        !          1295:
        !          1296:        * config.h.in, configure, configure.in, ldap.c: Use ldapssl_init()
        !          1297:          for ldaps support instead of trying to do it manually with
        !          1298:          ldap_init() + ldapssl_install_routines().  Use tls_cert and
        !          1299:          tls_key for cert7.db and key3.db respectively.  Don't print
        !          1300:          debugging info for options that are not set.  Add warning if
        !          1301:          start_tls specified when not supported.
        !          1302:
        !          1303: 2007-12-19 14:25  millert
        !          1304:
        !          1305:        * ldap.c: fix compilation on solaris
        !          1306:
        !          1307: 2007-12-19 14:23  millert
        !          1308:
        !          1309:        * Makefile.in: add missing .h and .c files for missing lib objs
        !          1310:
        !          1311: 2007-12-18 09:54  millert
        !          1312:
        !          1313:        * ldap.c: fix LDAP_OPT_NETWORK_TIMEOUT setting
        !          1314:
        !          1315: 2007-12-17 20:10  millert
        !          1316:
        !          1317:        * ldap.c: fix compilation on Solaris
        !          1318:
        !          1319: 2007-12-17 10:14  millert
        !          1320:
        !          1321:        * configure, configure.in: fix typo
        !          1322:
        !          1323: 2007-12-17 08:08  millert
        !          1324:
        !          1325:        * README.LDAP: try to clear up which variables are for OpenLDAP and
        !          1326:          which are for netscape-derived SDKs
        !          1327:
        !          1328: 2007-12-17 07:31  millert
        !          1329:
        !          1330:        * config.h.in, configure, configure.in, ldap.c: Add support for
        !          1331:          "ssl on" in both netscape and openldap flavors.  Only the
        !          1332:          OpenLDAP flavor has been tested.
        !          1333:
        !          1334: 2007-12-17 07:28  millert
        !          1335:
        !          1336:        * logging.c, sudo.c, sudo.h: Call cleanup() before exit in
        !          1337:          log_error() instead of calling sudo_ldap_close() directly.
        !          1338:          ldap_conn can now be static to sudo.c
        !          1339:
        !          1340: 2007-12-16 20:02  millert
        !          1341:
        !          1342:        * sudo.c: ld -> ldap_conn
        !          1343:
        !          1344: 2007-12-16 14:42  millert
        !          1345:
        !          1346:        * logging.c, sudo.c, sudo.h: Better ldap cleanup.
        !          1347:
        !          1348: 2007-12-16 14:08  millert
        !          1349:
        !          1350:        * ldap.c: Distinguish between LDAP conf settings that are
        !          1351:          connection-specific (which take an ld pointer) and those that are
        !          1352:          default settings (which do not).
        !          1353:
        !          1354: 2007-12-14 16:46  millert
        !          1355:
        !          1356:        * ldap.c: Improved warnings on error.
        !          1357:
        !          1358: 2007-12-14 15:59  millert
        !          1359:
        !          1360:        * ldap.c: Make ldap config table driven and set the config *after*
        !          1361:          we open the connection.
        !          1362:
        !          1363: 2007-12-13 16:41  millert
        !          1364:
        !          1365:        * ldap.c: fix LDAP_OPT_X_CONNECT_TIMEOUT compat define
        !          1366:
        !          1367: 2007-12-13 09:13  millert
        !          1368:
        !          1369:        * configure, configure.in: some operating systems need to link with
        !          1370:          -lkrb5support when using krb5
        !          1371:
        !          1372: 2007-12-10 17:12  millert
        !          1373:
        !          1374:        * WHATSNEW: minor update
        !          1375:
        !          1376: 2007-12-10 10:56  millert
        !          1377:
        !          1378:        * sudo.cat, sudo.man.in, sudoers.cat, sudoers.man.in: regen
        !          1379:
        !          1380: 2007-12-07 19:17  millert
        !          1381:
        !          1382:        * TODO, ChangeLog: sync
        !          1383:
        !          1384: 2007-12-07 19:09  millert
        !          1385:
        !          1386:        * ldap.c, schema.OpenLDAP, schema.iPlanet, sudoers2ldif: add -g
        !          1387:          support for LDAP
        !          1388:
        !          1389: 2007-12-03 11:36  millert
        !          1390:
        !          1391:        * WHATSNEW, sudo.c, sudo.pod, sudo_usage.h.in: The -i and -s flags
        !          1392:          can now take an optional command.
        !          1393:
        !          1394: 2007-12-02 12:13  millert
        !          1395:
        !          1396:        * def_data.c, def_data.h, def_data.in, sudo.c, sudo.pod,
        !          1397:          sudoers.pod, auth/pam.c: Add passprompt_override flag to sudoers
        !          1398:          that will cause the prompt to be overridden in all cases.  This
        !          1399:          flag is also set when the user specifies the -p flag.
        !          1400:
        !          1401: 2007-12-01 19:51  millert
        !          1402:
        !          1403:        * sudo.c: Move setting of login class until after sudoers has been
        !          1404:          parsed.  Set NewArgv[0] for -i after runas_pw has been set.
        !          1405:
        !          1406: 2007-12-01 19:34  millert
        !          1407:
        !          1408:        * configure, configure.in: Move the dgettext check.
        !          1409:
        !          1410: 2007-12-01 11:22  millert
        !          1411:
        !          1412:        * config.h.in, configure, configure.in, auth/pam.c: Add basic
        !          1413:          support for looking up the string "Password: " in the PAM
        !          1414:          localized text db.  This allows us to determine whether the PAM
        !          1415:          prompt is the default "Password: " one even if it has been
        !          1416:          localized.
        !          1417:
        !          1418:          TODO: concatenate non-std PAM prompts and user-specified sudo
        !          1419:          prompts.
        !          1420:
        !          1421: 2007-11-27 18:40  millert
        !          1422:
        !          1423:        * Makefile.in, config.h.in, configure.in, parse.c, set_perms.c,
        !          1424:          sudo.c, configure, sudo.h: Use AC_FUNC_GETGROUPS instead of a
        !          1425:          home-grown attempt that was insufficient.
        !          1426:
        !          1427: 2007-11-27 12:13  millert
        !          1428:
        !          1429:        * configure, acsite.m4, interfaces.c, memrchr.c: Fix typos;
        !          1430:          Martynas Venckus
        !          1431:
        !          1432: 2007-11-25 19:26  millert
        !          1433:
        !          1434:        * set_perms.c: Don't assume runas_pw is set; it may not be in the
        !          1435:          -g case.
        !          1436:
        !          1437: 2007-11-25 08:07  millert
        !          1438:
        !          1439:        * logging.c, set_perms.c: Set aux group vector for PERM_RUNAS and
        !          1440:          restore group vector for PERM_ROOT if we previously changed it.
        !          1441:          Stash the runas group vector so we don't have to call initgroups
        !          1442:          more than once. Also add no-op check to check_perms.
        !          1443:
        !          1444: 2007-11-21 15:11  millert
        !          1445:
        !          1446:        * WHATSNEW, check.c, def_data.in, defaults.c, gram.c, gram.h,
        !          1447:          gram.y, ldap.c, logging.c, match.c, mon_systrace.c, parse.c,
        !          1448:          parse.h, pwutil.c, set_perms.c, sudo.c, sudo.cat, sudo.h,
        !          1449:          sudo.man.in, sudo.pod, sudo_usage.h.in, sudoers.cat,
        !          1450:          sudoers.man.in, sudoers.pod, testsudoers.c, toke.c, visudo.c,
        !          1451:          visudo.cat, visudo.man.in: Add support for runas groups.  This
        !          1452:          allows the user to run a command with a different effective
        !          1453:          group.  If the -g option is specified without -u the command will
        !          1454:          be run as the current user (only the group will change).  the -g
        !          1455:          and -u options may be used together.  TODO: implement runas group
        !          1456:          for ldap       improve runas group documentation       add
        !          1457:          testsudoers support
        !          1458:
        !          1459: 2007-11-21 15:02  millert
        !          1460:
        !          1461:        * configure, configure.in: fix setting of mandir
        !          1462:
        !          1463: 2007-11-21 14:26  millert
        !          1464:
        !          1465:        * sudo.pod, sudoers.pod: document that ALL implies SETENV
        !          1466:
        !          1467: 2007-11-21 13:50  millert
        !          1468:
        !          1469:        * ldap.c: s/setenv_ok/setenv_implied/g
        !          1470:
        !          1471: 2007-11-21 13:44  millert
        !          1472:
        !          1473:        * ldap.c: hostname_matches() returns TRUE on match in sudo 1.7.
        !          1474:
        !          1475: 2007-11-21 13:26  millert
        !          1476:
        !          1477:        * ldap.c: use strcmp, not strcasecmp when comparing ALL
        !          1478:
        !          1479: 2007-11-21 11:41  millert
        !          1480:
        !          1481:        * ldap.c: Make sudo ALL imply setenv.  Note that unlike with
        !          1482:          file-based sudoers this does affect all the commands in the
        !          1483:          sudoRole.
        !          1484:
        !          1485: 2007-11-21 11:05  millert
        !          1486:
        !          1487:        * gram.c, gram.y, parse.c, parse.h: sudo "ALL" now implies the
        !          1488:          SETENV tag but, unlike an explicit tag, it is not passed on to
        !          1489:          other commands in the list.
        !          1490:
        !          1491: 2007-11-21 11:02  millert
        !          1492:
        !          1493:        * visudo.c: Add missing sudo_setpwent() and sudo_setgrent() calls.
        !          1494:          Also use sudo_getpwuid() instead of getpwuid().
        !          1495:
        !          1496: 2007-11-15 11:16  millert
        !          1497:
        !          1498:        * sudoers: Expand on the dangers of not using visudo to edit
        !          1499:          sudoers.
        !          1500:
        !          1501: 2007-11-08 07:24  millert
        !          1502:
        !          1503:        * parse.c: Don't quote *?[]! on output since the lexer does not
        !          1504:          strip off the backslash when reading those in.
        !          1505:
        !          1506: 2007-11-07 13:16  millert
        !          1507:
        !          1508:        * glob.c: expand "u_foo" types to "unsigned foo" to avoid
        !          1509:          compatibility issues.
        !          1510:
        !          1511: 2007-11-04 08:33  millert
        !          1512:
        !          1513:        * logging.c: Refactor log line generation in to new_logline().
        !          1514:
        !          1515: 2007-10-25 09:23  millert
        !          1516:
        !          1517:        * TROUBLESHOOTING: fix typo
        !          1518:
        !          1519: 2007-10-24 12:41  millert
        !          1520:
        !          1521:        * config.h.in, configure, configure.in, interfaces.c, interfaces.h,
        !          1522:          match.c: Add configure check for struct in6_addr instead of
        !          1523:          relying on AF_INET6 since some systems define AF_INET6 but do not
        !          1524:          include IPv6 support.
        !          1525:
        !          1526: 2007-10-21 09:29  millert
        !          1527:
        !          1528:        * configure, configure.in: Fix block to add -lutil for FreeBSD and
        !          1529:          NetBSD when logincap is in use.
        !          1530:
        !          1531: 2007-10-19 22:28  millert
        !          1532:
        !          1533:        * configure, configure.in: POSIX states that struct timespec be
        !          1534:          declared in time.h so check there regardless of the value of
        !          1535:          TIME_WITH_SYS_TIME.
        !          1536:
        !          1537: 2007-10-17 11:37  millert
        !          1538:
        !          1539:        * tgetpass.c: Instead of defining a macro to call the appropriate
        !          1540:          method for turning on/off echo, just define tc[gs]etattr() and
        !          1541:          the related defines that use the correct terminal ioctls if
        !          1542:          needed.  Also go back to using TCSAFLUSH instead of TCSADRAIN on
        !          1543:          all but QNX.
        !          1544:
        !          1545: 2007-10-08 20:18  millert
        !          1546:
        !          1547:        * Makefile.in: g/c @ALLOCA@
        !          1548:
        !          1549: 2007-10-08 20:07  millert
        !          1550:
        !          1551:        * configure: regen
        !          1552:
        !          1553: 2007-10-08 20:04  millert
        !          1554:
        !          1555:        * INSTALL, config.h.in, configure.in, auth/pam.c: Add
        !          1556:          --disable-pam-session configure option to disable calling
        !          1557:          pam_{open,close}_session.  May work around bugs in some PAM
        !          1558:          implementations.
        !          1559:
        !          1560: 2007-10-08 12:00  millert
        !          1561:
        !          1562:        * tgetpass.c: quiet gcc warnings
        !          1563:
        !          1564: 2007-10-08 08:41  millert
        !          1565:
        !          1566:        * tgetpass.c: Avoid printing the prompt if we are already
        !          1567:          backgrounded.  E.g. if the user runs "sudo foo &" from the shell.
        !          1568:          In this case, the call to tcsetattr() will cause SIGTTOU to be
        !          1569:          delivered.
        !          1570:
        !          1571: 2007-09-15 16:07  millert
        !          1572:
        !          1573:        * def_data.c, def_data.h, def_data.in: Reorder things such that the
        !          1574:          definition of env_reset come right before the env variable lists.
        !          1575:
        !          1576: 2007-09-15 07:50  millert
        !          1577:
        !          1578:        * parse.h: Shrink type and seqno in struct alias from int to
        !          1579:          u_short
        !          1580:
        !          1581: 2007-09-15 07:24  millert
        !          1582:
        !          1583:        * alias.c, match.c, parse.c, parse.h: Add a sequence number in the
        !          1584:          aliases for loop detection.  If we find an alias with the seqno
        !          1585:          already set to the current (global) value we know we've visited
        !          1586:          it before so ignore it.
        !          1587:
        !          1588: 2007-09-13 19:05  millert
        !          1589:
        !          1590:        * TODO, sudo.c, sudo.h, auth/pam.c: PAM wants the full tty path so
        !          1591:          add user_ttypath which holds the full path to the tty or is NULL
        !          1592:          if no tty was present.
        !          1593:
        !          1594: 2007-09-13 18:42  millert
        !          1595:
        !          1596:        * auth/pam.c: Set PAM_RHOST to work around a bug in Solaris 7 and
        !          1597:          lower that results in a segv.
        !          1598:
        !          1599: 2007-09-11 15:43  millert
        !          1600:
        !          1601:        * gram.c: regen
        !          1602:
        !          1603: 2007-09-11 15:42  millert
        !          1604:
        !          1605:        * alias.c, defaults.c, gram.y, list.c, list.h, match.c, parse.c,
        !          1606:          parse.h, testsudoers.c, visudo.c: rename lh_ -> tq_
        !          1607:
        !          1608: 2007-09-10 17:33  millert
        !          1609:
        !          1610:        * alloc.c: remove some useless casts
        !          1611:
        !          1612: 2007-09-10 17:32  millert
        !          1613:
        !          1614:        * alloc.c: pull in inttypes.h for SIZE_MAX; we avoid stdint.h since
        !          1615:          inttypes.h predates the final C99 spec and the standard specifies
        !          1616:          that it shall include stdint.h anyway
        !          1617:
        !          1618: 2007-09-06 12:39  millert
        !          1619:
        !          1620:        * Makefile.in, alloca.c, configure.in: Since we ship with a
        !          1621:          pre-generated parser there is no need to ship a bogus alloca
        !          1622:          implementation.
        !          1623:
        !          1624: 2007-09-06 12:22  millert
        !          1625:
        !          1626:        * configure: regen
        !          1627:
        !          1628: 2007-09-06 12:19  millert
        !          1629:
        !          1630:        * configure.in: remove initial setting of CHECKSIA, we require that
        !          1631:          it be unset if not used
        !          1632:
        !          1633: 2007-09-06 11:55  millert
        !          1634:
        !          1635:        * Makefile.in: add list.c to SRCS
        !          1636:
        !          1637: 2007-09-06 07:18  millert
        !          1638:
        !          1639:        * configure: regen
        !          1640:
        !          1641: 2007-09-06 07:17  millert
        !          1642:
        !          1643:        * configure.in: only do SIA checks on Digital Unix
        !          1644:
        !          1645: 2007-09-05 18:50  millert
        !          1646:
        !          1647:        * sudoers.cat, sudoers.man.in: regen
        !          1648:
        !          1649: 2007-09-05 18:48  millert
        !          1650:
        !          1651:        * ChangeLog, TODO: sync
        !          1652:
        !          1653: 2007-09-05 18:39  millert
        !          1654:
        !          1655:        * auth/kerb5.c: Remove call to krb5_cc_register() as it is not
        !          1656:          needed for modern kerb5.
        !          1657:
        !          1658: 2007-09-05 18:16  millert
        !          1659:
        !          1660:        * configure: regen
        !          1661:
        !          1662: 2007-09-05 18:16  millert
        !          1663:
        !          1664:        * configure.in, aclocal.m4: New method for setting the default
        !          1665:          authentication type and avoiding conflicts in auth types.
        !          1666:
        !          1667: 2007-09-05 14:45  millert
        !          1668:
        !          1669:        * match.c, parse.c, testsudoers.c: Each entry in a cmndlist now has
        !          1670:          an associated runaslist so no need to keep track of the most
        !          1671:          recent non-NULL one.
        !          1672:
        !          1673: 2007-09-04 18:51  millert
        !          1674:
        !          1675:        * ldap.c: back out partial ldaps support mistakenly committed
        !          1676:
        !          1677: 2007-09-04 10:57  millert
        !          1678:
        !          1679:        * ldap.c: Add support for unix groups and netgroups in sudoRunas
        !          1680:
        !          1681: 2007-09-03 16:28  millert
        !          1682:
        !          1683:        * sudo_edit.c: Fix sudoedit of a non-existent file.  From Tilo
        !          1684:          Stritzky.
        !          1685:
        !          1686: 2007-09-02 17:05  millert
        !          1687:
        !          1688:        * configure: regen
        !          1689:
        !          1690: 2007-09-02 17:05  millert
        !          1691:
        !          1692:        * INSTALL: update --passprompt escape info
        !          1693:
        !          1694: 2007-09-02 17:03  millert
        !          1695:
        !          1696:        * configure.in: remove now-bogus comment and update copyright date
        !          1697:
        !          1698: 2007-09-02 16:35  millert
        !          1699:
        !          1700:        * configure.in: Fix up use of with_passwd
        !          1701:
        !          1702: 2007-09-02 16:25  millert
        !          1703:
        !          1704:        * acsite.m4, config.guess, config.sub, configure.in, ltmain.sh:
        !          1705:          Update to autoconf-2.61 andf libtool-1.5.24
        !          1706:
        !          1707: 2007-09-02 16:17  millert
        !          1708:
        !          1709:        * Makefile.in: "cmp -s" not just cmp Add @datarootdir@ to quiet
        !          1710:          autoconf-2.61
        !          1711:
        !          1712: 2007-09-01 17:39  millert
        !          1713:
        !          1714:        * gram.c: regen
        !          1715:
        !          1716: 2007-09-01 17:39  millert
        !          1717:
        !          1718:        * gram.y: move tags and runaslist propagation to be earlier
        !          1719:
        !          1720: 2007-09-01 09:34  millert
        !          1721:
        !          1722:        * visudo.c: If -f flag given use the permissions of the original
        !          1723:          file as a template
        !          1724:
        !          1725: 2007-09-01 08:45  millert
        !          1726:
        !          1727:        * gram.y: prevent a double free() when re-initing the parser
        !          1728:
        !          1729: 2007-08-31 19:30  millert
        !          1730:
        !          1731:        * configure: regen
        !          1732:
        !          1733: 2007-08-31 19:30  millert
        !          1734:
        !          1735:        * aclocal.m4, alias.c, alloc.c, config.h.in, configure.in, env.c,
        !          1736:          ldap.c, list.c, list.h, memrchr.c, parse.c, parse.h, pwutil.c,
        !          1737:          redblack.c, redblack.h, snprintf.c, sudo.c, sudo.h,
        !          1738:          testsudoers.c, visudo.c, zero_bytes.c, auth/API, auth/afs.c,
        !          1739:          auth/bsdauth.c, auth/kerb4.c, auth/kerb5.c, auth/pam.c,
        !          1740:          auth/securid.c, auth/securid5.c, auth/sia.c, auth/sudo_auth.h:
        !          1741:          Remove support for compilers that don't support void *
        !          1742:
        !          1743: 2007-08-31 19:14  millert
        !          1744:
        !          1745:        * gram.c: regen
        !          1746:
        !          1747: 2007-08-31 19:13  millert
        !          1748:
        !          1749:        * Makefile.in, alias.c, defaults.c, gram.y, list.c, list.h,
        !          1750:          match.c, parse.c, parse.h, testsudoers.c, visudo.c: Move list
        !          1751:          manipulation macros to list.h and create C versions of the more
        !          1752:          complex ones in list.c.  The names have been down-cased so they
        !          1753:          appear more like normal functions.
        !          1754:
        !          1755: 2007-08-31 17:21  millert
        !          1756:
        !          1757:        * Makefile.in: Fix cmp command when regenerating parser.  Make
        !          1758:          gram.o the first dependency for all programs so gram.h will be
        !          1759:          generated before anything that needs it.
        !          1760:
        !          1761: 2007-08-31 13:56  millert
        !          1762:
        !          1763:        * parse.h, gram.y: Convert NEW_DEFAULT anf NEW_MEMBER into static
        !          1764:          functions.
        !          1765:
        !          1766: 2007-08-30 21:21  millert
        !          1767:
        !          1768:        * match.c, parse.c, testsudoers.c: Use LH_FOREACH_REV when checking
        !          1769:          permission and short-circuit on the first non-UNSPEC hit we get
        !          1770:          for the command.  This means that instead of cycling through the
        !          1771:          all the parsed sudoers entries we start at the end and work
        !          1772:          backwards and quit after the first positive or negative match.
        !          1773:
        !          1774: 2007-08-30 21:13  millert
        !          1775:
        !          1776:        * gram.c: regen
        !          1777:
        !          1778: 2007-08-30 21:12  millert
        !          1779:
        !          1780:        * defaults.c, gram.y, parse.c, parse.h, testsudoers.c, visudo.c:
        !          1781:          Change list head macros to take a pointer, not a struct.
        !          1782:
        !          1783: 2007-08-30 20:46  millert
        !          1784:
        !          1785:        * gram.c: regen
        !          1786:
        !          1787: 2007-08-30 20:46  millert
        !          1788:
        !          1789:        * gram.y: Propagate the runasspec from one command to the next in a
        !          1790:          cmndspec.
        !          1791:
        !          1792: 2007-08-30 16:15  millert
        !          1793:
        !          1794:        * match.c: Replace has_meta() with a macro that calls strpbrk().
        !          1795:
        !          1796: 2007-08-30 16:04  millert
        !          1797:
        !          1798:        * gram.c: regen
        !          1799:
        !          1800: 2007-08-30 13:26  millert
        !          1801:
        !          1802:        * alias.c, defaults.c, gram.y, match.c, parse.c, parse.h,
        !          1803:          testsudoers.c, visudo.c: Use a list head struct when storing the
        !          1804:          semi-circular lists and convert to tail queues in the process.
        !          1805:          This will allow us to reverse foreach loops more easily and it
        !          1806:          makes it clearer which functions expect a list as opposed to a
        !          1807:          single member.
        !          1808:
        !          1809:          Add macros for manipulating lists.  Some of these should become
        !          1810:          functions.
        !          1811:
        !          1812:          When freeing up a list, just pop off the last item in the queue
        !          1813:          instead of going from head to tail.  This is simpler since we
        !          1814:          don't have to stash a pointer to the next member, we always just
        !          1815:          use the last one in the queue until the queue is empty.
        !          1816:
        !          1817:          Rename match functions that take a list to have list in the name.
        !          1818:           Break cmnd_matches() into cmnd_matches() and cmndlist_matches.
        !          1819:
        !          1820: 2007-08-30 13:12  millert
        !          1821:
        !          1822:        * parse.c: Fix pasto, append "!" not negated (which is an int) for
        !          1823:          sudo -l output.
        !          1824:
        !          1825: 2007-08-30 12:45  millert
        !          1826:
        !          1827:        * Makefile.in: Remove the dependency of gram .h on gram.y, the .c
        !          1828:          dependency is enough.  Only move y.tab.h to gram.h if it is
        !          1829:          different; avoids needless rebuilding.
        !          1830:
        !          1831: 2007-08-27 15:51  millert
        !          1832:
        !          1833:        * sudoers.pod: Defaults lines may be associated with lists of
        !          1834:          users, hosts, commands and runas users, not just single entries.
        !          1835:
        !          1836: 2007-08-26 17:42  millert
        !          1837:
        !          1838:        * Makefile.in: Revert the "cmp" portion of the last diff, it
        !          1839:          doesn't make sense.
        !          1840:
        !          1841: 2007-08-26 17:10  millert
        !          1842:
        !          1843:        * Makefile.in: Remove *.lo for clean: When generating the parser,
        !          1844:          only move the generated files into place if they differ from the
        !          1845:          existing ones.
        !          1846:
        !          1847: 2007-08-24 22:47  millert
        !          1848:
        !          1849:        * toke.c, toke.l: Replace IPV6 regexp with a much simpler
        !          1850:          (readable) one and add an extra check when it matches to make
        !          1851:          sure we have a valid address.
        !          1852:
        !          1853: 2007-08-24 22:36  millert
        !          1854:
        !          1855:        * match.c: Fix thinko introduced when merging IPV6 support.
        !          1856:
        !          1857: 2007-08-24 14:23  millert
        !          1858:
        !          1859:        * HISTORY, LICENSE: regen
        !          1860:
        !          1861: 2007-08-24 14:23  millert
        !          1862:
        !          1863:        * license.pod: add 2007
        !          1864:
        !          1865: 2007-08-24 14:19  millert
        !          1866:
        !          1867:        * UPGRADE: mention #uid vs. comment pitfall
        !          1868:
        !          1869: 2007-08-24 09:50  millert
        !          1870:
        !          1871:        * acsite.m4: Merge in a patch from the libtool cvs that fixes a
        !          1872:          problem with the latest autoconf.  From Stepan Kasal.
        !          1873:
        !          1874: 2007-08-23 20:28  millert
        !          1875:
        !          1876:        * parse.h: Back out he XOR swap trick, it is slower than a temp
        !          1877:          variable on modern CPUs.
        !          1878:
        !          1879: 2007-08-23 20:14  millert
        !          1880:
        !          1881:        * gram.c: regen
        !          1882:
        !          1883: 2007-08-23 20:14  millert
        !          1884:
        !          1885:        * gram.y, parse.h: Convert the tail queue to a semi-circle queue
        !          1886:          and use the XOR swap trick to swap the prev pointers during
        !          1887:          append.
        !          1888:
        !          1889: 2007-08-23 15:31  millert
        !          1890:
        !          1891:        * parse.h: remove useless statement
        !          1892:
        !          1893: 2007-08-23 07:47  millert
        !          1894:
        !          1895:        * toke.c, toke.l: Refactor #include parsing into a separate
        !          1896:          function and return unparsed chars (such as newline or comment)
        !          1897:          back to the lexer.
        !          1898:
        !          1899: 2007-08-22 18:56  millert
        !          1900:
        !          1901:        * WHATSNEW: mention better uid support
        !          1902:
        !          1903: 2007-08-22 18:55  millert
        !          1904:
        !          1905:        * sudoers.pod: Users may now consist of a uid.
        !          1906:
        !          1907: 2007-08-22 18:39  millert
        !          1908:
        !          1909:        * gram.c, gram.h, toke.c: regen
        !          1910:
        !          1911: 2007-08-22 18:32  millert
        !          1912:
        !          1913:        * parse.c: Use lbuf_append_quoted() for sudo -l output to quote
        !          1914:          characters that would require quoting in sudoers.
        !          1915:
        !          1916: 2007-08-22 18:31  millert
        !          1917:
        !          1918:        * lbuf.c, lbuf.h: Add lbuf_append_quoted() which takes a set of
        !          1919:          characters which should be quoted with a backslash when
        !          1920:          displayed.
        !          1921:
        !          1922: 2007-08-22 18:28  millert
        !          1923:
        !          1924:        * toke.l: Require that the first character after a comment not be a
        !          1925:          digit or a dash.  This allows us to remove the GOTRUNAS state and
        !          1926:          treat uid/gids similar to other words.  It also means that we can
        !          1927:          now specify uids in User_Lists and a User_Spec may now contain a
        !          1928:          uid.
        !          1929:
        !          1930: 2007-08-22 18:23  millert
        !          1931:
        !          1932:        * gram.y, toke.l: Replace RUNAS token with '(' and ')' tokens to
        !          1933:          make the runas portion of the grammar more natural.
        !          1934:
        !          1935: 2007-08-22 06:35  millert
        !          1936:
        !          1937:        * Makefile.in, README, BUGS: The BUGS file is history
        !          1938:
        !          1939: 2007-08-21 09:19  millert
        !          1940:
        !          1941:        * toke.c, toke.l: Allow comments after a RunasAlias as long as the
        !          1942:          character after the pound sign isn't a digit or a dash.
        !          1943:
        !          1944: 2007-08-20 20:43  millert
        !          1945:
        !          1946:        * WHATSNEW: Glob support was back-ported to 1.6.9
        !          1947:
        !          1948: 2007-08-20 19:59  millert
        !          1949:
        !          1950:        * Makefile.in: remove sudo_usage.h in distclean
        !          1951:
        !          1952: 2007-08-20 19:24  millert
        !          1953:
        !          1954:        * parse.c: If a Defaults value contains a blank, double-quote the
        !          1955:          string.
        !          1956:
        !          1957: 2007-08-20 19:19  millert
        !          1958:
        !          1959:        * toke.c, toke.l: Properly deal with Defaults double-quoted strings
        !          1960:          that span multiple lines using the line continuation char.
        !          1961:          Previously, the entire thing, including the continuation char,
        !          1962:          newline, and spaces was stored as-is.
        !          1963:
        !          1964: 2007-08-20 10:46  millert
        !          1965:
        !          1966:        * sudo.c: Be consistent when using single quotes and backticks.
        !          1967:
        !          1968: 2007-08-19 16:48  millert
        !          1969:
        !          1970:        * Makefile.in, configure, configure.in, lbuf.c, lbuf.h, parse.c,
        !          1971:          sudo.c, sudo_usage.h.in: Add new linebuf code to do appends of
        !          1972:          dynamically allocated strings and word-wrapped output.  Currently
        !          1973:          used for sudo's usage() and sudo -l output.  Sudo usage strings
        !          1974:          are now in sudo_usage.h which is generated at configure time.
        !          1975:
        !          1976: 2007-08-18 08:22  millert
        !          1977:
        !          1978:        * sudo.h, parse.c, sudo.c: Fix line wrapping in usage() and use the
        !          1979:          actual tty width instead of assuming 80.
        !          1980:
        !          1981: 2007-08-17 18:32  millert
        !          1982:
        !          1983:        * history.pod: some more info
        !          1984:
        !          1985: 2007-08-17 17:28  millert
        !          1986:
        !          1987:        * history.pod: Mentioned Chris Jepeway's parser and also the new
        !          1988:          one that is in sudo 1.7.
        !          1989:
        !          1990: 2007-08-16 09:38  millert
        !          1991:
        !          1992:        * sudo.pod, visudo.pod: For the options list, add flag args where
        !          1993:          appropriate and increase the indent level so there is room for
        !          1994:          them.
        !          1995:
        !          1996: 2007-08-15 13:49  millert
        !          1997:
        !          1998:        * parse.c: Fix some spacing in "sudo -l" and add a comment about
        !          1999:          some bogosity in the line wrapping.
        !          2000:
        !          2001: 2007-08-15 11:21  millert
        !          2002:
        !          2003:        * sudo.cat, sudo.man.in, sudoers.cat, sudoers.man.in,
        !          2004:          visudo.man.in, visudo.cat: regen
        !          2005:
        !          2006: 2007-08-15 11:20  millert
        !          2007:
        !          2008:        * INSTALL, Makefile.in, WHATSNEW, config.h.in, configure.in,
        !          2009:          def_data.c, def_data.h, def_data.in, gram.c, gram.h, gram.y,
        !          2010:          parse.c, parse.h, pathnames.h.in, sudo.c, sudo.h, sudoers.pod,
        !          2011:          testsudoers.c, toke.c, toke.l: Remove monitor support until there
        !          2012:          is a versino of systrace that uses a lookaside buffer (or we have
        !          2013:          a better mechanism to use).
        !          2014:
        !          2015: 2007-08-15 09:22  millert
        !          2016:
        !          2017:        * configure.in, configure, config.h.in, sudo.c: use getaddrinfo()
        !          2018:          instead of gethostbyname() if it is available
        !          2019:
        !          2020: 2007-08-14 15:27  millert
        !          2021:
        !          2022:        * parse.c, sudo.c: Deal with OSes where sizeof(gid_t) <
        !          2023:          sizeof(int).
        !          2024:
        !          2025: 2007-08-14 11:19  millert
        !          2026:
        !          2027:        * interfaces.c: repair non-getifaddrs() code after ipv6 integration
        !          2028:
        !          2029: 2007-08-14 10:04  millert
        !          2030:
        !          2031:        * sudo.c: If we can open sudoers but fail to read the first byte,
        !          2032:          close the file stream before trying again.
        !          2033:
        !          2034: 2007-08-13 12:34  millert
        !          2035:
        !          2036:        * gram.c, toke.c: regen
        !          2037:
        !          2038: 2007-08-13 12:29  millert
        !          2039:
        !          2040:        * gram.y, interfaces.c, interfaces.h, match.c, sudoers.pod, toke.l:
        !          2041:          Add IPv6 support; adapted from patches by YOSHIFUJI Hideaki
        !          2042:
        !          2043: 2007-08-13 12:23  millert
        !          2044:
        !          2045:        * sudo.pod, sudoers.pod, visudo.pod: Add some missing markup Update
        !          2046:          copyright
        !          2047:
        !          2048: 2007-08-12 18:55  millert
        !          2049:
        !          2050:        * configure, configure.in: fix sudo_noexec extension which got
        !          2051:          broken in the libtool update
        !          2052:
        !          2053: 2007-08-10 10:41  millert
        !          2054:
        !          2055:        * Makefile.in: explicitly specify -Tascii to nroff
        !          2056:
        !          2057: 2007-08-08 16:07  millert
        !          2058:
        !          2059:        * logging.c: remove an ANSI-ism that crept in
        !          2060:
        !          2061: 2007-08-06 20:37  millert
        !          2062:
        !          2063:        * sudo.pod: Adjust list indents Prevent -- from being turned into
        !          2064:          an em dash Use a list for the environment instead of a literal
        !          2065:          paragraph
        !          2066:
        !          2067: 2007-08-06 20:36  millert
        !          2068:
        !          2069:        * visudo.pod: Use a list for the environment instead of an indented
        !          2070:          literal paragraph.
        !          2071:
        !          2072: 2007-08-06 20:33  millert
        !          2073:
        !          2074:        * sudoers.pod: Adjust list indentation
        !          2075:
        !          2076: 2007-08-06 20:31  millert
        !          2077:
        !          2078:        * license.pod: add =head3
        !          2079:
        !          2080: 2007-08-06 10:24  millert
        !          2081:
        !          2082:        * sudo.pod: mention that when specifying a uid for the -u option
        !          2083:          the shell may require that the # be escaped
        !          2084:
        !          2085: 2007-08-01 22:08  millert
        !          2086:
        !          2087:        * match.c: Fix off by one in group matching.
        !          2088:
        !          2089: 2007-07-31 14:04  millert
        !          2090:
        !          2091:        * env.c: Fix typo: PYTHONINSPEC should be PYTHONINSPECT.  From
        !          2092:          David Krause.
        !          2093:
        !          2094: 2007-07-30 10:45  millert
        !          2095:
        !          2096:        * configure, configure.in: Add missing define of
        !          2097:          HAVE_GSS_KRB5_CCACHE_NAME for the -lgssapi_krb5 case.
        !          2098:
        !          2099: 2007-07-30 09:29  millert
        !          2100:
        !          2101:        * aclocal.m4, configure.in, configure: Fix link tests such that new
        !          2102:          gcc doesn't optimize away the test.
        !          2103:
        !          2104: 2007-07-29 19:21  millert
        !          2105:
        !          2106:        * sudo.pod, sudoers.pod, visudo.pod: add missing over/back
        !          2107:
        !          2108: 2007-07-29 19:09  millert
        !          2109:
        !          2110:        * sudo.pod, sudoers.pod, visudo.pod: Change FILES section to use
        !          2111:          =item
        !          2112:
        !          2113: 2007-07-29 18:32  millert
        !          2114:
        !          2115:        * env.c: Add back allocation of the env struct in rebuild_env but
        !          2116:          save a copy of the old pointer and free it before returning.
        !          2117:
        !          2118: 2007-07-29 16:09  millert
        !          2119:
        !          2120:        * env.c: Don't init the private environment in rebuild_env() since
        !          2121:          it may have already been done implicitly
        !          2122:          sudo_setenv/sudo_unsetenv.
        !          2123:
        !          2124:          Multiply length by sizeof(char *) in memcpy/memmove when copying
        !          2125:          the environment so we copy the full thing.
        !          2126:
        !          2127:          Add missing set of parens so we deref the right pointer in
        !          2128:          sudo_unsetenv when searching for a matching variable.
        !          2129:
        !          2130: 2007-07-26 16:35  millert
        !          2131:
        !          2132:        * sudo.pod, sudoers.pod, visudo.pod: Use  file markup for paths in
        !          2133:          the FILES section
        !          2134:
        !          2135: 2007-07-26 10:04  millert
        !          2136:
        !          2137:        * sudo.pod, sudoers.pod, visudo.pod: Don't capitalize sudo/visudo
        !          2138:
        !          2139: 2007-07-26 07:28  millert
        !          2140:
        !          2141:        * sudoers.pod: Sort sudoers options; based on a diff from Igor
        !          2142:          Sobrado.
        !          2143:
        !          2144: 2007-07-25 16:19  millert
        !          2145:
        !          2146:        * sudo.pod, sudoers.pod, visudo.pod: Use 8 and 5 instead of
        !          2147:          @mansectsu@ and @mansectform@ since the latter confuses pod2man.
        !          2148:          The Makefile rules for the .man.in file will add @mansectsu@ and
        !          2149:          @mansectform@ back in after pod2man is done anyway.
        !          2150:
        !          2151: 2007-07-22 19:09  millert
        !          2152:
        !          2153:        * LICENSE, Makefile.in, license.pod: Move license info to pod
        !          2154:          format
        !          2155:
        !          2156: 2007-07-22 18:43  millert
        !          2157:
        !          2158:        * configure, configure.in, sudoers.pod: Substitute value of
        !          2159:          path_info into sudoers man page.
        !          2160:
        !          2161: 2007-07-22 16:40  millert
        !          2162:
        !          2163:        * WHATSNEW: remove features that were back-ported to 1.6.9
        !          2164:
        !          2165: 2007-07-22 15:20  millert
        !          2166:
        !          2167:        * sudo.c, sudo.pod, visudo.c, visudo.pod: Sort SYNOPSIS and sync
        !          2168:          usage.  From Igor Sobrado.
        !          2169:
        !          2170: 2007-07-22 15:19  millert
        !          2171:
        !          2172:        * env.c: Only need sudo_setenv/sudo_unsetenv if we are going to use
        !          2173:          ldap_sasl_interactive_bind_s() but don't have
        !          2174:          gss_krb5_ccache_name().
        !          2175:
        !          2176: 2007-07-22 08:23  millert
        !          2177:
        !          2178:        * ChangeLog: rebuild without branch info
        !          2179:
        !          2180: 2007-07-22 08:23  millert
        !          2181:
        !          2182:        * Makefile.in: Add ChangeLog target
        !          2183:
        !          2184: 2007-07-22 08:14  millert
        !          2185:
        !          2186:        * auth/pam.c: Run cleanup code if the user hits ^C at the password
        !          2187:          prompt.
        !          2188:
        !          2189: 2007-07-22 08:13  millert
        !          2190:
        !          2191:        * auth/pam.c: Some versions of pam_lastlog have a bug that will
        !          2192:          cause a crash if PAM_TTY is not set so if there is no tty, set
        !          2193:          PAM_TTY to the empty string.
        !          2194:
        !          2195: 2007-07-20 09:32  millert
        !          2196:
        !          2197:        * Makefile.in: ChageLog not Changelog
        !          2198:
        !          2199: 2007-07-20 09:31  millert
        !          2200:
        !          2201:        * ChangeLog: sync
        !          2202:
        !          2203: 2007-07-20 09:29  millert
        !          2204:
        !          2205:        * Makefile.in: CHANGE -> Changelog
        !          2206:
        !          2207: 2007-07-19 20:23  millert
        !          2208:
        !          2209:        * TODO: sync
        !          2210:
        !          2211: 2007-07-19 19:53  millert
        !          2212:
        !          2213:        * config.h.in, configure.in, configure, ldap.c: Add configure hooks
        !          2214:          for gss_krb5_ccache_name() and the gssapi headers.
        !          2215:
        !          2216: 2007-07-18 12:57  millert
        !          2217:
        !          2218:        * env.c, sudo.c: rebuild_env() and insert_env_vars() no longer
        !          2219:          return environment pointer, they set environ directly.
        !          2220:
        !          2221:          No longer need to pass around an envp pointer since we just
        !          2222:          operate on environ now.
        !          2223:
        !          2224:          Add dosync argument to insert_env() that indicates whether it
        !          2225:          should reset environ when realloc()ing env.envp.
        !          2226:
        !          2227:          Use an initial size of 128 for the environment.
        !          2228:
        !          2229: 2007-07-18 12:41  millert
        !          2230:
        !          2231:        * env.c: Split sudo_setenv() into an external version and a version
        !          2232:          only for use by rebuild_env().
        !          2233:
        !          2234: 2007-07-16 19:40  millert
        !          2235:
        !          2236:        * ldap.c: Add support for using gss_krb5_ccache_name() instead of
        !          2237:          setting KRB5CCNAME.  Also use sudo_unsetenv() in the
        !          2238:          non-gss_krb5_ccache_name() case if there was no KRB5CCNAME in the
        !          2239:          original environment.  TODO: configure setup for
        !          2240:          gss_krb5_ccache_name()
        !          2241:
        !          2242: 2007-07-16 18:44  millert
        !          2243:
        !          2244:        * README.LDAP: add krb5_ccname
        !          2245:
        !          2246: 2007-07-16 18:44  millert
        !          2247:
        !          2248:        * README.LDAP, ldap.c: Add support for sasl_secprops in ldap.conf
        !          2249:
        !          2250: 2007-07-16 18:39  millert
        !          2251:
        !          2252:        * env.c, sudo.h: Add sudo_unsetenv() and refactor private env
        !          2253:          syncing code into sync_env().
        !          2254:
        !          2255: 2007-07-16 07:27  millert
        !          2256:
        !          2257:        * README.LDAP, ldap.c: The ldap.conf variable is sasl_auth_id not
        !          2258:          sasl_authid.
        !          2259:
        !          2260: 2007-07-15 15:44  millert
        !          2261:
        !          2262:        * ldap.c, sudo.c, sudo.h: Add support for krb5_ccname in ldap.conf.
        !          2263:          If specified, it will override the default value of KRB5CCNAME
        !          2264:          in the environment for the duration of the call to
        !          2265:          ldap_sasl_interactive_bind_s().
        !          2266:
        !          2267: 2007-07-15 15:41  millert
        !          2268:
        !          2269:        * env.c, sudo.h: Remove format_env() Add sudo_setenv() to replace
        !          2270:          most format_env() + insert_env() combinations.  insert_env() no
        !          2271:          longer takes a struct environment *
        !          2272:
        !          2273: 2007-07-15 12:47  millert
        !          2274:
        !          2275:        * ldap.c: Fix use_sasl vs. rootuse_sasl logic.
        !          2276:
        !          2277: 2007-07-15 09:23  millert
        !          2278:
        !          2279:        * README.LDAP, config.h.in, configure, configure.in, ldap.c: Add
        !          2280:          support for SASL auth when connecting to an LDAP server.  Adapted
        !          2281:          from a diff by Tom McLaughlin.
        !          2282:
        !          2283: 2007-07-14 16:32  millert
        !          2284:
        !          2285:        * configure, configure.in: Only enable AIX or BSD auth if no other
        !          2286:          exclusive auth method has been chosen.  Allows people to e.g.,
        !          2287:          use PAM on AIX without adding --without-aixauth.  A better
        !          2288:          solution is needed to deal with default authentication since if a
        !          2289:          non-exclusive method is chosen we will still get an error.
        !          2290:
        !          2291: 2007-07-11 11:23  millert
        !          2292:
        !          2293:        * HISTORY, Makefile.in, history.pod: Generate HISTORY from
        !          2294:          history.pod (which is also used for web pages)
        !          2295:
        !          2296: 2007-07-09 19:40  millert
        !          2297:
        !          2298:        * sudo.man.in, sudoers.man.in: regen
        !          2299:
        !          2300: 2007-07-09 19:25  millert
        !          2301:
        !          2302:        * sudo.pod: Better explanation of environment handling in the sudo
        !          2303:          man page.
        !          2304:
        !          2305: 2007-07-09 15:13  millert
        !          2306:
        !          2307:        * env.c, sudo.c: Defer setting user-specified env vars until after
        !          2308:          authentication.
        !          2309:
        !          2310: 2007-07-09 13:25  millert
        !          2311:
        !          2312:        * env.c: honor def_default_path for PATH set on the command line
        !          2313:
        !          2314: 2007-07-09 13:22  millert
        !          2315:
        !          2316:        * sudo.c, env.c, sudo.pod, sudoers.pod: Allow user to set
        !          2317:          environment variables on the command line as long as they are
        !          2318:          allowed by env_keep and env_check.  Ie: apply the same
        !          2319:          restrictions as normal environment variables.  TODO: deal with
        !          2320:          secure_path
        !          2321:
        !          2322: 2007-07-08 14:44  millert
        !          2323:
        !          2324:        * sudo.c, sudo_edit.c: Call rebuild_env() in call cases.  Pass
        !          2325:          original envp to sudo_edit().  Don't allow -E or env var setting
        !          2326:          in sudoedit mode.  More accurate usage() when called as sudoedit.
        !          2327:
        !          2328: 2007-07-08 14:41  millert
        !          2329:
        !          2330:        * ldap.c: warn -> warning
        !          2331:
        !          2332: 2007-07-08 14:11  millert
        !          2333:
        !          2334:        * sudo.pod: add -c option to sudoedit synopsis
        !          2335:
        !          2336: 2007-07-08 10:27  millert
        !          2337:
        !          2338:        * TODO: udpate to reality
        !          2339:
        !          2340: 2007-07-08 09:43  millert
        !          2341:
        !          2342:        * parse.c: Use ALLOW/DENY instead of TRUE/FALSE when dealing with
        !          2343:          the return value from {user,host,runas,cmnd}_matches().  Rename
        !          2344:          *matches variables -> *match.  Purely cosmetic.
        !          2345:
        !          2346: 2007-07-08 09:30  millert
        !          2347:
        !          2348:        * parse.c: Move setting of FLAG_NO_CHECK into the if(pwflag) block.
        !          2349:          No change in behavior.
        !          2350:
        !          2351: 2007-07-08 09:17  millert
        !          2352:
        !          2353:        * sudoers: add SETENV tag
        !          2354:
        !          2355: 2007-07-06 15:51  millert
        !          2356:
        !          2357:        * parse.c: Make pwcheck local to the pwflag block.  Use pwcheck
        !          2358:          even if user didn't match since Defaults options may still apply.
        !          2359:
        !          2360: 2007-07-06 14:51  millert
        !          2361:
        !          2362:        * check.c, sudo.c: Do not update timestamp if user not validated by
        !          2363:          sudoers.
        !          2364:
        !          2365: 2007-07-06 10:14  millert
        !          2366:
        !          2367:        * set_perms.c: for PERM_RUNAS, set the egid to the runas user's gid
        !          2368:          and restore to the user's original in PERM_ROOT
        !          2369:
        !          2370: 2007-07-06 10:04  millert
        !          2371:
        !          2372:        * logging.c, mon_systrace.c, set_perms.c, sudo.h: PERM_FULL_ROOT is
        !          2373:          now no different than PERM_ROOT so remove PERM_FULL_ROOT
        !          2374:
        !          2375: 2007-07-06 09:49  millert
        !          2376:
        !          2377:        * check.c: don't check timestamp mtime if we are just going to
        !          2378:          remove it
        !          2379:
        !          2380: 2007-07-06 09:33  millert
        !          2381:
        !          2382:        * sudoers.pod: Move sudoers defaults parameters into their own
        !          2383:          section.
        !          2384:
        !          2385: 2007-07-05 20:21  millert
        !          2386:
        !          2387:        * testsudoers.c: Reduce a level of indent by a few placed continue
        !          2388:          statements.
        !          2389:
        !          2390: 2007-07-05 20:20  millert
        !          2391:
        !          2392:        * parse.c: Make matching but negated commands/hosts/runas entries
        !          2393:          override a previous match as expected.  Also reduce some levels
        !          2394:          of indent by a few placed continue statements.
        !          2395:
        !          2396: 2007-07-05 16:34  millert
        !          2397:
        !          2398:        * parse.c: Print default runas in "sudo -l" if sudoers don't
        !          2399:          specify one.
        !          2400:
        !          2401: 2007-07-05 15:46  millert
        !          2402:
        !          2403:        * match.c: Less hacky way of testing whether the domain was set.
        !          2404:
        !          2405: 2007-07-04 15:50  millert
        !          2406:
        !          2407:        * INSTALL: Mention pam-devel and openldap-devel for Linux
        !          2408:
        !          2409: 2007-07-03 19:38  millert
        !          2410:
        !          2411:        * README.LDAP: or vs. are
        !          2412:
        !          2413: 2007-07-01 16:55  millert
        !          2414:
        !          2415:        * sudo.c: fix typo in Solaris project support
        !          2416:
        !          2417: 2007-07-01 09:40  millert
        !          2418:
        !          2419:        * HISTORY: update
        !          2420:
        !          2421: 2007-07-01 09:07  millert
        !          2422:
        !          2423:        * sudo.c: Make -- on the command line match the manual page.  The
        !          2424:          implied shell case has been simplified as a result.
        !          2425:
        !          2426: 2007-06-28 10:44  millert
        !          2427:
        !          2428:        * sudoers2ldif: add simplistic support for sudoRunas; note that if
        !          2429:          a sudoers entry contains multiple Runas users, all will apply to
        !          2430:          the sudoRole
        !          2431:
        !          2432: 2007-06-28 10:42  millert
        !          2433:
        !          2434:        * sudoers2ldif: honor SETENV and NOSETENV tags
        !          2435:
        !          2436: 2007-06-24 09:25  millert
        !          2437:
        !          2438:        * mon_systrace.c: Redo setting of user_args.  We now build up a
        !          2439:          private copy of argv first and then replace the NULs with spaces.
        !          2440:
        !          2441: 2007-06-24 09:19  millert
        !          2442:
        !          2443:        * mon_systrace.c: getcwd() returns NULL on failure, not 0 on
        !          2444:          success
        !          2445:
        !          2446: 2007-06-24 07:39  millert
        !          2447:
        !          2448:        * mon_systrace.c: allow chunksiz to reach 1 before erroring out
        !          2449:
        !          2450: 2007-06-23 20:00  millert
        !          2451:
        !          2452:        * sudo.cat, sudo.man.in, sudoers.cat, sudoers.man.in, visudo.cat,
        !          2453:          visudo.man.in: regen
        !          2454:
        !          2455: 2007-06-23 19:58  millert
        !          2456:
        !          2457:        * def_data.c, def_data.h, def_data.in, env.c, gram.c, gram.h,
        !          2458:          gram.y, logging.c, parse.c, parse.h, sudo.c, sudo.h, sudo.pod,
        !          2459:          sudoers.pod, toke.c, toke.l: Add support for setting environment
        !          2460:          variables on the command line.  This is only allowed if the
        !          2461:          setenv sudoers options is enabled or if the command is prefixed
        !          2462:          with the SETENV tag.
        !          2463:
        !          2464: 2007-06-23 19:57  millert
        !          2465:
        !          2466:        * README.LDAP: replace Aaron's email address with the sudo-workers
        !          2467:          list
        !          2468:
        !          2469: 2007-06-23 19:55  millert
        !          2470:
        !          2471:        * configure: regen
        !          2472:
        !          2473: 2007-06-21 20:35  millert
        !          2474:
        !          2475:        * Makefile.in, README.LDAP, schema.OpenLDAP, schema.iPlanet: Break
        !          2476:          schema out into separate files.
        !          2477:
        !          2478: 2007-06-21 18:28  millert
        !          2479:
        !          2480:        * auth/aix_auth.c: free message if set by authenticate()
        !          2481:
        !          2482: 2007-06-21 13:03  millert
        !          2483:
        !          2484:        * match.c: deal with NULL gr_mem
        !          2485:
        !          2486: 2007-06-20 15:04  millert
        !          2487:
        !          2488:        * config.h.in: regen
        !          2489:
        !          2490: 2007-06-20 15:04  millert
        !          2491:
        !          2492:        * configure.in: add template for HAVE_PROJECT_H
        !          2493:
        !          2494: 2007-06-20 07:06  millert
        !          2495:
        !          2496:        * closefrom.c: include fcntl.h
        !          2497:
        !          2498: 2007-06-19 19:37  millert
        !          2499:
        !          2500:        * INSTALL: mention --with-project
        !          2501:
        !          2502: 2007-06-19 18:24  millert
        !          2503:
        !          2504:        * config.h.in, configure.in, sudo.c: Add Solaris 10 "project"
        !          2505:          support.  From Michael Brantley.
        !          2506:
        !          2507: 2007-06-19 17:27  millert
        !          2508:
        !          2509:        * sudoers.pod: fix typo
        !          2510:
        !          2511: 2007-06-19 17:22  millert
        !          2512:
        !          2513:        * configure: regen
        !          2514:
        !          2515: 2007-06-19 17:21  millert
        !          2516:
        !          2517:        * configure.in: Fix preservation of LDFLAGS in the LDAP case.
        !          2518:
        !          2519: 2007-06-19 17:00  millert
        !          2520:
        !          2521:        * memrchr.c: Remove dependecy on NULL
        !          2522:
        !          2523: 2007-06-19 15:37  millert
        !          2524:
        !          2525:        * configure: regen
        !          2526:
        !          2527: 2007-06-19 15:37  millert
        !          2528:
        !          2529:        * aclocal.m4, configure.in: Can't use the regular autoconf
        !          2530:          fnmatch() check since we need FNM_CASEFOLD so go back to our
        !          2531:          custom one.
        !          2532:
        !          2533: 2007-06-19 12:52  millert
        !          2534:
        !          2535:        * env.c: Fix preserving of variables in env_keep.
        !          2536:
        !          2537: 2007-06-19 07:10  millert
        !          2538:
        !          2539:        * env.c: add XAUTHORIZATION
        !          2540:
        !          2541: 2007-06-18 20:41  millert
        !          2542:
        !          2543:        * UPGRADE: expand upon env resetting and mention that it began in
        !          2544:          1.6.9 not 1.7.
        !          2545:
        !          2546: 2007-06-18 20:33  millert
        !          2547:
        !          2548:        * sudoers.pod: Update descriptions of env_keep and env_check to
        !          2549:          match current reality.
        !          2550:
        !          2551: 2007-06-18 17:33  millert
        !          2552:
        !          2553:        * env.c: Add LINGUAS to initial_checkenv_table.  Add COLORS,
        !          2554:          HOSTNAME, LS_COLORS, MAIL, PS1, PS2, XAUTHORITY to
        !          2555:          intial_keepenv_table.
        !          2556:
        !          2557: 2007-06-18 17:23  millert
        !          2558:
        !          2559:        * env.c, logging.c: Treat USERNAME environemnt variable like
        !          2560:          LOGNAME/USER
        !          2561:
        !          2562: 2007-06-18 17:21  millert
        !          2563:
        !          2564:        * env.c: Don't need to populate keepenv table with the contents of
        !          2565:          the checkenv table.
        !          2566:
        !          2567: 2007-06-18 08:57  millert
        !          2568:
        !          2569:        * sudo.c: Don't force sudo into the C locale.
        !          2570:
        !          2571: 2007-06-18 08:56  millert
        !          2572:
        !          2573:        * env.c: Make env_check apply when env_reset it true.  Environment
        !          2574:          variables are passed through unless they contain '/' or '%'.
        !          2575:          There is no need to have a variable in both env_check and
        !          2576:          env_keep.
        !          2577:
        !          2578: 2007-06-16 07:31  millert
        !          2579:
        !          2580:        * visudo.c: Remove an duplicate lock_file() call and add a comment.
        !          2581:
        !          2582: 2007-06-15 21:16  millert
        !          2583:
        !          2584:        * UPGRADE: Add sudo 1.6.9 upgrade note.
        !          2585:
        !          2586: 2007-06-14 12:23  millert
        !          2587:
        !          2588:        * interfaces.c: Solaris will return EINVAL if the buffer used in
        !          2589:          SIOCGIFCONF is too small.  From Klaus Wagner.
        !          2590:
        !          2591: 2007-06-14 12:03  millert
        !          2592:
        !          2593:        * Makefile.in, config.h.in, configure, configure.in, memrchr.c,
        !          2594:          logging.c, sudo.h: Redo the long syslog line splitting based on a
        !          2595:          patch from Eygene Ryabinkin.  Include memrchr() for systems
        !          2596:          without it.
        !          2597:
        !          2598: 2007-06-14 07:09  millert
        !          2599:
        !          2600:        * configure.in: Since we need to be able to convert timespec to
        !          2601:          timeval for utimes() the last 3 digits in the tv_nsec are not
        !          2602:          significant.  This makes the sudoedit file date comparison work
        !          2603:          again.
        !          2604:
        !          2605: 2007-06-13 13:41  millert
        !          2606:
        !          2607:        * aclocal.m4, configure, configure.in: Add SUDO_ADD_AUTH macro to
        !          2608:          deal with adding things to AUTH_OBJS.  This deals with exclusive
        !          2609:          authentication methods in a simple way.
        !          2610:
        !          2611: 2007-06-12 13:08  millert
        !          2612:
        !          2613:        * LICENSE: mkstemp.c is BSD code too.
        !          2614:
        !          2615: 2007-06-12 09:21  millert
        !          2616:
        !          2617:        * sudo.pod, sudoers.pod, visudo.pod: No commercial support for now.
        !          2618:
        !          2619: 2007-06-11 18:27  millert
        !          2620:
        !          2621:        * sudo.c: cleanenv() is no more.
        !          2622:
        !          2623: 2007-06-10 18:37  millert
        !          2624:
        !          2625:        * ChangeLog: Display branch info in Changelog
        !          2626:
        !          2627: 2007-06-10 18:18  millert
        !          2628:
        !          2629:        * utimes.c: Include config.h early so we have it for
        !          2630:          TIME_WITH_SYS_TIME
        !          2631:
        !          2632: 2007-06-10 18:00  millert
        !          2633:
        !          2634:        * ChangeLog: Fix Changelog generation and update.
        !          2635:
        !          2636: 2007-06-09 07:26  millert
        !          2637:
        !          2638:        * closefrom.c: Use /proc/self/fd instead of /proc/$$/fd
        !          2639:
        !          2640:          Move old-style fd closing into closefrom_fallback() and call that
        !          2641:          if /proc/self/fd doesn't exist or the F_CLOSEM fcntl() fails
        !          2642:
        !          2643: 2007-06-09 07:24  millert
        !          2644:
        !          2645:        * config.h.in, configure.in, auth/kerb5.c:  o use
        !          2646:          krb5_verify_user() if available instead of doing it by hand
        !          2647:           o use krb5_init_secure_context() if we have it
        !          2648:           o pass an encryption type of 0 to krb5_kt_read_service_key()
        !          2649:          instead of
        !          2650:             ENCTYPE_DES_CBC_MD5 to let kerberos choose.
        !          2651:
        !          2652: 2007-06-09 07:20  millert
        !          2653:
        !          2654:        * env.c: Check TERM and COLORTERM for '%' and '/' characters.  From
        !          2655:          Debian.
        !          2656:
        !          2657: 2007-06-09 07:17  millert
        !          2658:
        !          2659:        * configure.in: Fix closefrom() substitution in the Makefile
        !          2660:
        !          2661: 2007-06-09 07:15  millert
        !          2662:
        !          2663:        * TROUBLESHOOTING: Mention alternate sudo pronunciation.
        !          2664:
        !          2665: 2007-06-07 07:52  millert
        !          2666:
        !          2667:        * env.c: Remove KRB5_KTNAME from environment.  Allow COLORTERM.
        !          2668:
        !          2669: 2007-06-07 07:22  millert
        !          2670:
        !          2671:        * auth/kerb5.c: If we cannot get a valid service key using the
        !          2672:          default keytab it is a fatal error.  Fixes a bug where sudo could
        !          2673:          be tricked into allowing access when it should not by a fake KDC.
        !          2674:          From Thor Lancelot Simon.
        !          2675:
        !          2676: 2007-05-12 08:56  millert
        !          2677:
        !          2678:        * aclocal.m4, configure, configure.in: Update long long checks to
        !          2679:          use AC_CHECK_TYPES and to cache values.
        !          2680:
        !          2681: 2007-05-12 08:07  millert
        !          2682:
        !          2683:        * aclocal.m4, configure.in: Use AC_FUNC_FNMATCH instead of a
        !          2684:          homebrew fnmatch checker.  We can't use AC_REPLACE_FNMATCH since
        !          2685:          that assumes replacing with GNU fnmatch.
        !          2686:
        !          2687: 2007-05-11 17:05  millert
        !          2688:
        !          2689:        * configure, configure.in: Add closefrom() to LIB_OBJS not
        !          2690:          SUDO_OBJS if it is missing since we need it for visudo now too.
        !          2691:
        !          2692: 2007-04-24 14:44  millert
        !          2693:
        !          2694:        * sudoers.pod: Attempt to clarify the bit talking about network
        !          2695:          numbers w/o netmasks.
        !          2696:
        !          2697: 2007-04-24 14:25  millert
        !          2698:
        !          2699:        * sudo.pod: Clarify timestamp dir ownership sentence.
        !          2700:
        !          2701: 2007-04-20 12:40  millert
        !          2702:
        !          2703:        * auth/pam.c: Linux PAM now defines __LINUX_PAM__, not
        !          2704:          __LIBPAM_VERSION.  From Dmitry V. Levin.
        !          2705:
        !          2706: 2007-04-16 12:13  millert
        !          2707:
        !          2708:        * sudo.c: -i is also one of the mutually exclusive options to list
        !          2709:          it in the warning message.  Noted by Chris Pepper.
        !          2710:
        !          2711: 2007-04-12 11:18  millert
        !          2712:
        !          2713:        * visudo.pod: The sudoers variable is env_editor, not enveditor.
        !          2714:          From Jean-Francois Saucier.
        !          2715:
        !          2716: 2007-03-29 13:30  millert
        !          2717:
        !          2718:        * redblack.c: I tracked down the original author so credit him and
        !          2719:          include his license info.
        !          2720:
        !          2721: 2007-02-06 13:25  millert
        !          2722:
        !          2723:        * sudo.cat, sudo.man.in, sudo.pod, sudoers.cat, sudoers.man.in,
        !          2724:          sudoers.pod: Fix typos; from Jason McIntyre.
        !          2725:
        !          2726: 2007-02-06 13:23  millert
        !          2727:
        !          2728:        * logging.c: Restore signal mask before calling reapchild().  Fixes
        !          2729:          a possible race condition that could prevent sudo from properly
        !          2730:          waiting for the child.
        !          2731:
        !          2732: 2007-01-31 10:02  millert
        !          2733:
        !          2734:        * pwutil.c: Don't declare pw_free() if we are not going to use it.
        !          2735:
        !          2736: 2007-01-31 10:00  millert
        !          2737:
        !          2738:        * env.c: Add NOEXEC support for AIX 5.3 which supports LDR_PRELOAD
        !          2739:          and LDR_PRELOAD64.  The 64-bit version is not currently
        !          2740:          supported.  Remove zero_env() prototype as it no longer exists.
        !          2741:
        !          2742: 2006-12-11 13:21  millert
        !          2743:
        !          2744:        * logging.c: Add "Auto-Submitted: auto-generated" line to sudo mail
        !          2745:          for rfc 3834.
        !          2746:
        !          2747: 2006-09-29 10:53  millert
        !          2748:
        !          2749:        * auth/pam.c: If the user enters ^C at the password prompt, abort
        !          2750:          instead of trying to authenticate with an empty password (which
        !          2751:          causes an annoying delay).
        !          2752:
        !          2753: 2006-08-17 11:26  millert
        !          2754:
        !          2755:        * closefrom.c, config.h.in, configure, configure.in: Add fcntl
        !          2756:          F_CLOSEM support to closefrom(); adapted from a diff by Darren
        !          2757:          Tucker.
        !          2758:
        !          2759: 2006-08-17 11:25  millert
        !          2760:
        !          2761:        * pwutil.c: pw_free() is only used by sudo_freepwcache() so ifdef
        !          2762:          it out too.
        !          2763:
        !          2764: 2006-08-04 11:34  millert
        !          2765:
        !          2766:        * config.sub, config.guess: Update to latest versions from
        !          2767:          cvs.savannah.gnu.org
        !          2768:
        !          2769: 2006-07-31 13:51  millert
        !          2770:
        !          2771:        * pwutil.c, sudo_edit.c: Move password/group cache cleaning out of
        !          2772:          sudo_end{pw,grp}ent() so we can close the passwd/group files
        !          2773:          early.
        !          2774:
        !          2775: 2006-07-31 13:50  millert
        !          2776:
        !          2777:        * config.h.in, configure, configure.in, set_perms.c: Add seteuid()
        !          2778:          flavor of set_perms() for systems without setreuid() or
        !          2779:          setresuid() that have a working seteuid().  Tested on Darwin.
        !          2780:
        !          2781: 2006-07-30 15:56  millert
        !          2782:
        !          2783:        * mon_systrace.c: systrace_read() returns ssize_t
        !          2784:
        !          2785: 2006-07-30 15:53  millert
        !          2786:
        !          2787:        * configure, configure.in: Fix typo, -lldap vs. -ldap; from Tim
        !          2788:          Knox.
        !          2789:
        !          2790: 2006-07-28 13:12  millert
        !          2791:
        !          2792:        * HISTORY: Fix typo; Matt Ackeret
        !          2793:
        !          2794: 2006-07-17 08:25  millert
        !          2795:
        !          2796:        * sudo.c: Print sudoers path in -V mode for root.
        !          2797:
        !          2798: 2006-06-15 14:44  millert
        !          2799:
        !          2800:        * ldap.c: Do a sub tree search instead of a base search (one level
        !          2801:          in the tree only) for sudo right objects.  This allows system
        !          2802:          administrators to categorize the rights in a tree to make them
        !          2803:          easier to manage.
        !          2804:
        !          2805: 2005-12-28 13:52  millert
        !          2806:
        !          2807:        * sudo.pod: fix typo
        !          2808:
        !          2809: 2005-12-04 12:16  millert
        !          2810:
        !          2811:        * ldap.c: Convert GET_OPT and GET_OPTI to use just 2 args.  Add
        !          2812:          timelimit and bind_timelimit support; adapted from gentoo.
        !          2813:
        !          2814: 2005-11-23 18:57  millert
        !          2815:
        !          2816:        * ldap.c: Support comments that start in the middle of a line
        !          2817:
        !          2818: 2005-11-23 18:56  millert
        !          2819:
        !          2820:        * configure.in, configure: Define LDAP_DEPRECATED until we start
        !          2821:          using ldap_get_values_len()
        !          2822:
        !          2823: 2005-11-18 09:55  millert
        !          2824:
        !          2825:        * closefrom.c: Silence gcc -Wsign-compare; djm@openbsd.org
        !          2826:
        !          2827: 2005-11-17 20:39  millert
        !          2828:
        !          2829:        * error.c, sudo.c, sudo.h, testsudoers.c, visudo.c: cleanup() now
        !          2830:          takes an int as an arg so it can be used as a signal handler too.
        !          2831:
        !          2832: 2005-11-17 20:38  millert
        !          2833:
        !          2834:        * sudo.c: Make a copy of the shell field in the passwd struct for
        !          2835:          NewArgv to avoid a use after free situation after sudo_endpwent()
        !          2836:          is called.
        !          2837:
        !          2838: 2005-11-16 20:36  millert
        !          2839:
        !          2840:        * Makefile.in, mkstemp.c, config.h.in, configure, configure.in: Add
        !          2841:          mkstemp() for those poor souls without it.
        !          2842:
        !          2843: 2005-11-15 09:25  millert
        !          2844:
        !          2845:        * env.c: Add PERL5DB to list of environment variables to remove.
        !          2846:
        !          2847: 2005-11-13 15:49  millert
        !          2848:
        !          2849:        * mon_systrace.c, mon_systrace.h: Instead of calling the check
        !          2850:          function twice with a state cookie use separate check/log
        !          2851:          functions.
        !          2852:
        !          2853:          Check more ioctl() calls for failure.
        !          2854:
        !          2855:          systrace_{read,write} now return the number of bytes read/written
        !          2856:          or -1 on error.
        !          2857:
        !          2858: 2005-11-13 14:51  millert
        !          2859:
        !          2860:        * env.c: Add more environment variables to remove; from gentoo
        !          2861:          linux Add some comments about what bad env variables go to what
        !          2862:          (more to do)
        !          2863:
        !          2864: 2005-11-11 17:23  millert
        !          2865:
        !          2866:        * sudo.c, sudo_edit.c: Move sudo_end{gr,pw}ent() until just before
        !          2867:          the exec since they free up our cached copy of the passwd
        !          2868:          structs, including sudo_user and sudo_runas.  Fixes a
        !          2869:          use-after-free bug.
        !          2870:
        !          2871: 2005-11-11 17:19  millert
        !          2872:
        !          2873:        * visudo.c: Close all fd's before executing editor.
        !          2874:
        !          2875: 2005-11-11 17:17  millert
        !          2876:
        !          2877:        * sudo.c: Enable malloc debugging on OpenBSD when SUDO_DEVEL is
        !          2878:          set.
        !          2879:
        !          2880: 2005-11-11 11:22  millert
        !          2881:
        !          2882:        * check.c: Fix fd leak when lecture file option is enabled.  From
        !          2883:          Jerry Brown
        !          2884:
        !          2885: 2005-11-07 11:02  millert
        !          2886:
        !          2887:        * env.c: Add PERLLIB, PERL5LIB and PERL5OPT to the default list of
        !          2888:          environment variables to remove.  From Charles Morris
        !          2889:
        !          2890: 2005-11-01 13:24  millert
        !          2891:
        !          2892:        * env.c: add JAVA_TOOL_OPTIONS to initial_badenv_table for java 5
        !          2893:
        !          2894: 2005-10-27 20:35  millert
        !          2895:
        !          2896:        * env.c: add PS4 and SHELLOPTS to initial_badenv_table for bash
        !          2897:
        !          2898: 2005-08-14 20:32  millert
        !          2899:
        !          2900:        * sudoers.pod: Fix typo; Toby Peterson
        !          2901:
        !          2902: 2005-08-02 09:57  millert
        !          2903:
        !          2904:        * tsgetgrpw.c: Make return buffers static so they don't get
        !          2905:          clobbered
        !          2906:
        !          2907: 2005-07-27 21:14  millert
        !          2908:
        !          2909:        * auth/securid5.c: Fix securid5 authentication, was not checking
        !          2910:          for ACM_OK.  Also add default cases for the two switch()es.
        !          2911:          Problem noted by ccon at worldbank
        !          2912:
        !          2913: 2005-06-26 20:10  millert
        !          2914:
        !          2915:        * ldap.c: Remove ncat() in favor of just counting bytes and
        !          2916:          pre-allocating what is needed.
        !          2917:
        !          2918: 2005-06-26 19:44  millert
        !          2919:
        !          2920:        * ldap.c: Fix up some comments Add missing fclose() for the
        !          2921:          rootbinddn case
        !          2922:
        !          2923: 2005-06-26 19:38  millert
        !          2924:
        !          2925:        * ldap.c: align struct ldap_config
        !          2926:
        !          2927: 2005-06-26 19:37  millert
        !          2928:
        !          2929:        * ldap.c: use LINE_MAX for max conf file line size
        !          2930:
        !          2931: 2005-06-26 18:36  millert
        !          2932:
        !          2933:        * pathnames.h.in: add _PATH_LDAP_SECRET
        !          2934:
        !          2935: 2005-06-26 18:36  millert
        !          2936:
        !          2937:        * README.LDAP: Mention rootbinddn Give example ou=SUDOers container
        !          2938:
        !          2939: 2005-06-25 18:03  millert
        !          2940:
        !          2941:        * configure, INSTALL, configure.in, ldap.c: Support rootbinddn in
        !          2942:          ldap.conf
        !          2943:
        !          2944: 2005-06-25 17:46  millert
        !          2945:
        !          2946:        * env.c, sudo.pod, sudoers.pod: Preserve DISPLAY environment
        !          2947:          variable by default.
        !          2948:
        !          2949: 2005-06-25 16:39  millert
        !          2950:
        !          2951:        * acsite.m4, configure: set need_lib_prefix=no for all cases; this
        !          2952:          is safe for LD_PRELOAD
        !          2953:
        !          2954: 2005-06-25 16:15  millert
        !          2955:
        !          2956:        * acsite.m4, configure: set need_version=no for all cases; this is
        !          2957:          safe for LD_PRELOAD
        !          2958:
        !          2959: 2005-06-25 14:45  millert
        !          2960:
        !          2961:        * aclocal.m4: typo
        !          2962:
        !          2963: 2005-06-25 14:33  millert
        !          2964:
        !          2965:        * configure, configure.in: Add dragonfly
        !          2966:
        !          2967: 2005-06-25 14:29  millert
        !          2968:
        !          2969:        * auth/pam.c: Fix call to pam_end() when pam_open_session() fails.
        !          2970:
        !          2971: 2005-06-25 14:21  millert
        !          2972:
        !          2973:        * configure: regen
        !          2974:
        !          2975: 2005-06-25 14:20  millert
        !          2976:
        !          2977:        * acsite.m4: rebuild acsite.m4 from libtool 1.9f  libtool.m4
        !          2978:          ltoptions.m4 ltsugar.m4 ltversion.m4
        !          2979:
        !          2980: 2005-06-25 14:08  millert
        !          2981:
        !          2982:        * config.guess, config.sub, ltmain.sh: merge in local changes:
        !          2983:          config.guess:  o better openbsd support config.sub:  o hiuxmpp
        !          2984:          support ltmain.sh  o remove requirement that libs must begin with
        !          2985:          "lib"  o don't print a bunch of crap about library installs  o
        !          2986:          don't run ldconfig
        !          2987:
        !          2988: 2005-06-25 14:05  millert
        !          2989:
        !          2990:        * config.guess, config.sub, ltmain.sh: libtool 1.9f
        !          2991:
        !          2992: 2005-06-25 14:04  millert
        !          2993:
        !          2994:        * configure.in: Update with autoupdate and make minor changes for
        !          2995:          libtool 1.9f
        !          2996:
        !          2997: 2005-06-22 23:19  millert
        !          2998:
        !          2999:        * parse.c: don't call sudo_ldap_display_cmnd if ldap not setup
        !          3000:
        !          3001: 2005-06-22 23:04  millert
        !          3002:
        !          3003:        * check.c, compat.h, fileops.c, gettime.c, sudo_edit.c, visudo.c,
        !          3004:          emul/timespec.h: Move declatation of struct timespec to its own
        !          3005:          include files for systems without it since it needs time_t
        !          3006:          defined.
        !          3007:
        !          3008: 2005-06-22 22:57  millert
        !          3009:
        !          3010:        * ldap.c: Don't set safe_cmnd for the "sudo ALL" case.
        !          3011:
        !          3012: 2005-05-27 01:59  millert
        !          3013:
        !          3014:        * auth/pam.c: Call pam_open_session() and pam_close_session() to
        !          3015:          give pam_limits a chance to run.  Idea from Karel Zak.
        !          3016:
        !          3017: 2005-04-24 19:24  millert
        !          3018:
        !          3019:        * check.c, sudo.c: Add explicit cast from mode_t -> u_int in printf
        !          3020:          to silence warnings on Solaris
        !          3021:
        !          3022: 2005-04-24 19:22  millert
        !          3023:
        !          3024:        * parse.c: include grp.h to silence a warning on Solaris
        !          3025:
        !          3026: 2005-04-23 15:10  millert
        !          3027:
        !          3028:        * parse.c: Fix printing of += and -= defaults.
        !          3029:
        !          3030: 2005-04-17 01:21  millert
        !          3031:
        !          3032:        * mon_systrace.c: Sanity check number of syscall args with argsize.
        !          3033:          Not really needed but a little paranoia never hurts.
        !          3034:
        !          3035: 2005-04-17 01:18  millert
        !          3036:
        !          3037:        * mon_systrace.c, mon_systrace.h: Don't do pointer arithmetic on
        !          3038:          void * Use int, not size_t/ssize_t for systrace lengths (since it
        !          3039:          uses int)
        !          3040:
        !          3041: 2005-04-16 03:14  millert
        !          3042:
        !          3043:        * mon_systrace.c: Add some memsets for paranoia Fix namespace
        !          3044:          collsion w/ error Check rval of decode_args() and update_env()
        !          3045:          Remove improper setting of validated variable
        !          3046:
        !          3047: 2005-04-11 21:37  millert
        !          3048:
        !          3049:        * parse.c, sudo.c, sudo.h: In -l mode, only check local sudoers
        !          3050:          file if def_ignore_sudoers is not set and call LDAP versions from
        !          3051:          display_privs() and display_cmnd() instead of directly from
        !          3052:          main().  Because of this we need to defer closing the ldap
        !          3053:          connection until after -l processing has ocurred and we must pass
        !          3054:          in the ldap pointer to display_privs() and display_cmnd().
        !          3055:
        !          3056: 2005-04-11 21:33  millert
        !          3057:
        !          3058:        * ldap.c: Reorganize LDAP code to better match normal sudoers
        !          3059:          parsing.  Instead of storing strings for later printing in -l
        !          3060:          mode we do another query since the authenticating user and the
        !          3061:          user being listed may not be the same (the new -U flag).  Also
        !          3062:          add support for "sudo -l command".
        !          3063:
        !          3064:          There is still a fair bit if duplicated code that can probably be
        !          3065:          refactored.
        !          3066:
        !          3067: 2005-04-11 00:37  millert
        !          3068:
        !          3069:        * ldap.c: Replace pass variable with do_netgr for better
        !          3070:          readability.
        !          3071:
        !          3072: 2005-04-10 23:49  millert
        !          3073:
        !          3074:        * ldap.c: use DPRINTF macro
        !          3075:
        !          3076: 2005-04-10 23:18  millert
        !          3077:
        !          3078:        * ldap.c: estrdup, not strdup
        !          3079:
        !          3080: 2005-04-10 17:44  millert
        !          3081:
        !          3082:        * parse.c: Add macro to test if the tag changed to improve
        !          3083:          readability.
        !          3084:
        !          3085: 2005-04-10 17:40  millert
        !          3086:
        !          3087:        * parse.c: Avoid printing defaults header if there are no defaults
        !          3088:          to print...
        !          3089:
        !          3090: 2005-04-10 15:29  millert
        !          3091:
        !          3092:        * glob.c: Fix a warning on systems without strlcpy().
        !          3093:
        !          3094: 2005-04-10 13:32  millert
        !          3095:
        !          3096:        * pwutil.c: Use macros where possible for sudo_grdup() like
        !          3097:          sudo_pwdup().
        !          3098:
        !          3099: 2005-04-08 17:04  millert
        !          3100:
        !          3101:        * utimes.c: It is possible for tv_usec to hold >= 1000000 usecs so
        !          3102:          add in tv_usec / 1000000.
        !          3103:
        !          3104: 2005-03-29 23:38  millert
        !          3105:
        !          3106:        * auth/kerb5.c: The component in krb5_principal_get_comp_string()
        !          3107:          should be 1, not 0 for Heimdal.  From Alex Plotnick.
        !          3108:
        !          3109: 2005-03-29 09:29  millert
        !          3110:
        !          3111:        * alias.c, alloc.c, check.c, defaults.c, find_path.c, gram.c,
        !          3112:          gram.y, interfaces.c, ldap.c, logging.c, match.c, mon_systrace.c,
        !          3113:          pwutil.c, redblack.c, sudo.c, sudo.h, toke.c, toke.l, visudo.c:
        !          3114:          Add efree() for consistency with emalloc() et al.  Allows us to
        !          3115:          rely on C89 behavior (free(NULL) is valid) even on K&R.
        !          3116:
        !          3117: 2005-03-28 22:33  millert
        !          3118:
        !          3119:        * parse.c, sudo.c: Move initgroups() for -U option into
        !          3120:          display_privs() so group matching in sudoers works correctly.
        !          3121:
        !          3122: 2005-03-26 21:34  millert
        !          3123:
        !          3124:        * ldap.c: Removed duplicate call to ldap_unbind_s introduced along
        !          3125:          with sudo_ldap_close.
        !          3126:
        !          3127: 2005-03-26 20:01  millert
        !          3128:
        !          3129:        * parse.c: Add missing space in Defaults printing
        !          3130:
        !          3131: 2005-03-25 12:36  millert
        !          3132:
        !          3133:        * pwutil.c: Sync sudo_pwdup with OpenBSD changes: use macros for
        !          3134:          size computaton and string copies.
        !          3135:
        !          3136: 2005-03-18 22:08  millert
        !          3137:
        !          3138:        * pwutil.c: Zero old pw_passwd before replacing with version from
        !          3139:          shadow file.
        !          3140:
        !          3141: 2005-03-18 22:07  millert
        !          3142:
        !          3143:        * configure, configure.in: Only attempt shadow password detection
        !          3144:          if PAM is not being used Add shadow_* variables to make shadow
        !          3145:          password detection more generic.
        !          3146:
        !          3147: 2005-03-18 21:46  millert
        !          3148:
        !          3149:        * configure.in: Use OSDEFS for os-specific -D_FOO_BAR stuff rather
        !          3150:          than CPPFLAGS
        !          3151:
        !          3152: 2005-03-12 19:27  millert
        !          3153:
        !          3154:        * sudoers.pod: use a non-breaking space to avoid a double space
        !          3155:          after e.g.
        !          3156:
        !          3157: 2005-03-12 19:26  millert
        !          3158:
        !          3159:        * sudo.pod: commna, not colon after e.g.
        !          3160:
        !          3161: 2005-03-12 18:43  millert
        !          3162:
        !          3163:        * sudo_noexec.c: Add __ variants of the exec functions.  GNU libc
        !          3164:          at least uses __execve() internally.
        !          3165:
        !          3166: 2005-03-12 12:29  millert
        !          3167:
        !          3168:        * indent.pro: Match reality a bit more.
        !          3169:
        !          3170: 2005-03-12 12:27  millert
        !          3171:
        !          3172:        * pwutil.c: Missed piece from rev. 1.6, fix sudo_getpwnam() too.
        !          3173:
        !          3174: 2005-03-11 23:42  millert
        !          3175:
        !          3176:        * pwutil.c: Store shadow password after making a local copy of
        !          3177:          struct passwd in case normal and shadow routines use the same
        !          3178:          internal buffer in libc.
        !          3179:
        !          3180: 2005-03-10 20:57  millert
        !          3181:
        !          3182:        * alloc.c, logging.c: Make varargs usage consistent with the rest
        !          3183:          of the code.
        !          3184:
        !          3185: 2005-03-10 10:09  millert
        !          3186:
        !          3187:        * sudo_noexec.c: Wrap more of the exec family since on Linux the
        !          3188:          others do not appear to go through the normal execve() path.
        !          3189:
        !          3190: 2005-03-10 09:57  millert
        !          3191:
        !          3192:        * visudo.c: make print_unused static like proto says
        !          3193:
        !          3194: 2005-03-10 09:55  millert
        !          3195:
        !          3196:        * glob.c: silence a warning on K&R systems
        !          3197:
        !          3198: 2005-03-10 09:51  millert
        !          3199:
        !          3200:        * parse.c, alias.c, error.c: make this build in K&R land
        !          3201:
        !          3202: 2005-03-07 22:21  millert
        !          3203:
        !          3204:        * toke.c: regen
        !          3205:
        !          3206: 2005-03-05 22:46  millert
        !          3207:
        !          3208:        * ldap.c: return(foo) not return foo optimize _atobool() slightly
        !          3209:
        !          3210: 2005-03-05 22:40  millert
        !          3211:
        !          3212:        * ldap.c: Use TRUE/FALSE
        !          3213:
        !          3214: 2005-03-05 22:31  millert
        !          3215:
        !          3216:        * ldap.c: Reformat to match the rest of sudo's code.
        !          3217:
        !          3218: 2005-03-05 19:33  millert
        !          3219:
        !          3220:        * sudo.pod: I am the primary author
        !          3221:
        !          3222: 2005-02-22 22:28  millert
        !          3223:
        !          3224:        * README, RUNSON, Makefile.in: The RUNSON file is toast--it
        !          3225:          confused too many people and really isn't needed in a
        !          3226:          configure-oriented world.
        !          3227:
        !          3228: 2005-02-22 22:28  millert
        !          3229:
        !          3230:        * INSTALL: alternate -> alternative
        !          3231:
        !          3232: 2005-02-22 22:26  millert
        !          3233:
        !          3234:        * tgetpass.c: Use TCSADRAIN instead of TCSAFLUSH since some OSes
        !          3235:          have issues with TCSAFLUSH.
        !          3236:
        !          3237: 2005-02-22 22:16  millert
        !          3238:
        !          3239:        * toke.l: Allow leading blanks before Defaults and Foo_Alias
        !          3240:          definitions
        !          3241:
        !          3242: 2005-02-22 22:14  millert
        !          3243:
        !          3244:        * Makefile.in: fix rules to build toke.o and gram.o in devel mode
        !          3245:
        !          3246: 2005-02-20 13:00  millert
        !          3247:
        !          3248:        * sudoers.pod: env_keep overrides set_logname
        !          3249:
        !          3250: 2005-02-20 12:57  millert
        !          3251:
        !          3252:        * env.c: Fix disabling set_logname and make env_keep override
        !          3253:          set_logname.
        !          3254:
        !          3255: 2005-02-20 12:28  millert
        !          3256:
        !          3257:        * compat.h, config.h.in, configure, configure.in: No longer need
        !          3258:          memmove()
        !          3259:
        !          3260: 2005-02-20 11:48  millert
        !          3261:
        !          3262:        * env.c, sudo.c: Just clean the environment once.  This assumes
        !          3263:          that any further setenv/putenv will be able to handle the fact
        !          3264:          that we replaced environ with our own malloc'd copy but all the
        !          3265:          implementations I've checked do.
        !          3266:
        !          3267: 2005-02-15 23:16  millert
        !          3268:
        !          3269:        * env.c, sudo.c: In -i mode, base the value of insert_env()'s
        !          3270:          dupcheck flag on DID_FOO flags.  Move checks for $HOME resetting
        !          3271:          into rebuild_env()
        !          3272:
        !          3273: 2005-02-13 00:33  millert
        !          3274:
        !          3275:        * env.c, sudo.c: Move setting of user_path, user_shell, user_prompt
        !          3276:          and prev_user into init_vars() since user_shell at least is
        !          3277:          needed there.
        !          3278:
        !          3279: 2005-02-12 18:51  millert
        !          3280:
        !          3281:        * Makefile.in: fix devel builds
        !          3282:
        !          3283: 2005-02-12 18:46  millert
        !          3284:
        !          3285:        * check.c, sudo.c: Fix some printf format mismatches on error.
        !          3286:
        !          3287: 2005-02-12 18:33  millert
        !          3288:
        !          3289:        * configure, gram.c, toke.c: regen
        !          3290:
        !          3291: 2005-02-12 17:56  millert
        !          3292:
        !          3293:        * LICENSE, Makefile.binary.in, Makefile.in, aclocal.m4, alias.c,
        !          3294:          alloc.c, check.c, closefrom.c, compat.h, configure.in,
        !          3295:          defaults.c, defaults.h, env.c, error.c, fileops.c, find_path.c,
        !          3296:          getprogname.c, getspwuid.c, gettime.c, goodpath.c, gram.y,
        !          3297:          interfaces.c, interfaces.h, ldap.c, logging.c, logging.h,
        !          3298:          match.c, mon_systrace.c, parse.c, redblack.c, redblack.h,
        !          3299:          set_perms.c, sigaction.c, snprintf.c, strcasecmp.c, strerror.c,
        !          3300:          strlcat.c, strlcpy.c, sudo.c, sudo.h, sudo.pod, sudo_edit.c,
        !          3301:          sudo_noexec.c, sudoers.pod, testsudoers.c, tgetpass.c, toke.l,
        !          3302:          utimes.c, version.h, visudo.c, visudo.pod, zero_bytes.c,
        !          3303:          auth/afs.c, auth/aix_auth.c, auth/bsdauth.c, auth/dce.c,
        !          3304:          auth/fwtk.c, auth/kerb4.c, auth/kerb5.c, auth/pam.c,
        !          3305:          auth/passwd.c, auth/rfc1938.c, auth/secureware.c, auth/securid.c,
        !          3306:          auth/securid5.c, auth/sia.c, auth/sudo_auth.c, auth/sudo_auth.h,
        !          3307:          emul/utime.h: Update copyright years.
        !          3308:
        !          3309: 2005-02-12 16:46  millert
        !          3310:
        !          3311:        * BUGS, INSTALL, INSTALL.binary, Makefile.in, README, configure.in:
        !          3312:          version 1.7
        !          3313:
        !          3314: 2005-02-12 16:16  millert
        !          3315:
        !          3316:        * WHATSNEW: What's new in sudo 1.7, based on the 1.7 CHANGES
        !          3317:          entries.
        !          3318:
        !          3319: 2005-02-11 18:06  millert
        !          3320:
        !          3321:        * compat.h, logging.h, sudo.h: Add __printflike and use it with gcc
        !          3322:          to warn about printf-like format mismatches
        !          3323:
        !          3324: 2005-02-10 00:16  millert
        !          3325:
        !          3326:        * CHANGES, ChangeLog: Replaced CHANGES file with ChangeLog
        !          3327:          generated from cvs logs
        !          3328:
        !          3329: 2005-02-10 00:03  millert
        !          3330:
        !          3331:        * set_perms.c: Use warning/error instead of perror/fatal.
        !          3332:
        !          3333: 2005-02-09 23:13  millert
        !          3334:
        !          3335:        * config.guess: Update OpenBSD section
        !          3336:
        !          3337: 2005-02-09 23:10  millert
        !          3338:
        !          3339:        * UPGRADE: Add upgrading noted for 1.7
        !          3340:
        !          3341: 2005-02-09 23:00  millert
        !          3342:
        !          3343:        * env.c, sudo.c, sudoers.pod: Instead of zeroing out the
        !          3344:          environment, just prune out entries based on the env_delete and
        !          3345:          env_check lists.  Base building up the new environment on the
        !          3346:          current environment and the variables we removed initially.
        !          3347:
        !          3348: 2005-02-09 22:23  millert
        !          3349:
        !          3350:        * configure, configure.in, sudo.c, config.h.in: Set locale to "C"
        !          3351:          if locales are supported, just to be safe.
        !          3352:
        !          3353: 2005-02-09 22:19  millert
        !          3354:
        !          3355:        * toke.c, toke.l: Cast argument to ctype functions to unsigned
        !          3356:          char.
        !          3357:
        !          3358: 2005-02-07 22:56  millert
        !          3359:
        !          3360:        * env.c: correct value for DID_USER
        !          3361:
        !          3362: 2005-02-07 22:55  millert
        !          3363:
        !          3364:        * error.c, fnmatch.c, getcwd.c, glob.c, snprintf.c: #include
        !          3365:          <compat.h> not "compat.h"
        !          3366:
        !          3367: 2005-02-07 22:51  millert
        !          3368:
        !          3369:        * defaults.c: Reset the environment by default.
        !          3370:
        !          3371: 2005-02-07 22:50  millert
        !          3372:
        !          3373:        * sudo.c: Alloc an extra slot in NewArgv.  Removes the need to
        !          3374:          malloc an new vector if execve() fails.
        !          3375:
        !          3376: 2005-02-06 23:16  millert
        !          3377:
        !          3378:        * INSTALL, config.h.in, configure, configure.in, sudo.c: Use
        !          3379:          execve(2) and wrap the command in sh if we get ENOEXEC.
        !          3380:
        !          3381: 2005-02-05 23:01  millert
        !          3382:
        !          3383:        * sudo_noexec.c: Only include time.h on systems that lack struct
        !          3384:          timespec which gets defind in compat.h (using time_t).
        !          3385:
        !          3386: 2005-02-05 22:59  millert
        !          3387:
        !          3388:        * sudo_noexec.c: Include time.h for time_t in compat.h for systems
        !          3389:          w/o struct timespec.
        !          3390:
        !          3391: 2005-02-05 22:56  millert
        !          3392:
        !          3393:        * configure, compat.h, config.h.in, configure.in: use bcopy on
        !          3394:          systems w/o memmove
        !          3395:
        !          3396: 2005-02-05 22:31  millert
        !          3397:
        !          3398:        * compat.h: __attribute__((__unused__)) doesn't work in gcc 2.7.2.1
        !          3399:          so limit its use to gcc >= 2.8.
        !          3400:
        !          3401: 2005-02-05 21:21  millert
        !          3402:
        !          3403:        * Makefile.in: Add explicit rule to build sudo_noexec.lo
        !          3404:
        !          3405: 2005-02-05 17:56  millert
        !          3406:
        !          3407:        * INSTALL.configure, Makefile.in: No longer depend on VPATH;
        !          3408:          pointed out a bunch of missed dependencies.
        !          3409:
        !          3410: 2005-02-05 13:18  millert
        !          3411:
        !          3412:        * TROUBLESHOOTING: Help for PAM when account section is missing
        !          3413:
        !          3414: 2005-02-05 13:01  millert
        !          3415:
        !          3416:        * auth/pam.c: Give user a clue when there is a missing "account"
        !          3417:          section in the PAM config.
        !          3418:
        !          3419: 2005-02-05 10:22  millert
        !          3420:
        !          3421:        * auth/pam.c: Better error handling.
        !          3422:
        !          3423: 2005-02-05 09:57  millert
        !          3424:
        !          3425:        * configure, config.h.in, configure.in: Move _FOO_SOURCE to
        !          3426:          CPPFLAGS so it takes effect as early as possible.  Silences a
        !          3427:          warning about isblank() on linux.
        !          3428:
        !          3429: 2005-02-04 21:49  millert
        !          3430:
        !          3431:        * auth/pam.c: Fix typo (missing comma) that caused an incorrect
        !          3432:          number of args to be passed to log_error().
        !          3433:
        !          3434: 2005-01-31 23:03  millert
        !          3435:
        !          3436:        * pwutil.c: Don't try to destroy a tree we didn't create.
        !          3437:
        !          3438: 2005-01-27 10:42  millert
        !          3439:
        !          3440:        * alias.c, alloc.c, check.c, closefrom.c, compat.h, defaults.c,
        !          3441:          env.c, error.c, fileops.c, find_path.c, fnmatch.c, getcwd.c,
        !          3442:          getprogname.c, getspwuid.c, gettime.c, goodpath.c, gram.c,
        !          3443:          gram.y, interfaces.c, ldap.c, logging.c, match.c, mon_systrace.c,
        !          3444:          parse.c, pwutil.c, set_perms.c, sigaction.c, snprintf.c,
        !          3445:          strcasecmp.c, strerror.c, strlcat.c, strlcpy.c, sudo.c,
        !          3446:          sudo_edit.c, sudo_noexec.c, testsudoers.c, tgetpass.c, toke.c,
        !          3447:          toke.l, utimes.c, visudo.c, zero_bytes.c, auth/afs.c,
        !          3448:          auth/aix_auth.c, auth/bsdauth.c, auth/dce.c, auth/fwtk.c,
        !          3449:          auth/kerb4.c, auth/kerb5.c, auth/pam.c, auth/passwd.c,
        !          3450:          auth/rfc1938.c, auth/secureware.c, auth/securid.c,
        !          3451:          auth/securid5.c, auth/sia.c, auth/sudo_auth.c: Add __unused to
        !          3452:          rcsids
        !          3453:
        !          3454: 2005-01-21 10:34  millert
        !          3455:
        !          3456:        * configure, configure.in: Fix error message when mixing invalid
        !          3457:          auth types
        !          3458:
        !          3459: 2005-01-21 10:32  millert
        !          3460:
        !          3461:        * INSTALL: PAM, AIX auth, BSD auth and login_cap are now on by
        !          3462:          default if the OS supports them.
        !          3463:
        !          3464: 2005-01-21 10:29  millert
        !          3465:
        !          3466:        * config.h.in, auth/sudo_auth.h: s/HAVE_AUTHENTICATE/HAVE_AIXAUTH/g
        !          3467:
        !          3468: 2005-01-21 10:29  millert
        !          3469:
        !          3470:        * configure.in: Better checking for conflicting authentication
        !          3471:          methods Display the authentication methods used at the end of
        !          3472:          configure Rename --with-authenticate -> --with-aixauth Use
        !          3473:          --with-aixauth, --with-bsdauth, --with-pam, --with-logincap by
        !          3474:          default on systems that support them unless disabled.  Add
        !          3475:          OSMAJOR variable that replaces old OSREV; now OSREV has full
        !          3476:          version number
        !          3477:
        !          3478: 2005-01-17 19:40  millert
        !          3479:
        !          3480:        * def_data.c, def_data.in, sudo.c, sudoers.pod: s/-O/-C/
        !          3481:
        !          3482: 2005-01-14 13:35  millert
        !          3483:
        !          3484:        * configure.in: Replace:     test -n "$FOO" || FOO="bar"
        !          3485:
        !          3486:          With:     : ${FOO='bar'}
        !          3487:
        !          3488: 2005-01-09 18:58  millert
        !          3489:
        !          3490:        * pwutil.c, testsudoers.c, tsgetgrpw.c: Use function pointers to
        !          3491:          only call private passwd/group routines when using a nonstandard
        !          3492:          passwd/group file.
        !          3493:
        !          3494: 2005-01-06 10:34  millert
        !          3495:
        !          3496:        * CHANGES: sync
        !          3497:
        !          3498: 2005-01-05 22:16  millert
        !          3499:
        !          3500:        * tsgetgrpw.c: Can't use strtok() since it doesn't handle empty
        !          3501:          fields so add getpwent()/getgrent() functions and call those.
        !          3502:
        !          3503: 2005-01-05 17:29  millert
        !          3504:
        !          3505:        * Makefile.in: Fix dummied out toke.c and gram.c dependencies.
        !          3506:
        !          3507: 2005-01-05 17:18  millert
        !          3508:
        !          3509:        * Makefile.in: Rename PARSESRCS -> GENERATED since it is only used
        !          3510:          in the clean target Add devdir variable and use it to specify the
        !          3511:          path to parser sources
        !          3512:
        !          3513: 2005-01-05 17:17  millert
        !          3514:
        !          3515:        * configure: regen
        !          3516:
        !          3517: 2005-01-05 17:17  millert
        !          3518:
        !          3519:        * configure.in: Add a devdir variables that defaults to $(srcdir)
        !          3520:          and is set to . if --devel was specified.  Allows for proper
        !          3521:          dependecies building the parser.
        !          3522:
        !          3523: 2005-01-05 14:50  millert
        !          3524:
        !          3525:        * testsudoers.c: Add support for custom passwd/group files.
        !          3526:
        !          3527: 2005-01-05 14:47  millert
        !          3528:
        !          3529:        * Makefile.in: Build private copy of pwutil.o for testsudoers with
        !          3530:          MYPW defined so it uses our own passwd/group routines.
        !          3531:
        !          3532: 2005-01-05 14:46  millert
        !          3533:
        !          3534:        * visudo.c: Remove sudo_*{pw,gr}* stubs and add
        !          3535:          sudo_setspent/sudo_endspent stubs instead.  We can now just use
        !          3536:          the caching sudo_*{pw,gr}* functions in pwutil.c Add comment
        !          3537:          about wanting to call sudo_endpwent/sudo_endgrent in cleanup()
        !          3538:
        !          3539: 2005-01-05 14:44  millert
        !          3540:
        !          3541:        * tsgetgrpw.c: Remove caching; we will just use what is in pwutil.c
        !          3542:          Use global buffers for passwd/group structs Rename functions from
        !          3543:          sudo_* to my_*
        !          3544:
        !          3545: 2005-01-05 14:43  millert
        !          3546:
        !          3547:        * logging.c, sudo.c: g/c pwcache_init/pwcache_destroy
        !          3548:
        !          3549: 2005-01-05 14:42  millert
        !          3550:
        !          3551:        * sudo.h: Undo last commit and add sudo_setspent and sudo_endspent
        !          3552:          instead.
        !          3553:
        !          3554: 2005-01-05 14:41  millert
        !          3555:
        !          3556:        * getspwuid.c, pwutil.c: Move all but the shadow stuff from
        !          3557:          getspwuid.c to pwutil.c and pwcache_get and pwcache_put as they
        !          3558:          are no longer needed.  Also add preprocessor magic to use private
        !          3559:          versions of the passwd and group routines if MYPW is defined (for
        !          3560:          use by testsudoers).
        !          3561:
        !          3562: 2005-01-04 22:40  millert
        !          3563:
        !          3564:        * tsgetgrpw.c: zero out struct passwd/group before filling it in so
        !          3565:          if there are fields we don't handle they end up as 0.
        !          3566:
        !          3567: 2005-01-04 20:10  millert
        !          3568:
        !          3569:        * logging.c, sudo.c, sudo.h, testsudoers.c, visudo.c: Adapt to
        !          3570:          pwutil.c
        !          3571:
        !          3572: 2005-01-04 20:09  millert
        !          3573:
        !          3574:        * Makefile.in: Add tsgetgrpw.c and pwutil.c Rename the *OBJ
        !          3575:          variables for better readability.
        !          3576:
        !          3577: 2005-01-04 20:08  millert
        !          3578:
        !          3579:        * tsgetgrpw.c: Passwd and group lookup routines for testsudoers
        !          3580:          that support alternate passwd and group files.
        !          3581:
        !          3582: 2005-01-04 20:07  millert
        !          3583:
        !          3584:        * getspwuid.c, pwutil.c: Split off pw/gr cache and dup code into
        !          3585:          its own file.  This allows visudo and testsudoers to use the
        !          3586:          pw/gr cache too.
        !          3587:
        !          3588: 2005-01-01 19:31  millert
        !          3589:
        !          3590:        * parse.c: Print Defaults info in "sudo -l" output and wrap lines
        !          3591:          based on the terminal width.
        !          3592:
        !          3593: 2005-01-01 12:41  millert
        !          3594:
        !          3595:        * match.c, visudo.c, testsudoers.c: Only check group vector in
        !          3596:          usergr_matches() if we are matching the invoking or list user.
        !          3597:          Always check the group members, even if there was a group vector.
        !          3598:
        !          3599: 2004-12-17 17:24  millert
        !          3600:
        !          3601:        * LICENSE, Makefile.in, fnmatch.3: No longer bundle fnmatch.3
        !          3602:
        !          3603: 2004-12-17 13:12  millert
        !          3604:
        !          3605:        * CHANGES, TODO: checkpoint
        !          3606:
        !          3607: 2004-12-16 14:20  millert
        !          3608:
        !          3609:        * sudo.c: sort usage
        !          3610:
        !          3611: 2004-12-16 14:20  millert
        !          3612:
        !          3613:        * sudo.pod: Sort command line options
        !          3614:
        !          3615: 2004-12-16 13:33  millert
        !          3616:
        !          3617:        * def_data.c, def_data.h, def_data.in, defaults.c, logging.c,
        !          3618:          sudo.c, sudo.pod, sudoers.pod: Add closefrom sudoers option to
        !          3619:          start closing at a point other than 3.  Add closefrom_override
        !          3620:          sudoers option and -C sudo flag to allow the user to specify a
        !          3621:          different closefrom starting point.
        !          3622:
        !          3623: 2004-12-16 13:25  millert
        !          3624:
        !          3625:        * pathnames.h.in: Add _PATH_DEVNULL for those without it.
        !          3626:
        !          3627: 2004-12-15 22:55  millert
        !          3628:
        !          3629:        * LICENSE: no more UCB strcasecmp
        !          3630:
        !          3631: 2004-12-15 22:54  millert
        !          3632:
        !          3633:        * strcasecmp.c: replace BSD licensed one with version derived from
        !          3634:          pdksh
        !          3635:
        !          3636: 2004-12-09 21:07  millert
        !          3637:
        !          3638:        * sudo.c: Fix last commit.
        !          3639:
        !          3640: 2004-12-09 19:26  millert
        !          3641:
        !          3642:        * sudo.c: Make sure stdin, stdout and stderr are open and dup them
        !          3643:          to /dev/null if not.
        !          3644:
        !          3645: 2004-12-03 13:57  millert
        !          3646:
        !          3647:        * ldap.c, mon_systrace.c, sudo.c, sudo.h: add sudo_ldap_close
        !          3648:
        !          3649: 2004-12-03 13:52  millert
        !          3650:
        !          3651:        * fileops.c, gettime.c, sudo.c, sudo_edit.c, utimes.c, visudo.c:
        !          3652:          Use TIME_WITH_SYS_TIME
        !          3653:
        !          3654: 2004-12-03 13:48  millert
        !          3655:
        !          3656:        * configure, configure.in, config.h.in: Add TIME_WITH_SYS_TIME_H
        !          3657:
        !          3658: 2004-12-02 11:18  millert
        !          3659:
        !          3660:        * env.c: Add missing braces to avoid DYLD_FORCE_FLAT_NAMESPACE
        !          3661:          being set unconditionally on darwin.  From Toby Peterson.
        !          3662:
        !          3663: 2004-12-02 10:40  millert
        !          3664:
        !          3665:        * getspwuid.c: Check rbinsert() return value.  In the case of faked
        !          3666:          up entries there is usually a negative response cached that we
        !          3667:          need to overwrite.
        !          3668:
        !          3669:          In pwfree() don't try to zero out a NULL pw_passwd pointer.
        !          3670:
        !          3671: 2004-12-02 09:53  millert
        !          3672:
        !          3673:        * mon_systrace.c: Use the double fork trick to avoid the monitor
        !          3674:          process being waited for by the main program run through sudo.
        !          3675:
        !          3676: 2004-11-29 12:52  millert
        !          3677:
        !          3678:        * sudo.c: Call initgroups() in -U mode so group matches work
        !          3679:          normally.
        !          3680:
        !          3681: 2004-11-29 12:34  millert
        !          3682:
        !          3683:        * def_data.h, mkdefaults: Don't print a trailing comma for the last
        !          3684:          entry in enum def_tupple
        !          3685:
        !          3686: 2004-11-28 16:08  millert
        !          3687:
        !          3688:        * sudoers.cat, sudoers.man.in, sudoers.pod: Mention values when
        !          3689:          lecture, listpw and verifypw are used in boolean context.
        !          3690:
        !          3691: 2004-11-28 16:05  millert
        !          3692:
        !          3693:        * def_data.c, def_data.in: verifypw when used in a boolean TRUE
        !          3694:          context should be "all", not "any".
        !          3695:
        !          3696: 2004-11-26 14:21  millert
        !          3697:
        !          3698:        * def_data.in, defaults.c: Allow tuples that can be used as
        !          3699:          booleans to be used as boolean TRUE.  In this case the 2nd
        !          3700:          possible value of the tuple is used for TRUE.
        !          3701:
        !          3702: 2004-11-25 12:23  millert
        !          3703:
        !          3704:        * configure, configure.in: Correct the test for 2-parameter
        !          3705:          timespecsub
        !          3706:
        !          3707: 2004-11-25 12:20  millert
        !          3708:
        !          3709:        * sudo.h: Add strub struct definitions for passwd, timeval and
        !          3710:          timespec
        !          3711:
        !          3712: 2004-11-25 12:09  millert
        !          3713:
        !          3714:        * configure, configure.in, config.h.in, sudo_edit.c, visudo.c: Add
        !          3715:          check for 2-argument form of timespecsub (FreeBSD and BSD/OS) and
        !          3716:          fix a typo in the gettimeofday check.
        !          3717:
        !          3718: 2004-11-24 16:44  millert
        !          3719:
        !          3720:        * match.c, testsudoers.c: Deal with user_stat being NULL as it is
        !          3721:          for visudo and testsudoers.
        !          3722:
        !          3723: 2004-11-24 16:31  millert
        !          3724:
        !          3725:        * parse.c, sudo.c, sudo.cat, sudo.h, sudo.man.in, sudo.pod: Add -U
        !          3726:          option to use in conjunction with -l instead of -u.  Add support
        !          3727:          for "sudo -l command" to test a specific command.
        !          3728:
        !          3729: 2004-11-24 16:28  millert
        !          3730:
        !          3731:        * gram.c, gram.y, sudo.c: Set safe_cmnd after sudoers_lookup() if
        !          3732:          it has not been set.  Previously it was set by sudo "ALL" in the
        !          3733:          parser but at that point the fully-qualified pathname has not yet
        !          3734:          been found.
        !          3735:
        !          3736: 2004-11-23 18:18  millert
        !          3737:
        !          3738:        * parse.c, testsudoers.c: Correctly handle multiple privileges per
        !          3739:          userspec and runas inheritence.
        !          3740:
        !          3741: 2004-11-21 14:09  millert
        !          3742:
        !          3743:        * defaults.c: Zero out sd_un for each entry in sudo_defs_table in
        !          3744:          init_defaults.
        !          3745:
        !          3746: 2004-11-19 18:04  millert
        !          3747:
        !          3748:        * toke.c, toke.l: make per-command defaults work with sudoedit
        !          3749:
        !          3750: 2004-11-19 18:00  millert
        !          3751:
        !          3752:        * ldap.c, parse.c, sudo.c, sudo.h: Remove the FLAG_NOPASS,
        !          3753:          FLAG_NOEXEC and FLAG_MONITOR flags.  Instead, we just set the
        !          3754:          approriate defaults variable.
        !          3755:
        !          3756: 2004-11-19 17:09  millert
        !          3757:
        !          3758:        * sample.sudoers, sudoers.cat, sudoers.man.in, sudoers.pod:
        !          3759:          Document per-command Defaults.
        !          3760:
        !          3761: 2004-11-19 16:35  millert
        !          3762:
        !          3763:        * defaults.c, defaults.h, gram.c, gram.h, gram.y, mon_systrace.c,
        !          3764:          sudo.c, testsudoers.c, toke.c, toke.l, visudo.c: Add support for
        !          3765:          command-specific Defaults entries.  E.g.
        !          3766:          Defaults!/usr/bin/vi noexec
        !          3767:
        !          3768: 2004-11-19 15:03  millert
        !          3769:
        !          3770:        * defaults.c, match.c, parse.c, parse.h, testsudoers.c: Change an
        !          3771:          occurence of user_matches() -> runas_matches() missed previously
        !          3772:          runas_matches(), host_matches() and cmnd_matches() only really
        !          3773:          need to pass in a list of members.  user_matches() still needs to
        !          3774:          pass in a passwd struct because of "sudo -l"
        !          3775:
        !          3776: 2004-11-19 14:46  millert
        !          3777:
        !          3778:        * parse.c: Check def_authenticate, def_noexec and def_monitor when
        !          3779:          setting return flags.  XXX May be better to just set the defaults
        !          3780:          directly and get rid of those flags.
        !          3781:
        !          3782: 2004-11-19 13:39  millert
        !          3783:
        !          3784:        * alias.c, alloc.c, check.c, closefrom.c, defaults.c, env.c,
        !          3785:          error.c, fileops.c, find_path.c, fnmatch.c, getcwd.c,
        !          3786:          getprogname.c, getspwuid.c, gettime.c, glob.c, goodpath.c,
        !          3787:          gram.c, gram.y, interfaces.c, ldap.c, logging.c, match.c,
        !          3788:          mon_systrace.c, parse.c, redblack.c, set_perms.c, snprintf.c,
        !          3789:          strcasecmp.c, strerror.c, strlcat.c, strlcpy.c, sudo.c,
        !          3790:          sudo_edit.c, sudo_noexec.c, testsudoers.c, tgetpass.c, toke.c,
        !          3791:          toke.l, utimes.c, visudo.c, zero_bytes.c, auth/afs.c,
        !          3792:          auth/aix_auth.c, auth/bsdauth.c, auth/dce.c, auth/fwtk.c,
        !          3793:          auth/kerb4.c, auth/kerb5.c, auth/pam.c, auth/passwd.c,
        !          3794:          auth/rfc1938.c, auth/secureware.c, auth/securid.c,
        !          3795:          auth/securid5.c, auth/sia.c, auth/sudo_auth.c: Use: #include
        !          3796:          <config.h> Not: #include "config.h" That way we get the correct
        !          3797:          config.h when build dir != src dir
        !          3798:
        !          3799: 2004-11-19 13:30  millert
        !          3800:
        !          3801:        * Makefile.in: Back out part of rev 1.263; fix -I order
        !          3802:
        !          3803: 2004-11-19 13:12  millert
        !          3804:
        !          3805:        * toke.c, toke.l: More robust parsing if #include; could be much
        !          3806:          better still.
        !          3807:
        !          3808: 2004-11-19 12:55  millert
        !          3809:
        !          3810:        * sudo_edit.c, visudo.c: Make arg splitting in visudo and sudoedit
        !          3811:          consistent.
        !          3812:
        !          3813: 2004-11-19 12:35  millert
        !          3814:
        !          3815:        * Makefile.in, alias.c, gram.c, gram.y, parse.h: Split alias
        !          3816:          routines out into their own file.
        !          3817:
        !          3818: 2004-11-19 12:32  millert
        !          3819:
        !          3820:        * error.h: __attribute__ is already defined in compat.h
        !          3821:
        !          3822: 2004-11-19 12:30  millert
        !          3823:
        !          3824:        * visudo.c: quit() should not be __noreturn__ as it is non-void on
        !          3825:          some platforms.
        !          3826:
        !          3827: 2004-11-19 12:24  millert
        !          3828:
        !          3829:        * auth/: fwtk.c, rfc1938.c, securid.c, securid5.c: Add local
        !          3830:          error/warning functions like err/warn but that call an additional
        !          3831:          cleanup routine in the error case.  This means we no longer need
        !          3832:          to compile a special version of alloc.o for visudo.
        !          3833:
        !          3834: 2004-11-19 11:54  millert
        !          3835:
        !          3836:        * parse.h: Clarify comments about the data structures
        !          3837:
        !          3838: 2004-11-18 15:28  millert
        !          3839:
        !          3840:        * visudo.c: Add support for VISUAL and EDITOR containing command
        !          3841:          line args.  If env_editor is not set any args in VISUAL and
        !          3842:          EDITOR are ignored.  Arguments are also now supported in
        !          3843:          def_editor.
        !          3844:
        !          3845: 2004-11-17 14:25  millert
        !          3846:
        !          3847:        * parse.h: alias_matches() is no more
        !          3848:
        !          3849: 2004-11-17 14:09  millert
        !          3850:
        !          3851:        * CHANGES, TODO: sync
        !          3852:
        !          3853: 2004-11-17 13:19  millert
        !          3854:
        !          3855:        * Makefile.in: When regenerating the parser, don't replace gram.h
        !          3856:          unless it has changed.
        !          3857:
        !          3858: 2004-11-17 11:56  millert
        !          3859:
        !          3860:        * Makefile.in: remove Makefile.binary for distclean
        !          3861:
        !          3862: 2004-11-17 11:18  millert
        !          3863:
        !          3864:        * env.c: Preserve KRB5CCNAME in zero_env() and add a paranoia check
        !          3865:          to make sure we can't overflow new_env.
        !          3866:
        !          3867: 2004-11-17 10:33  millert
        !          3868:
        !          3869:        * sudo_edit.c: paranoia when stripping trailing slashes from
        !          3870:          tempdir.
        !          3871:
        !          3872: 2004-11-16 19:00  millert
        !          3873:
        !          3874:        * sudo.c: Set user_ngroups to 0 if getgroups() returns an error.
        !          3875:
        !          3876: 2004-11-16 18:59  millert
        !          3877:
        !          3878:        * configure, configure.in, config.h.in, sudo.c: Add configure check
        !          3879:          for getgroups()
        !          3880:
        !          3881: 2004-11-16 18:55  millert
        !          3882:
        !          3883:        * ldap.c: Use supplementary group vector in struct sudo_user.
        !          3884:
        !          3885: 2004-11-16 18:40  millert
        !          3886:
        !          3887:        * match.c: Only do string comparisons on the group members if there
        !          3888:          is no supplemental group list.
        !          3889:
        !          3890: 2004-11-16 16:10  millert
        !          3891:
        !          3892:        * CHANGES, TODO: sync
        !          3893:
        !          3894: 2004-11-16 15:54  millert
        !          3895:
        !          3896:        * sudo_edit.c: On Digital UNIX _PATH_VAR_TMP doesn't end with a
        !          3897:          trailing slash so chop off any trailing slashes we see and add an
        !          3898:          explicit one.
        !          3899:
        !          3900: 2004-11-16 12:02  millert
        !          3901:
        !          3902:        * match.c: remove bogus XXX comment
        !          3903:
        !          3904: 2004-11-16 11:10  millert
        !          3905:
        !          3906:        * match.c: Get rid of alias_matches and correctly fall through to
        !          3907:          the non-alias cases when there is no alias with the specified
        !          3908:          name.
        !          3909:
        !          3910: 2004-11-16 10:47  millert
        !          3911:
        !          3912:        * getspwuid.c: Cache non-existent passwd/group entries too.
        !          3913:
        !          3914: 2004-11-16 10:45  millert
        !          3915:
        !          3916:        * gram.c: regen
        !          3917:
        !          3918: 2004-11-15 23:32  millert
        !          3919:
        !          3920:        * getspwuid.c: fix typo
        !          3921:
        !          3922: 2004-11-15 23:24  millert
        !          3923:
        !          3924:        * check.c, getspwuid.c, glob.c, ldap.c, logging.c, match.c,
        !          3925:          mon_systrace.h, sudo.c, sudo.h, testsudoers.c, visudo.c:
        !          3926:          Implement group caching and use the passwd and group caches
        !          3927:          throughout.
        !          3928:
        !          3929: 2004-11-15 14:43  millert
        !          3930:
        !          3931:        * match.c: Properly negate the return value of alias_matches() when
        !          3932:          appropriate.
        !          3933:
        !          3934: 2004-11-15 14:38  millert
        !          3935:
        !          3936:        * match.c: Make hostname_matches() return TRUE for a match, else
        !          3937:          FALSE like the caller expects.
        !          3938:
        !          3939: 2004-11-15 13:24  millert
        !          3940:
        !          3941:        * Makefile.in: Add missing dependencies on gram.h
        !          3942:
        !          3943: 2004-11-15 13:06  millert
        !          3944:
        !          3945:        * match.c: Use runas_matches in alias_matches() now that we have
        !          3946:          it.
        !          3947:
        !          3948: 2004-11-15 13:00  millert
        !          3949:
        !          3950:        * parse.c, parse.h: Expand aliases in "sudo -l" mode
        !          3951:
        !          3952: 2004-11-15 12:33  millert
        !          3953:
        !          3954:        * gram.y, match.c: Use ALIAS for the member type when storing an
        !          3955:          alias instead of HOSTALIAS/RUNASALIAS/CMNDALIAS/USERALIAS since
        !          3956:          match.c relies on the more generic type.  Expand runas_matches
        !          3957:          instead of calling user_matches() inside of it since
        !          3958:          user_matches() looks up USERALIASes, not RUNASALIASes.
        !          3959:
        !          3960: 2004-11-15 12:05  millert
        !          3961:
        !          3962:        * CHANGES, getspwuid.c: Paranoia; zero out pw_passwd before freeing
        !          3963:          passwd entry.
        !          3964:
        !          3965: 2004-11-15 10:53  millert
        !          3966:
        !          3967:        * LICENSE, Makefile.in, alloc.c, check.c, config.h.in, configure,
        !          3968:          configure.in, err.c, error.c, error.h, defaults.c, env.c,
        !          3969:          find_path.c, interfaces.c, logging.c, mon_systrace.c, sudo.c,
        !          3970:          sudo.h, sudo_edit.c, testsudoers.c, visudo.c, emul/err.h: Add
        !          3971:          local error/warning functions like err/warn but that call an
        !          3972:          additional cleanup routine in the error case.  This means we no
        !          3973:          longer need to compile a special version of alloc.o for visudo.
        !          3974:
        !          3975: 2004-11-15 09:59  millert
        !          3976:
        !          3977:        * match.c: Use userpw_matches() to compare usernames, not strcmp(),
        !          3978:          since the latter checks for "#uid".
        !          3979:
        !          3980: 2004-11-15 09:53  millert
        !          3981:
        !          3982:        * getspwuid.c, mon_systrace.c, mon_systrace.h, sudo.c: Cache passwd
        !          3983:          db entries in 2 reb-black trees; one indexed by uid, the other by
        !          3984:          user name.  The data returned from the cache should be considered
        !          3985:          read-only and is destroyed by sudo_endpwent().
        !          3986:
        !          3987: 2004-11-15 09:50  millert
        !          3988:
        !          3989:        * match.c: add cast to uid_t
        !          3990:
        !          3991: 2004-11-15 09:49  millert
        !          3992:
        !          3993:        * gram.y: missing free in alias_destroy
        !          3994:
        !          3995: 2004-11-15 09:49  millert
        !          3996:
        !          3997:        * redblack.c: Can't use rbapply() for rbdestroy since the
        !          3998:          destructor is passed a data pointer, not a node pointer.
        !          3999:
        !          4000: 2004-11-14 23:06  millert
        !          4001:
        !          4002:        * getspwuid.c, logging.c, sudo.c, sudo.h: Create and use private
        !          4003:          versions of setpwent() and endpwent() that set/end the shadow
        !          4004:          password file too.
        !          4005:
        !          4006: 2004-11-14 22:55  millert
        !          4007:
        !          4008:        * gram.c, gram.h, gram.y, match.c, parse.h, testsudoers.c,
        !          4009:          visudo.c: Store aliases in a red-black tree.
        !          4010:
        !          4011: 2004-11-14 22:52  millert
        !          4012:
        !          4013:        * Makefile.in, redblack.c, redblack.h: red-black tree
        !          4014:          implementation
        !          4015:
        !          4016: 2004-11-14 22:37  millert
        !          4017:
        !          4018:        * visudo.c: Edit all sudoers file if there were unused or undefined
        !          4019:          aliases and we are in strict mode.
        !          4020:
        !          4021: 2004-11-12 11:19  millert
        !          4022:
        !          4023:        * CHANGES, def_data.c, def_data.h, def_data.in, defaults.c, env.c,
        !          4024:          find_path.c, sudoers.cat, sudoers.man.in, sudoers.pod, visudo.c:
        !          4025:          Bring back the "secure_path" Defaults option now that Defaults
        !          4026:          take effect before the path is searched.
        !          4027:
        !          4028: 2004-11-11 12:22  millert
        !          4029:
        !          4030:        * logging.c, parse.c: A user can always list their own entries,
        !          4031:          even with -u.  Better error message when failing to list another
        !          4032:          user's entries.
        !          4033:
        !          4034: 2004-11-11 12:12  millert
        !          4035:
        !          4036:        * parse.c, sudo.c, sudo.h: The syntax to list another user's
        !          4037:          entries is now "-u otheruser -l".  Only root or users with sudo
        !          4038:          "ALL" may list other user's entries.
        !          4039:
        !          4040: 2004-11-11 11:30  millert
        !          4041:
        !          4042:        * sudo.cat, sudo.man.in, sudo.pod: Update env variable info in
        !          4043:          SECURITY NOTES
        !          4044:
        !          4045: 2004-11-11 11:25  millert
        !          4046:
        !          4047:        * env.c: strip CDPATH too
        !          4048:
        !          4049: 2004-11-11 11:20  millert
        !          4050:
        !          4051:        * env.c: strip exported bash functions from the environment.
        !          4052:
        !          4053: 2004-10-27 12:16  millert
        !          4054:
        !          4055:        * sudo.c: Only reset sudo_user.pw based on SUDO_USER environment
        !          4056:          variables for real commands and sudoedit.  This avoids a
        !          4057:          confusing message when a user tries "sudo -l" or "sudo -v" and is
        !          4058:          denied.
        !          4059:
        !          4060: 2004-10-27 12:06  millert
        !          4061:
        !          4062:        * gram.c, gram.y, parse.h: Extend LIST_APPEND to deal with
        !          4063:          appending lists too
        !          4064:
        !          4065: 2004-10-26 18:39  millert
        !          4066:
        !          4067:        * logging.c: Convert some bitwise AND to ISSET
        !          4068:
        !          4069: 2004-10-26 18:29  millert
        !          4070:
        !          4071:        * lex.yy.c, toke.c: toke.c replaces lex.yy.c
        !          4072:
        !          4073: 2004-10-26 18:29  millert
        !          4074:
        !          4075:        * CHANGES, TODO: sync
        !          4076:
        !          4077: 2004-10-26 18:28  millert
        !          4078:
        !          4079:        * BUGS: new parser fixes most of the outstanding bugs
        !          4080:
        !          4081: 2004-10-26 18:27  millert
        !          4082:
        !          4083:        * configure: regen
        !          4084:
        !          4085: 2004-10-26 18:26  millert
        !          4086:
        !          4087:        * visudo.c: Rework for the new parser.  Now checks for unused
        !          4088:          aliases in sudoers.
        !          4089:
        !          4090: 2004-10-26 18:25  millert
        !          4091:
        !          4092:        * testsudoers.c: Rewrite for the new parser.  Now supports a -d
        !          4093:          flag (dump) and adds a -h flag (host).  It now defaults to the
        !          4094:          local hostname unless otherwise specified.
        !          4095:
        !          4096: 2004-10-26 18:23  millert
        !          4097:
        !          4098:        * sudo.h: Add new prototypes.  Remove NOMATCH/UNSPEC (now in
        !          4099:          parse.h)
        !          4100:
        !          4101: 2004-10-26 18:22  millert
        !          4102:
        !          4103:        * sudo.c: Update for new parse.  We now call find_path() *after* we
        !          4104:          have updated the global defaults based on sudoers.  Also adds
        !          4105:          support for listing other user's privs if you are root.
        !          4106:
        !          4107: 2004-10-26 18:21  millert
        !          4108:
        !          4109:        * mon_systrace.c: Working LDAP support; also remove a now-unneeded
        !          4110:          rewind().
        !          4111:
        !          4112: 2004-10-26 18:20  millert
        !          4113:
        !          4114:        * logging.c, logging.h: Add NO_STDERR flag.
        !          4115:
        !          4116: 2004-10-26 18:19  millert
        !          4117:
        !          4118:        * ldap.c: Split sudo_ldap_check() into three pieces:
        !          4119:          sudo_ldap_open(), udo_ldap_update_defaults() and
        !          4120:          sudo_ldap_check().  This allows us to connecto to LDAP, apply the
        !          4121:          default options, find the command in the user's path, and then
        !          4122:          check whether the user is allowed to run it.  The important thing
        !          4123:          here is that the default runas user may be specified as a default
        !          4124:          option and that needs to be set before we search for the command.
        !          4125:
        !          4126: 2004-10-26 18:17  millert
        !          4127:
        !          4128:        * ldap.c: Add casts to unsigned char for isspace() to quiet a gcc
        !          4129:          warning.
        !          4130:
        !          4131: 2004-10-26 18:16  millert
        !          4132:
        !          4133:        * defaults.h: Add prototype for update_defaults()
        !          4134:
        !          4135: 2004-10-26 18:16  millert
        !          4136:
        !          4137:        * defaults.c: Don't warn about line numbers now that we operate on
        !          4138:          a set of data structures (or LDAP) and not a file.
        !          4139:
        !          4140: 2004-10-26 18:15  millert
        !          4141:
        !          4142:        * config.h.in: No long use lsearch()
        !          4143:
        !          4144: 2004-10-26 18:14  millert
        !          4145:
        !          4146:        * Makefile.in: Update for new and changed file names.
        !          4147:
        !          4148: 2004-10-26 18:14  millert
        !          4149:
        !          4150:        * LICENSE: no more BSD lsearch.c
        !          4151:
        !          4152: 2004-10-26 18:14  millert
        !          4153:
        !          4154:        * match.c: foo_matches() routines now live in match.c Added
        !          4155:          user_matches(), runas_matches(), host_matches(), cmnd_matches()
        !          4156:          and alias_matches() that operate on the parsed sudoers file.
        !          4157:
        !          4158: 2004-10-26 18:12  millert
        !          4159:
        !          4160:        * parse.lex, toke.l: Move parse.lex -> toke.l Rename buffer_frob()
        !          4161:          -> switch_buffer() WORD no longer needs to exclude '@' kill
        !          4162:          yywrap()
        !          4163:
        !          4164: 2004-10-26 18:10  millert
        !          4165:
        !          4166:        * gram.c, gram.h, gram.y, parse.c, parse.h, parse.yacc, sudo.tab.h:
        !          4167:          Rewritten parser that converts sudoers into a set of data
        !          4168:          structures.  This eliminates ordering issues and makes it
        !          4169:          possible to apply sudoers Defaults entries before searching for
        !          4170:          the command.
        !          4171:
        !          4172: 2004-10-26 18:09  millert
        !          4173:
        !          4174:        * configure.in, lsearch.c, emul/search.h: We won't be using
        !          4175:          lsearch() any longer.
        !          4176:
        !          4177: 2004-10-26 18:07  millert
        !          4178:
        !          4179:        * ldap.c: sudo should not send mail if someone who runs 'sudo -l'
        !          4180:          has no entry.
        !          4181:
        !          4182: 2004-10-26 16:09  millert
        !          4183:
        !          4184:        * sudo.cat, sudo.man.in, sudoers.cat, sudoers.man.in, visudo.cat,
        !          4185:          visudo.man.in: regen
        !          4186:
        !          4187: 2004-10-26 16:09  millert
        !          4188:
        !          4189:        * visudo.pod: Update warnings to match new visudo
        !          4190:
        !          4191: 2004-10-26 16:08  millert
        !          4192:
        !          4193:        * sudoers.pod: The new parser doesn't have the old ordering
        !          4194:          constraints.
        !          4195:
        !          4196: 2004-10-26 16:08  millert
        !          4197:
        !          4198:        * sudo.pod: Document that -l now takes an optional username
        !          4199:          argument
        !          4200:
        !          4201: 2004-10-25 13:44  millert
        !          4202:
        !          4203:        * RUNSON: AIX 5.2.0.0 works
        !          4204:
        !          4205: 2004-10-25 13:38  millert
        !          4206:
        !          4207:        * ldap.c: If LDAP_OPT_SUCCESS is not defined, use LDAP_SUCCESS
        !          4208:          instead.  Fixes a compilation problem with Solaris 9's native
        !          4209:          LDAP.
        !          4210:
        !          4211:          Set FLAG_MONITOR when needed.
        !          4212:
        !          4213: 2004-10-23 13:32  millert
        !          4214:
        !          4215:        * mon_systrace.c: Call sudo_goodpath() *after* changing the cwd to
        !          4216:          match the traced process.  Fixes relative paths.
        !          4217:
        !          4218: 2004-10-21 12:31  millert
        !          4219:
        !          4220:        * testsudoers.c: Kill set_perms() stub--it is no longer needed.
        !          4221:
        !          4222: 2004-10-13 12:52  millert
        !          4223:
        !          4224:        * sudoers.cat, sudoers.man.in, sudoers.pod: stay_setuid now
        !          4225:          requires set_reuid() or setresuid()
        !          4226:
        !          4227: 2004-10-13 12:46  millert
        !          4228:
        !          4229:        * INSTALL, PORTING, TROUBLESHOOTING, config.h.in, configure,
        !          4230:          configure.in, set_perms.c, sudo.c, sudo.h: Kill use of POSIX
        !          4231:          saved uids; they aren't worth bothering with.
        !          4232:
        !          4233: 2004-10-07 16:23  millert
        !          4234:
        !          4235:        * glob.c: remove call to issetugid()
        !          4236:
        !          4237: 2004-10-07 14:57  millert
        !          4238:
        !          4239:        * sudoers.cat, sudoers.man.in, sudoers.pod: Remove warning about
        !          4240:          wildcards.  Now that we use glob() the bug is fixed.
        !          4241:
        !          4242: 2004-10-07 14:52  millert
        !          4243:
        !          4244:        * parse.c: Use glob(3) instead of fnmatch(3) for matching pathnames
        !          4245:          and stat each result that matches the basename of the user's
        !          4246:          command.  This makes "cd /usr/bin ; sudo ./blah" work when
        !          4247:          sudoers allows /usr/bin/blah.  Fixes bug #143.
        !          4248:
        !          4249: 2004-10-07 14:27  millert
        !          4250:
        !          4251:        * configure, configure.in, config.h.in: Define HAVE_EXTENDED_GLOB
        !          4252:          for extended glob (GLOB_TILDE and GLOB_BRACE)
        !          4253:
        !          4254: 2004-10-07 12:59  millert
        !          4255:
        !          4256:        * config.h.in, configure, configure.in: Check for a glob() that
        !          4257:          supports GLOB_BRACE and GLOB_TILDE
        !          4258:
        !          4259: 2004-10-07 12:51  millert
        !          4260:
        !          4261:        * LICENSE: reference glob
        !          4262:
        !          4263: 2004-10-07 12:50  millert
        !          4264:
        !          4265:        * glob.c, emul/glob.h: 4.4BSD glob(3) with fixes from OpenBSD and
        !          4266:          some unneeded extensions removed.
        !          4267:
        !          4268: 2004-10-05 17:26  millert
        !          4269:
        !          4270:        * mon_systrace.c: Just return if STRIOCINJECT or STRIOCREPLACE
        !          4271:          fail.  It probably means we are out of space in the stack gap...
        !          4272:
        !          4273: 2004-10-05 17:20  millert
        !          4274:
        !          4275:        * CHANGES: sync
        !          4276:
        !          4277: 2004-10-05 16:53  millert
        !          4278:
        !          4279:        * mon_systrace.c: Take a stab at ldap sudoers support here.
        !          4280:
        !          4281: 2004-10-05 15:13  millert
        !          4282:
        !          4283:        * mon_systrace.c, mon_systrace.h: Detach from tracee on SIGHUP,
        !          4284:          SIGINT and SIGTERM.  Now "sudo reboot" doesn't cause reboot to
        !          4285:          inadvertanly kill itself.
        !          4286:
        !          4287: 2004-10-05 14:21  millert
        !          4288:
        !          4289:        * mon_systrace.c: put "monitor" in the proctitle, not "systrace"
        !          4290:
        !          4291: 2004-10-05 14:15  millert
        !          4292:
        !          4293:        * mon_systrace.c: When modifying the environment, don't replace
        !          4294:          envp when we can get away with just rewriting pointers in the
        !          4295:          traced process.
        !          4296:
        !          4297: 2004-10-05 13:46  millert
        !          4298:
        !          4299:        * mon_systrace.c, mon_systrace.h: Add environment updating via
        !          4300:          STRIOCINJECT (if available).
        !          4301:
        !          4302: 2004-10-05 10:22  millert
        !          4303:
        !          4304:        * sudoers.cat, sudoers.man.in: regen
        !          4305:
        !          4306: 2004-10-04 16:15  millert
        !          4307:
        !          4308:        * lex.yy.c: regen
        !          4309:
        !          4310: 2004-10-04 16:15  millert
        !          4311:
        !          4312:        * parse.lex: Fix bug introduced in unput() removal; want yyless(0)
        !          4313:          not yyless(1)
        !          4314:
        !          4315: 2004-10-04 12:09  millert
        !          4316:
        !          4317:        * mon_systrace.c: Include file is now mon_systrace.h
        !          4318:
        !          4319: 2004-10-04 12:07  millert
        !          4320:
        !          4321:        * Makefile.in, configure, configure.in, def_data.c, def_data.h,
        !          4322:          def_data.in, lex.yy.c, parse.c, parse.h, parse.lex, parse.yacc,
        !          4323:          sudo.c, sudo.h, sudo.tab.h, sudoers.pod: No longer call it
        !          4324:          tracing, it is now "monitoring" which should be more a obvious
        !          4325:          name to non-hackers.
        !          4326:
        !          4327: 2004-10-01 15:06  millert
        !          4328:
        !          4329:        * mon_systrace.c, mon_systrace.h: Fix some XXX
        !          4330:
        !          4331: 2004-10-01 14:30  millert
        !          4332:
        !          4333:        * mon_systrace.c, mon_systrace.h: No need to include syscall.h, use
        !          4334:          1024 as the max # of entries (the max that systrace(4) allows).
        !          4335:
        !          4336:          Only need to use SYSTR_POLICY_ASSIGN once
        !          4337:
        !          4338:          Change check_syscall() -> find_handler() and have it return the
        !          4339:          handler instead of just running it.  We need this since handler
        !          4340:          now have two parts: one part that generates and answer and
        !          4341:          another that gets called after the answer is accepted (to do
        !          4342:          logging).
        !          4343:
        !          4344:          Add some missing check_exec for emul execv
        !          4345:
        !          4346: 2004-10-01 10:58  millert
        !          4347:
        !          4348:        * sample.pam, sample.sudoers, sample.syslog.conf, sudoers: Add
        !          4349:          $Sudo: ChangeLog,v 1.16 2008/11/10 20:20:10 millert Exp $ tags.
        !          4350:
        !          4351: 2004-10-01 10:47  millert
        !          4352:
        !          4353:        * config.h.in: Add missing HAVE_LINUX_SYSTRACE_H
        !          4354:
        !          4355: 2004-09-30 20:46  millert
        !          4356:
        !          4357:        * Makefile.in: add trace_systrace.o dependency
        !          4358:
        !          4359: 2004-09-30 19:00  millert
        !          4360:
        !          4361:        * configure, configure.in: Also look for systrace.h in
        !          4362:          /usr/include/linux
        !          4363:
        !          4364: 2004-09-30 18:27  millert
        !          4365:
        !          4366:        * mon_systrace.c, mon_systrace.h: Move all struct defs and
        !          4367:          prototypes into trace_systrace.h and mark all but
        !          4368:          systace_attach() static.
        !          4369:
        !          4370: 2004-09-30 18:14  millert
        !          4371:
        !          4372:        * mon_systrace.c, mon_systrace.h: Add support for tracing
        !          4373:          emulations.  At the moment, all emulations are compiled in.  It
        !          4374:          might make sense to #ifdef them in the future, though this
        !          4375:          impeeds readability.
        !          4376:
        !          4377: 2004-09-30 17:07  millert
        !          4378:
        !          4379:        * Makefile.in, configure.in, configure: rename systrace.c ->
        !          4380:          trace_systrace.c
        !          4381:
        !          4382: 2004-09-30 15:58  millert
        !          4383:
        !          4384:        * parse.yacc: Allow this to build with a K&R compiler again
        !          4385:
        !          4386: 2004-09-30 13:58  millert
        !          4387:
        !          4388:        * TODO: sync
        !          4389:
        !          4390: 2004-09-30 13:55  millert
        !          4391:
        !          4392:        * sudo.c, compat.h, visudo.c: Use __attribute__((__noreturn__))
        !          4393:
        !          4394: 2004-09-30 13:44  millert
        !          4395:
        !          4396:        * visudo.c: Exit() takes a negative value to indicate it was not
        !          4397:          called via signal.
        !          4398:
        !          4399: 2004-09-30 13:25  millert
        !          4400:
        !          4401:        * sudo.cat, sudo.man.in, sudoers.cat, sudoers.man.in, visudo.cat,
        !          4402:          visudo.man.in: regen
        !          4403:
        !          4404: 2004-09-30 13:22  millert
        !          4405:
        !          4406:        * Makefile.in, visudo.c: Define Err() and Errx() that are like
        !          4407:          err() and errx() but call Exit() instead of exit().  Build
        !          4408:          private copy of alloc.o for visudo that calls Err() and Errx().
        !          4409:
        !          4410: 2004-09-29 15:22  millert
        !          4411:
        !          4412:        * lex.yy.c: regen
        !          4413:
        !          4414: 2004-09-29 15:22  millert
        !          4415:
        !          4416:        * CHANGES: sync
        !          4417:
        !          4418: 2004-09-29 14:41  millert
        !          4419:
        !          4420:        * visudo.c: Overhaul visudo for editing multiple files:  o visudo
        !          4421:          has been broken out into functions (more work needed here)  o
        !          4422:          each file is now edited before sudoers is re-parsed  o if a
        !          4423:          #include line is added that file will be edited too
        !          4424:
        !          4425:          TODO:  o cleanup temp files when exiting via err() or errx()  o
        !          4426:          continue breaking things out into separate functions
        !          4427:
        !          4428: 2004-09-29 14:36  millert
        !          4429:
        !          4430:        * parse.lex, sudo.c, sudo.h, testsudoers.c, visudo.c: Add keepopen
        !          4431:          arg to open_sudoers that open_sudoers can use to indicate to the
        !          4432:          caller that the fd should not be closed when it is done with it.
        !          4433:          To be used by visudo to keep locked fds from being closed
        !          4434:          prematurely (and thus losing the lock).
        !          4435:
        !          4436: 2004-09-29 14:33  millert
        !          4437:
        !          4438:        * parse.yacc, sudo.c: Add errorfile global that contains the name
        !          4439:          of the file that caused the error.
        !          4440:
        !          4441: 2004-09-29 14:30  millert
        !          4442:
        !          4443:        * parse.lex: return COMMENT to yacc grammar for a #include line
        !          4444:
        !          4445: 2004-09-29 14:29  millert
        !          4446:
        !          4447:        * parse.lex: Remove us of unput() in favor of yyless() which is
        !          4448:          cheaper.
        !          4449:
        !          4450: 2004-09-29 14:28  millert
        !          4451:
        !          4452:        * parse.yacc: Allow an empty sudoers file.
        !          4453:
        !          4454: 2004-09-28 16:50  millert
        !          4455:
        !          4456:        * mon_systrace.c: Rewind sudoers_fp now that sudoers_lookup()
        !          4457:          doesn't do it for us.
        !          4458:
        !          4459: 2004-09-28 14:37  millert
        !          4460:
        !          4461:        * lex.yy.c: regen
        !          4462:
        !          4463: 2004-09-28 14:36  millert
        !          4464:
        !          4465:        * visudo.c: Do signal setup before calling edit_sudoers().  Don't
        !          4466:          shadow the "quiet" global.
        !          4467:
        !          4468: 2004-09-28 14:33  millert
        !          4469:
        !          4470:        * visudo.c: If a sudoers file includes other files, edit those too.
        !          4471:          Does not yes deal with creating the new includes files itself.
        !          4472:
        !          4473: 2004-09-28 14:31  millert
        !          4474:
        !          4475:        * testsudoers.c: init_parser now takes a path
        !          4476:
        !          4477: 2004-09-28 14:31  millert
        !          4478:
        !          4479:        * parse.c, parse.h, parse.lex, parse.yacc: More scaffolding for
        !          4480:          dealing with multiple sudoers files:  o init_parser() now takes a
        !          4481:          path used to populate the sudoers global  o the sudoers global is
        !          4482:          used to print the correct file in yyerror()  o when switching to
        !          4483:          a new sudoers file, perserve old file name and line number
        !          4484:
        !          4485: 2004-09-28 14:29  millert
        !          4486:
        !          4487:        * Makefile.in, pathnames.h.in: Kill _PATH_SUDOERS_TMP; it is not
        !          4488:          meaningful now that we can have multiple sudoers files.
        !          4489:
        !          4490: 2004-09-28 13:52  millert
        !          4491:
        !          4492:        * parse.c, sudo.c: Rewind sudoers_fp in open_sudoers() instead of
        !          4493:          sudoers_lookup() so we start at the right file position when
        !          4494:          reading include files.
        !          4495:
        !          4496: 2004-09-27 21:04  millert
        !          4497:
        !          4498:        * sudoers.pod: document #include
        !          4499:
        !          4500: 2004-09-27 20:47  millert
        !          4501:
        !          4502:        * lex.yy.c: regen
        !          4503:
        !          4504: 2004-09-27 20:47  millert
        !          4505:
        !          4506:        * parse.lex: Add max depth of 128 for the include stack to avoid
        !          4507:          loops.
        !          4508:
        !          4509:          Since yyerror() doesn't stop parsing, pass return values back to
        !          4510:          yylex and call yyterminate() on error.
        !          4511:
        !          4512: 2004-09-27 14:06  millert
        !          4513:
        !          4514:        * sudoers.pod: document tracing
        !          4515:
        !          4516: 2004-09-27 14:05  millert
        !          4517:
        !          4518:        * sudo.pod: Mention PREVENTING SHELL ESCAPES section of sudoers man
        !          4519:          page
        !          4520:
        !          4521: 2004-09-27 12:08  millert
        !          4522:
        !          4523:        * lex.yy.c: regen
        !          4524:
        !          4525: 2004-09-27 12:03  millert
        !          4526:
        !          4527:        * parse.lex: Add support for #include in sudoers (visudo support
        !          4528:          TBD)
        !          4529:
        !          4530: 2004-09-27 12:02  millert
        !          4531:
        !          4532:        * parse.yacc: make yyerror()'s argument const
        !          4533:
        !          4534: 2004-09-27 12:02  millert
        !          4535:
        !          4536:        * testsudoers.c, visudo.c: Add open_sudoers() stubs.
        !          4537:
        !          4538: 2004-09-27 12:01  millert
        !          4539:
        !          4540:        * sudo.c, sudo.h: Rename check_sudoers() open_sudoers() and make it
        !          4541:          return a FILE *
        !          4542:
        !          4543: 2004-09-26 12:35  millert
        !          4544:
        !          4545:        * BUGS, INSTALL, INSTALL.binary, Makefile.in, README, configure.in,
        !          4546:          version.h: Crank version
        !          4547:
        !          4548: 2004-09-26 12:33  millert
        !          4549:
        !          4550:        * Makefile.in, sudo.psf: Better HP-UX depot construction
        !          4551:
        !          4552: 2004-09-25 17:08  millert
        !          4553:
        !          4554:        * mon_systrace.c: o Made children global so check_exec() can lookup
        !          4555:          a child.  o Replaced uid in struct childinfo with struct passwd *
        !          4556:          (for runas) o new_child() now takes a parent pid so the runas
        !          4557:          info can be inherited o Added find_child() to lookup a child by
        !          4558:          its pid o update_child() now fills in a struct passwd o Converted
        !          4559:          the big if/else mess in set_policy to a switch o Syscalls that
        !          4560:          change uid are now "ask" so we get SYSTR_MSG_UGID events
        !          4561:
        !          4562: 2004-09-25 17:01  millert
        !          4563:
        !          4564:        * getspwuid.c: Add flag to sudo_pwdup that indicates whether or not
        !          4565:          to lookup the shadow password.  Will be used to a struct passwd
        !          4566:          that has the shadow password already filled in.
        !          4567:
        !          4568: 2004-09-25 16:58  millert
        !          4569:
        !          4570:        * mon_systrace.c: add missing increment of addr in read_string()
        !          4571:
        !          4572: 2004-09-25 16:15  millert
        !          4573:
        !          4574:        * mon_systrace.c: Remove bogus call to update_child() and some
        !          4575:          cosmetic fixes
        !          4576:
        !          4577: 2004-09-25 16:11  millert
        !          4578:
        !          4579:        * mon_systrace.c: Don't leak /dev/systrace fd to tracee Make
        !          4580:          initialized global for simplicity If STRIOCATTACH returns EBUSY
        !          4581:          we are already being traced Check for user_args == NULL in
        !          4582:          setproctitle() call Add missing calls to STRIOCANSWER
        !          4583:
        !          4584: 2004-09-25 13:15  millert
        !          4585:
        !          4586:        * sudo.c: g/c sudo_pwdup proto
        !          4587:
        !          4588: 2004-09-24 20:21  millert
        !          4589:
        !          4590:        * Makefile.in, sudo.psf: Add target for building a depot file
        !          4591:
        !          4592: 2004-09-24 20:07  millert
        !          4593:
        !          4594:        * mon_systrace.c: trim includes
        !          4595:
        !          4596: 2004-09-24 14:11  millert
        !          4597:
        !          4598:        * lex.yy.c, sudo.tab.h: regen
        !          4599:
        !          4600: 2004-09-24 14:10  millert
        !          4601:
        !          4602:        * INSTALL: document --with-systrace
        !          4603:
        !          4604: 2004-09-24 14:10  millert
        !          4605:
        !          4606:        * config.h.in, configure, configure.in: Add check for setproctitle
        !          4607:
        !          4608: 2004-09-24 14:09  millert
        !          4609:
        !          4610:        * mon_systrace.c: pass struct str_msg_ask in to syscall checker so
        !          4611:          it can set the error code
        !          4612:
        !          4613: 2004-09-24 13:30  millert
        !          4614:
        !          4615:        * mon_systrace.c: systrace(4) support for sudo.  On systems with
        !          4616:          the systrace(4) kernel facility (OpenBSD, NetBSD, Linux w/
        !          4617:          patches) sudo can intercept exec calls and check the exec args
        !          4618:          against the sudoers file.  In other words, sudo can now control
        !          4619:          subcommands and shell escapes.
        !          4620:
        !          4621: 2004-09-24 13:17  millert
        !          4622:
        !          4623:        * sudo.c, sudo.h: Call systrace_attach() if FLAG_TRACE is set.
        !          4624:
        !          4625: 2004-09-24 13:15  millert
        !          4626:
        !          4627:        * parse.c, parse.h, parse.lex, parse.yacc, sudo.h: Add trace
        !          4628:          Defaults option and TRACE/NOTRACE tags and set FLAG_TRACE
        !          4629:
        !          4630: 2004-09-24 13:13  millert
        !          4631:
        !          4632:        * parse.c, sudo.c: Don't close sudoers_fp, keep it open and set
        !          4633:          close on exec flag instead.
        !          4634:
        !          4635: 2004-09-24 13:11  millert
        !          4636:
        !          4637:        * def_data.c, def_data.h, def_data.in: Add trace option
        !          4638:
        !          4639: 2004-09-23 20:24  millert
        !          4640:
        !          4641:        * Makefile.in: Add systrace
        !          4642:
        !          4643: 2004-09-23 20:23  millert
        !          4644:
        !          4645:        * INSTALL: SunOS /bin/sh blows up with configure
        !          4646:
        !          4647: 2004-09-23 20:23  millert
        !          4648:
        !          4649:        * configure, configure.in: Include sys/param.h before systrace.h
        !          4650:
        !          4651: 2004-09-23 20:15  millert
        !          4652:
        !          4653:        * configure: regen
        !          4654:
        !          4655: 2004-09-23 20:15  millert
        !          4656:
        !          4657:        * pathnames.h.in: _PATH_DEV_SYSTRACE
        !          4658:
        !          4659: 2004-09-23 20:14  millert
        !          4660:
        !          4661:        * configure.in: line up options in --help
        !          4662:
        !          4663: 2004-09-23 20:11  millert
        !          4664:
        !          4665:        * config.h.in, configure.in: Add --with-systrace
        !          4666:
        !          4667: 2004-09-23 13:35  millert
        !          4668:
        !          4669:        * configure: regen
        !          4670:
        !          4671: 2004-09-23 13:35  millert
        !          4672:
        !          4673:        * aclocal.m4, configure.in: make this work with autoconf-2.59
        !          4674:
        !          4675: 2004-09-16 12:58  millert
        !          4676:
        !          4677:        * sudo_edit.c: Simplify logic around open & stat of files and do
        !          4678:          sanity on edited file even if we lack fstat (still racable but
        !          4679:          worth doing).
        !          4680:
        !          4681: 2004-09-15 18:47  millert
        !          4682:
        !          4683:        * HISTORY: Add support url
        !          4684:
        !          4685: 2004-09-15 16:11  millert
        !          4686:
        !          4687:        * Makefile.in: versino 1.6.8p1
        !          4688:
        !          4689: 2004-09-15 15:20  millert
        !          4690:
        !          4691:        * CHANGES: more changes for 1.6.8p1
        !          4692:
        !          4693: 2004-09-15 15:18  millert
        !          4694:
        !          4695:        * version.h: 1.6.8p1
        !          4696:
        !          4697: 2004-09-15 12:16  millert
        !          4698:
        !          4699:        * CHANGES, sudo_edit.c: Add sanity check so we don't try to edit
        !          4700:          something other than a regular file.
        !          4701:
        !          4702: 2004-09-14 20:55  aaron
        !          4703:
        !          4704:        * CHANGES: sync
        !          4705:
        !          4706: 2004-09-14 20:21  aaron
        !          4707:
        !          4708:        * INSTALL: document --with-ldap-conf-file
        !          4709:
        !          4710: 2004-09-14 17:43  millert
        !          4711:
        !          4712:        * CHANGES, ins_csops.h: political correctness strikes again
        !          4713:
        !          4714: 2004-09-14 15:09  millert
        !          4715:
        !          4716:        * RUNSON: sync
        !          4717:
        !          4718: 2004-09-12 19:50  millert
        !          4719:
        !          4720:        * Makefile.binary.in, Makefile.in: Install sudoedit man link
        !          4721:
        !          4722: 2004-09-12 14:25  millert
        !          4723:
        !          4724:        * INSTALL: Update PAM note and mention where HP-UX users can
        !          4725:          download gcc binaries.
        !          4726:
        !          4727: 2004-09-12 12:08  millert
        !          4728:
        !          4729:        * Makefile.in: libtool wants to install stuff from .libs so fake
        !          4730:          one up for binary installations.
        !          4731:
        !          4732: 2004-09-12 11:53  millert
        !          4733:
        !          4734:        * Makefile.binary.in: rm -f old sudoedit link instead of using ln
        !          4735:          -f set LIBTOOL correctly
        !          4736:
        !          4737: 2004-09-12 11:53  millert
        !          4738:
        !          4739:        * Makefile.in: Deal with "uname -m" having slashes in it rm -f old
        !          4740:          sudoedit link instead of using ln -f
        !          4741:
        !          4742: 2004-09-12 10:22  millert
        !          4743:
        !          4744:        * Makefile.binary, Makefile.binary.in: Makefile.binary ->
        !          4745:          Makefile.binary.in for config.status substitution Add support for
        !          4746:          installing noexec bits
        !          4747:
        !          4748: 2004-09-12 10:21  millert
        !          4749:
        !          4750:        * Makefile.in: Copy noexec bits into binary dists too No longer use
        !          4751:          my old arch script for making binary dists
        !          4752:
        !          4753: 2004-09-12 09:36  millert
        !          4754:
        !          4755:        * Makefile.binary: Install sudoedit link.
        !          4756:
        !          4757: 2004-09-11 12:25  millert
        !          4758:
        !          4759:        * emul/utime.h: avoid __P so there is no need for compat.h to be
        !          4760:          included
        !          4761:
        !          4762: 2004-09-11 12:24  millert
        !          4763:
        !          4764:        * utimes.c: Don't use HAVE_UTIME_H before including config.h.
        !          4765:
        !          4766: 2004-09-10 12:31  millert
        !          4767:
        !          4768:        * compat.h: Fix Solatis futimes macro
        !          4769:
        !          4770: 2004-09-09 11:02  millert
        !          4771:
        !          4772:        * sudo_edit.c: Rename ots -> omtim for improved readability.
        !          4773:
        !          4774: 2004-09-08 14:38  millert
        !          4775:
        !          4776:        * sudo_edit.c: Redo changes in revision 1.7.  Don't really need to
        !          4777:          keep the temp file open; re-opening it with the invoking user's
        !          4778:          euid is sufficient.
        !          4779:
        !          4780: 2004-09-08 14:36  millert
        !          4781:
        !          4782:        * CHANGES: sync
        !          4783:
        !          4784: 2004-09-08 14:35  millert
        !          4785:
        !          4786:        * sudo.cat, sudo.man.in: regen
        !          4787:
        !          4788: 2004-09-08 14:34  millert
        !          4789:
        !          4790:        * sudo.pod: back out revision 1.70; it is no long applicable
        !          4791:
        !          4792: 2004-09-08 11:57  millert
        !          4793:
        !          4794:        * env.c: Let the loader initialize nep
        !          4795:
        !          4796: 2004-09-08 11:49  millert
        !          4797:
        !          4798:        * configure, configure.in, config.h.in: Removed unneed check for
        !          4799:          fchown Add check for gettimeofday Move autoheader template stuff
        !          4800:          into separate AH_TEMPLATE lines
        !          4801:
        !          4802: 2004-09-08 11:48  millert
        !          4803:
        !          4804:        * check.c, compat.h, fileops.c, sudo.h, sudo_edit.c, visudo.c: Use
        !          4805:          timespec throughout.
        !          4806:
        !          4807: 2004-09-08 11:47  millert
        !          4808:
        !          4809:        * Makefile.in: gettime.[co]
        !          4810:
        !          4811: 2004-09-08 11:47  millert
        !          4812:
        !          4813:        * gettime.c: function to return the current time in a struct
        !          4814:          timespec
        !          4815:
        !          4816: 2004-09-08 10:51  millert
        !          4817:
        !          4818:        * utimes.c: Not a darpa-sponsored file.
        !          4819:
        !          4820: 2004-09-07 16:36  millert
        !          4821:
        !          4822:        * compat.h, config.h.in, configure, configure.in: Add a check for
        !          4823:          struct timespec and provide it for those without.
        !          4824:
        !          4825: 2004-09-07 15:56  millert
        !          4826:
        !          4827:        * config.h.in, configure, configure.in, sudo_edit.c: Add checks for
        !          4828:          st_mtim and st_mtimespec and add macros for pulling the mtime sec
        !          4829:          and nsec out of struct stat.  These are used in sudo_edit() to
        !          4830:          better tell whether or not the file has changed.
        !          4831:
        !          4832: 2004-09-07 15:55  millert
        !          4833:
        !          4834:        * check.c, fileops.c, sudo.h, sudo_edit.c, visudo.c: Add an extra
        !          4835:          param to touch() for nsec
        !          4836:
        !          4837: 2004-09-07 14:06  millert
        !          4838:
        !          4839:        * sudo_edit.c: Call mkstemp() as the in invoking user so we don't
        !          4840:          have to chown the file later.  Only touch() the temp file if we
        !          4841:          can do it via the file descriptor.  Don't check for modification
        !          4842:          of the temp file if we lack fstat().  Catch errors read()ing the
        !          4843:          temp file.
        !          4844:
        !          4845: 2004-09-07 14:04  millert
        !          4846:
        !          4847:        * fileops.c: If path is NULL and fd == -1 return -1.
        !          4848:
        !          4849: 2004-09-07 13:31  millert
        !          4850:
        !          4851:        * sudo_edit.c: closefrom() is overkill, the only extra fds are the
        !          4852:          ones we opened so just close those in the child.
        !          4853:
        !          4854: 2004-09-07 13:14  millert
        !          4855:
        !          4856:        * Makefile.in, aclocal.m4, check.c, compat.h, config.h.in,
        !          4857:          configure, configure.in, fileops.c, sudo.h, sudo_edit.c, utime.c,
        !          4858:          utimes.c, visudo.c: Use utimes() and futimes() instead of utime()
        !          4859:          in touch(), emulating as needed.  Not all systems are able to
        !          4860:          support setting the times of an fd so touch() takes both an fd
        !          4861:          and a file name as arguments.
        !          4862:
        !          4863: 2004-09-06 21:12  aaron
        !          4864:
        !          4865:        * env.c: Rare SEGV
        !          4866:
        !          4867: 2004-09-06 16:46  millert
        !          4868:
        !          4869:        * sudo.cat, sudo.man.in, sudoers.cat, sudoers.man.in, visudo.cat,
        !          4870:          visudo.man.in: regen
        !          4871:
        !          4872: 2004-09-06 16:45  millert
        !          4873:
        !          4874:        * sudo.pod, sudoers.pod, visudo.pod: Add SUPPORT section and
        !          4875:          re-order some of the sections to match the order we use in
        !          4876:          OpenBSD.
        !          4877:
        !          4878: 2004-09-06 15:05  aaron
        !          4879:
        !          4880:        * env.c: Openldap ~/.ldaprc fix
        !          4881:
        !          4882: 2004-09-06 12:18  millert
        !          4883:
        !          4884:        * sudo.pod: Talk about how the editor must write its changes to the
        !          4885:          original file and not just use rename(2).
        !          4886:
        !          4887: 2004-09-06 12:12  millert
        !          4888:
        !          4889:        * CHANGES: sync
        !          4890:
        !          4891: 2004-09-06 12:11  millert
        !          4892:
        !          4893:        * sudo_edit.c: Keep the temp file open instead of re-opening after
        !          4894:          the editor has exited.
        !          4895:
        !          4896: 2004-09-06 12:10  millert
        !          4897:
        !          4898:        * sample.pam: Update for current redhat/fedora core.
        !          4899:
        !          4900: 2004-09-02 21:56  aaron
        !          4901:
        !          4902:        * README.LDAP: tls_ examples
        !          4903:
        !          4904: 2004-09-02 00:03  aaron
        !          4905:
        !          4906:        * ldap.c: config tls_* options
        !          4907:
        !          4908: 2004-08-29 11:39  millert
        !          4909:
        !          4910:        * configure, configure.in: No need for -lcrypt when using pam.
        !          4911:
        !          4912: 2004-08-26 23:57  millert
        !          4913:
        !          4914:        * configure: regen
        !          4915:
        !          4916: 2004-08-26 23:44  aaron
        !          4917:
        !          4918:        * configure.in, ldap.c, pathnames.h.in: Allow --with-ldap-conf-file
        !          4919:          option to override LDAP_CONF
        !          4920:
        !          4921: 2004-08-26 22:08  aaron
        !          4922:
        !          4923:        * ldap.c: cleanup debug message
        !          4924:
        !          4925: 2004-08-26 19:29  aaron
        !          4926:
        !          4927:        * README.LDAP: more config info
        !          4928:
        !          4929: 2004-08-24 14:01  millert
        !          4930:
        !          4931:        * TODO, find_path.c, goodpath.c, parse.c, sudo.c, sudo.h, visudo.c:
        !          4932:          Add cmnd_base to struct sudo_user and set it in init_vars().  Add
        !          4933:          cmnd_stat to struct sudo_user and set it in sudo_goodpath().  No
        !          4934:          longer use gross statics in command_matches().  Also rename some
        !          4935:          variables for improved clarity.
        !          4936:
        !          4937: 2004-08-21 14:33  millert
        !          4938:
        !          4939:        * INSTALL: document HP's crippled compiler deficiency.
        !          4940:
        !          4941: 2004-08-21 14:25  millert
        !          4942:
        !          4943:        * INSTALL: Fix some thinkos in --with-editor and --with-env-editor
        !          4944:          descriptions.  Noticed by Norihiko Murase.
        !          4945:
        !          4946: 2004-08-21 14:20  millert
        !          4947:
        !          4948:        * configure, configure.in: --with-noexec takes an optional PATH
        !          4949:          argument.
        !          4950:
        !          4951: 2004-08-21 14:20  millert
        !          4952:
        !          4953:        * INSTALL: document --with-noexec
        !          4954:
        !          4955: 2004-08-17 16:21  millert
        !          4956:
        !          4957:        * RUNSON, TODO: sync
        !          4958:
        !          4959: 2004-08-17 15:11  millert
        !          4960:
        !          4961:        * sudo_edit.c: Better warning message when sudoedit is unable to
        !          4962:          write to the destination file.
        !          4963:
        !          4964: 2004-08-17 14:53  millert
        !          4965:
        !          4966:        * sudo.cat, sudo.man.in: regen
        !          4967:
        !          4968: 2004-08-17 14:53  millert
        !          4969:
        !          4970:        * sudo.pod: Don't italicize the string "sudoedit"
        !          4971:
        !          4972: 2004-08-16 18:45  millert
        !          4973:
        !          4974:        * HISTORY: Mention GratiSoft.
        !          4975:
        !          4976: 2004-08-11 14:29  millert
        !          4977:
        !          4978:        * parse.yacc: Reset used_runas to FALSE when re-intializing the
        !          4979:          parser.
        !          4980:
        !          4981: 2004-08-09 19:04  millert
        !          4982:
        !          4983:        * config.guess: Correct OpenBSD mips support
        !          4984:
        !          4985: 2004-08-09 17:28  millert
        !          4986:
        !          4987:        * config.guess: Add OpenBSD/mips
        !          4988:
        !          4989: 2004-08-06 23:43  aaron
        !          4990:
        !          4991:        * README.LDAP: More behavior notes
        !          4992:
        !          4993: 2004-08-06 23:36  aaron
        !          4994:
        !          4995:        * README.LDAP: Updates on current behavior
        !          4996:
        !          4997: 2004-08-06 19:56  millert
        !          4998:
        !          4999:        * sudo.pod, sudoers.pod: =back does not take an indentlevel (makes
        !          5000:          no difference to formatted files).
        !          5001:
        !          5002: 2004-08-06 19:48  millert
        !          5003:
        !          5004:        * CHANGES: new
        !          5005:
        !          5006: 2004-08-06 19:42  millert
        !          5007:
        !          5008:        * sudo.c: Consistency.  Use same error for bad -u #uid when
        !          5009:          targetpw is set as we do when a bad -u username is specified.
        !          5010:
        !          5011: 2004-08-06 19:33  millert
        !          5012:
        !          5013:        * TODO: Add checksum idea from Steve Mancini
        !          5014:
        !          5015: 2004-08-06 19:32  millert
        !          5016:
        !          5017:        * sudo.cat, sudo.man.in, sudoers.cat, sudoers.man.in: regen
        !          5018:
        !          5019: 2004-08-06 19:31  millert
        !          5020:
        !          5021:        * sudo.pod, sudoers.pod: Document the restriction on uids specified
        !          5022:          via -u when targetpw is set.
        !          5023:
        !          5024: 2004-08-06 19:24  millert
        !          5025:
        !          5026:        * sudo.c: Error out when targetpw is enabled and sudo is run with
        !          5027:          -u #uid but #uid does not exist in the passwd database.  We can't
        !          5028:          do target authentication when the target is not in passwd!
        !          5029:
        !          5030: 2004-08-05 21:16  millert
        !          5031:
        !          5032:        * sudo.cat, sudo.man.in, sudoers.cat, sudoers.man.in: regen
        !          5033:
        !          5034: 2004-08-05 21:14  millert
        !          5035:
        !          5036:        * TODO: Some more todo for the next release.
        !          5037:
        !          5038: 2004-08-05 21:13  millert
        !          5039:
        !          5040:        * INSTALL: Make it clear that PAM should be used for DCE support
        !          5041:          when possible.
        !          5042:
        !          5043: 2004-08-05 21:13  millert
        !          5044:
        !          5045:        * sudoers.pod: o Document problems with wildcards and relative
        !          5046:          paths.  o Make the order requirements more prominent.  o Change a
        !          5047:          "set" to "reset" for clarity.
        !          5048:
        !          5049: 2004-08-05 14:29  millert
        !          5050:
        !          5051:        * sudo.pod: Mention --with-secure-path, not SECURE_PATH.
        !          5052:
        !          5053: 2004-08-02 22:34  aaron
        !          5054:
        !          5055:        * ldap.c: reflect changes to parse.c
        !          5056:
        !          5057: 2004-08-02 14:44  millert
        !          5058:
        !          5059:        * parse.c, parse.h, parse.yacc, testsudoers.c, visudo.c: Don't pass
        !          5060:          user_cmnd and user_args to command_matches(), just use the
        !          5061:          globals there.  Since we keep state with statics anyway it is
        !          5062:          misleading to pretend that passing in different cmnd and
        !          5063:          cmnd_args will work.
        !          5064:
        !          5065: 2004-08-02 14:40  millert
        !          5066:
        !          5067:        * parse.c: Fix a bug introduced in rev. 1.149.  When checking for
        !          5068:          pseudo-commands check for a '/' anywhere in cmnd, not just the
        !          5069:          first character.
        !          5070:
        !          5071: 2004-07-30 23:07  aaron
        !          5072:
        !          5073:        * sudo.man.in, sudo.pod: Clarification thanks to Olivier Blin
        !          5074:          <oblin@mandrakesoft.com>
        !          5075:
        !          5076: 2004-07-30 22:41  aaron
        !          5077:
        !          5078:        * sudoers.man.in, sudoers.pod: Add ignore_local_sudoers
        !          5079:
        !          5080: 2004-07-30 22:06  aaron
        !          5081:
        !          5082:        * README.LDAP: Sun One schema definition by
        !          5083:          Andreas.Bussjaeger@t-systems.com and janth@moldung.no
        !          5084:
        !          5085: 2004-07-29 11:57  millert
        !          5086:
        !          5087:        * CHANGES: typo
        !          5088:
        !          5089: 2004-07-23 16:44  millert
        !          5090:
        !          5091:        * CHANGES: sync
        !          5092:
        !          5093: 2004-07-23 16:43  millert
        !          5094:
        !          5095:        * parse.c: Parse sudoers file as PERM_RUNAS not PERM_ROOT and
        !          5096:          remove a useless PERM_SUDOERS.  Restore to PERM_ROOT upon exit of
        !          5097:          the parse.
        !          5098:
        !          5099: 2004-07-08 10:20  millert
        !          5100:
        !          5101:        * CHANGES: PAM change
        !          5102:
        !          5103: 2004-07-07 21:04  aaron
        !          5104:
        !          5105:        * ldap.c: Better debugging of ALL command
        !          5106:
        !          5107: 2004-07-07 20:15  millert
        !          5108:
        !          5109:        * parse.c: When matching for "sudoedit" in sudoers check both the
        !          5110:          command the user typed *and* the command that is listed in the
        !          5111:          sudoers entry.
        !          5112:
        !          5113: 2004-07-04 19:59  aaron
        !          5114:
        !          5115:        * ldap.c: Added !command feature
        !          5116:
        !          5117: 2004-06-28 10:51  millert
        !          5118:
        !          5119:        * auth/pam.c: Use pam_acct_mgmt() to check for disabled accounts;
        !          5120:          Brian Farrell
        !          5121:
        !          5122: 2004-06-10 23:11  millert
        !          5123:
        !          5124:        * LICENSE: License is ISC-style, not BSD-style
        !          5125:
        !          5126: 2004-06-10 20:58  millert
        !          5127:
        !          5128:        * CHANGES: sync
        !          5129:
        !          5130: 2004-06-10 16:54  millert
        !          5131:
        !          5132:        * sudo.man.in, sudo.cat: regen
        !          5133:
        !          5134: 2004-06-10 16:53  millert
        !          5135:
        !          5136:        * sudo.pod: o Update some out of date bits to reality o Change the
        !          5137:          shell promt in examples to bourne-shell style o Clarify some
        !          5138:          details o Add a CAVEAT about "sudo cd /foo"
        !          5139:
        !          5140: 2004-06-10 16:19  millert
        !          5141:
        !          5142:        * check.c: Don't ask for a password if invoking user == target
        !          5143:          user.
        !          5144:
        !          5145: 2004-06-10 12:32  millert
        !          5146:
        !          5147:        * sudo.c: typo in comment
        !          5148:
        !          5149: 2004-06-08 19:20  millert
        !          5150:
        !          5151:        * sudoers.man.in, sudoers.cat: regen
        !          5152:
        !          5153: 2004-06-08 19:19  millert
        !          5154:
        !          5155:        * sudoers.pod: Expand on NOEXEC a little.
        !          5156:
        !          5157: 2004-06-08 16:20  millert
        !          5158:
        !          5159:        * TODO: sync
        !          5160:
        !          5161: 2004-06-08 15:58  millert
        !          5162:
        !          5163:        * visudo.man.in, visudo.cat: regen
        !          5164:
        !          5165: 2004-06-08 15:55  millert
        !          5166:
        !          5167:        * CHANGES, parse.yacc, visudo.c, visudo.pod: Add a check in visudo
        !          5168:          for runas_default being set after it has already been used.
        !          5169:
        !          5170: 2004-06-08 13:53  millert
        !          5171:
        !          5172:        * parse.yacc: Add a MATCHED macro for testing whether foo_matches
        !          5173:          has been set to TRUE or FALSE.  This is more readable than
        !          5174:          checking for >=0 or < 0.  Doesn't change the actual code
        !          5175:          generated.
        !          5176:
        !          5177: 2004-06-06 20:11  millert
        !          5178:
        !          5179:        * sudoers.man.in, sudoers.cat: regen
        !          5180:
        !          5181: 2004-06-06 20:07  millert
        !          5182:
        !          5183:        * sudoers, sudoers.pod: Correct description of where Defaults specs
        !          5184:          should go.
        !          5185:
        !          5186: 2004-06-06 20:02  millert
        !          5187:
        !          5188:        * find_path.c, ldap.c, logging.h, testsudoers.c, visudo.c,
        !          5189:          auth/bsdauth.c, auth/kerb5.c, auth/pam.c: update (c) year
        !          5190:
        !          5191: 2004-06-06 19:58  millert
        !          5192:
        !          5193:        * check.c, compat.h, defaults.c, env.c, find_path.c, getcwd.c,
        !          5194:          ldap.c, logging.h, parse.c, parse.yacc, sudo.c, testsudoers.c,
        !          5195:          tgetpass.c, visudo.c, auth/bsdauth.c, auth/kerb5.c, auth/pam.c:
        !          5196:          Remove trailing spaces, no actual code changes.
        !          5197:
        !          5198: 2004-06-06 16:22  millert
        !          5199:
        !          5200:        * parse.yacc: Fix a >=0 that should be <0 that was improperly
        !          5201:          converted when UNSPEC was added.
        !          5202:
        !          5203: 2004-06-06 15:54  millert
        !          5204:
        !          5205:        * parse.yacc: Add do {} while(0) around pop macro Set cmnd_matches
        !          5206:          to UNSPEC, not NOMATCH when resetting it.
        !          5207:
        !          5208: 2004-06-06 15:39  millert
        !          5209:
        !          5210:        * parse.yacc: Fix pastos introduced in SETNMATCH addition.
        !          5211:
        !          5212: 2004-06-05 13:55  millert
        !          5213:
        !          5214:        * README.LDAP: Update for configure changes
        !          5215:
        !          5216: 2004-06-05 13:42  millert
        !          5217:
        !          5218:        * parse.yacc, sudo.h: Add NOMATCH and UNSPEC defines (-1 and -2
        !          5219:          respectively) and use these in parse.yacc.  Also in parse.yacc
        !          5220:          initialize the *_matches vars to UNSPEC and add two macros,
        !          5221:          SETMATCH and SETNMATCH for use when setting *_matches to a value
        !          5222:          that may be NOMATCH/UNSPEC/TRUE/FALSE.
        !          5223:
        !          5224: 2004-06-05 11:17  millert
        !          5225:
        !          5226:        * parse.yacc: Initialize runas to -2, not -1 since we need to be
        !          5227:          able to distinguish between the initialized value and the value
        !          5228:          of a non-match when passing along the runas value to multiple
        !          5229:          commands.
        !          5230:
        !          5231:          The result of this is that an unmatched runas is now set to -1,
        !          5232:          not 0.  This is required now that parse.c treats a FALSE value
        !          5233:          for runas as being explicitly denied.
        !          5234:
        !          5235: 2004-06-03 16:21  millert
        !          5236:
        !          5237:        * getprogname.c, sudo.c, visudo.c: Error out if argc < 1.
        !          5238:
        !          5239: 2004-06-03 12:37  millert
        !          5240:
        !          5241:        * configure, configure.in: Add tests for what libs we need to link
        !          5242:          with for ldap and for whether or not lber.h needs to be
        !          5243:          explicitly included.
        !          5244:
        !          5245: 2004-06-02 20:30  aaron
        !          5246:
        !          5247:        * ldap.c: Solaris native LDAP build fix
        !          5248:
        !          5249: 2004-06-01 16:56  millert
        !          5250:
        !          5251:        * ldap.c: Set edn to NULL is ldap_get_dn() fails to avoid potential
        !          5252:          use of an unset variable.
        !          5253:
        !          5254: 2004-06-01 16:56  millert
        !          5255:
        !          5256:        * sudo.h: Add prototype for sudo_ldap_list_matches
        !          5257:
        !          5258: 2004-06-01 16:53  millert
        !          5259:
        !          5260:        * compat.h, config.h.in, configure, configure.in: Better check for
        !          5261:          dirfd macro--we now set HAVE_DIRFD for the macro version too.
        !          5262:          Added check for dd_fd in `DIR' if no dirfd is found; this is now
        !          5263:          used to confitionally define the dirfd macro in compat.h.
        !          5264:
        !          5265: 2004-06-01 16:51  millert
        !          5266:
        !          5267:        * closefrom.c: Only check /proc/$$/fd if we have the dirfd
        !          5268:          function/macro.
        !          5269:
        !          5270: 2004-06-01 15:13  millert
        !          5271:
        !          5272:        * compat.h, config.h.in, configure, configure.in: Add a check for a
        !          5273:          dirfd() function (like Linux) and add a dirfd macro in compat.h
        !          5274:          if there is no dirfd() function or macro.
        !          5275:
        !          5276: 2004-06-01 14:59  millert
        !          5277:
        !          5278:        * closefrom.c, getcwd.c: dirfd() is now defined in compat.h as
        !          5279:          needed.
        !          5280:
        !          5281: 2004-06-01 14:30  millert
        !          5282:
        !          5283:        * CHANGES: Clarify closefrom() note.
        !          5284:
        !          5285: 2004-06-01 12:51  millert
        !          5286:
        !          5287:        * parse.c: When checking for a command in the directory, only copy
        !          5288:          the base dir once.
        !          5289:
        !          5290: 2004-06-01 12:44  millert
        !          5291:
        !          5292:        * closefrom.c: If there is a /proc/$$/fd directory, behave like the
        !          5293:          Solaris closefrom() and only close the descriptors listed
        !          5294:          therein.
        !          5295:
        !          5296: 2004-06-01 12:23  millert
        !          5297:
        !          5298:        * alloc.c: compat.h guarantees INT_MAX is defined.
        !          5299:
        !          5300: 2004-06-01 12:23  millert
        !          5301:
        !          5302:        * compat.h: Add definitions of OPEN_MAX and INT_MAX for those
        !          5303:          without it and remove definition of RLIM_INFINITY (now unused).
        !          5304:
        !          5305: 2004-05-31 21:22  millert
        !          5306:
        !          5307:        * CHANGES, alloc.c, check.c, compat.h, find_path.c, getcwd.c,
        !          5308:          parse.c, sudo.c, sudo.h, visudo.c: Use PATH_MAX, not MAXPATHLEN
        !          5309:          since the former is standardized.
        !          5310:
        !          5311: 2004-05-31 19:18  millert
        !          5312:
        !          5313:        * CHANGES: sync
        !          5314:
        !          5315: 2004-05-31 19:10  millert
        !          5316:
        !          5317:        * RUNSON: Add some entries that were mailed in a while ago
        !          5318:
        !          5319: 2004-05-31 14:16  millert
        !          5320:
        !          5321:        * closefrom.c: o sysconf returns a long, not an int.  o check for
        !          5322:          negative return value from sysconf/getdtablesize and use
        !          5323:          OPEN_MAX in this case.  o define OPEN_MAX to 256 for those
        !          5324:          without it (a fair guess...)
        !          5325:
        !          5326: 2004-05-30 12:25  millert
        !          5327:
        !          5328:        * UPGRADE: Mention change in parse order for RunAs entries.
        !          5329:
        !          5330: 2004-05-30 12:15  millert
        !          5331:
        !          5332:        * configure: regen
        !          5333:
        !          5334: 2004-05-29 18:29  millert
        !          5335:
        !          5336:        * config.h.in, configure.in, INSTALL, README.LDAP:  o --with-ldap
        !          5337:          now takes an optional dir as a parameter
        !          5338:           o added check for ldap_initialize() and start_tls_s()
        !          5339:
        !          5340: 2004-05-29 14:54  millert
        !          5341:
        !          5342:        * README.LDAP: Fix some typos, word choice and formatting issues.
        !          5343:
        !          5344: 2004-05-28 18:06  millert
        !          5345:
        !          5346:        * tgetpass.c: Use SA_INTERRUPT so SunOS works correctly, avoid
        !          5347:          stdio and just use read/write as it is simpler.
        !          5348:
        !          5349: 2004-05-28 16:27  millert
        !          5350:
        !          5351:        * configure, configure.in: Remove hack overriding cross-compiler
        !          5352:          check.  It should no longer be needed.
        !          5353:
        !          5354: 2004-05-28 16:26  millert
        !          5355:
        !          5356:        * compat.h: Remove select() compat bits since we no longer use
        !          5357:          select().
        !          5358:
        !          5359: 2004-05-28 16:24  millert
        !          5360:
        !          5361:        * CHANGES, tgetpass.c: Use alarm() instead of select() for the
        !          5362:          timeout for systems that don't fully/properly implement select().
        !          5363:
        !          5364: 2004-05-27 19:14  millert
        !          5365:
        !          5366:        * CHANGES: synbc
        !          5367:
        !          5368: 2004-05-27 19:12  millert
        !          5369:
        !          5370:        * RUNSON: update
        !          5371:
        !          5372: 2004-05-27 19:12  millert
        !          5373:
        !          5374:        * set_perms.c: Deal with systems that have no way of setting the
        !          5375:          effective uid such as nsr-tandem-nsk.
        !          5376:
        !          5377: 2004-05-27 19:01  millert
        !          5378:
        !          5379:        * configure, configure.in: Define NO_SAVED_IDS if we don't find
        !          5380:          seteuid()
        !          5381:
        !          5382: 2004-05-27 18:21  millert
        !          5383:
        !          5384:        * config.h.in, configure, configure.in: Add back check for
        !          5385:          setreuid() since NSK doesn't have it.
        !          5386:
        !          5387: 2004-05-27 15:57  millert
        !          5388:
        !          5389:        * sudoers.cat, sudoers.man.in: regen
        !          5390:
        !          5391: 2004-05-27 15:56  millert
        !          5392:
        !          5393:        * BUGS, CHANGES: sync
        !          5394:
        !          5395: 2004-05-27 15:55  millert
        !          5396:
        !          5397:        * parse.c: In sudoers_lookup() return VALIDATE_NOT_OK if the runas
        !          5398:          user was explicitly denied and the command matched.  This fixes a
        !          5399:          long-standing bug and makes:     foo machine = (ALL)
        !          5400:          /usr/bin/blah     foo machine = (!bar) /usr/bin/blah
        !          5401:
        !          5402:          equivalent to:     foo machine = (ALL, !bar) /usr/bin/blah
        !          5403:
        !          5404: 2004-05-27 15:52  millert
        !          5405:
        !          5406:        * sudoers.pod: Clarify mail_noperm
        !          5407:
        !          5408: 2004-05-19 21:25  aaron
        !          5409:
        !          5410:        * Makefile.in: Missing DESTDIR in make install for sudo_noexec.la
        !          5411:
        !          5412: 2004-05-17 18:32  millert
        !          5413:
        !          5414:        * sudo.man.in, sudoers.man.in, visudo.man.in, sudo.cat,
        !          5415:          sudoers.cat, visudo.cat: regen
        !          5416:
        !          5417: 2004-05-17 18:31  millert
        !          5418:
        !          5419:        * TODO: sync
        !          5420:
        !          5421: 2004-05-17 18:31  millert
        !          5422:
        !          5423:        * sample.sudoers, sudoers.pod: Remove fastboot/fasthalt (who still
        !          5424:          remembers these?) and add a minimal sudoedit example.
        !          5425:
        !          5426: 2004-05-17 18:21  millert
        !          5427:
        !          5428:        * CHANGES, INSTALL, TROUBLESHOOTING, UPGRADE, sudo.c, visudo.c:
        !          5429:          filesystem -> file system
        !          5430:
        !          5431: 2004-05-17 18:19  millert
        !          5432:
        !          5433:        * sudo.pod, sudoers.pod: Fix some minor typos and formatting goofs
        !          5434:
        !          5435: 2004-05-17 18:10  millert
        !          5436:
        !          5437:        * lex.yy.c: regen
        !          5438:
        !          5439: 2004-05-17 17:57  millert
        !          5440:
        !          5441:        * visudo.pod: remove my email addr
        !          5442:
        !          5443: 2004-05-17 17:55  millert
        !          5444:
        !          5445:        * sudo.pod, sudoers.pod, visudo.pod: Use @mansectform@ and
        !          5446:          @mansectsu@ everywhere Make man page references links with L<>
        !          5447:
        !          5448: 2004-05-17 16:51  millert
        !          5449:
        !          5450:        * parse.lex: Accept quoted globbing characters and pass them
        !          5451:          verbatim for fnmatch()
        !          5452:
        !          5453: 2004-05-17 16:50  millert
        !          5454:
        !          5455:        * UPGRADE: Document that /tmp/.odus is gone.
        !          5456:
        !          5457: 2004-05-17 16:28  millert
        !          5458:
        !          5459:        * CHANGES, aclocal.m4, configure, pathnames.h.in: No longer use
        !          5460:          /tmp/.odus as a possible timestamp dir unless specifically
        !          5461:          configured to do so.  Instead, if no /var/run exists, use
        !          5462:          /var/adm/sudo or /usr/adm/sudo.
        !          5463:
        !          5464: 2004-05-17 16:08  millert
        !          5465:
        !          5466:        * check.c, compat.h, logging.c, set_perms.c, sudo.c, tgetpass.c,
        !          5467:          visudo.c: Preliminary changes to support nsr-tandem-nsk.  Based
        !          5468:          on patches from Tom Bates.
        !          5469:
        !          5470: 2004-05-16 18:47  millert
        !          5471:
        !          5472:        * CHANGES: There was no 1.6.7p6.
        !          5473:
        !          5474: 2004-05-16 16:38  millert
        !          5475:
        !          5476:        * BUGS, CHANGES: sync
        !          5477:
        !          5478: 2004-05-16 16:36  millert
        !          5479:
        !          5480:        * Makefile.in: add missing files to DISTFILES
        !          5481:
        !          5482: 2004-05-16 16:23  millert
        !          5483:
        !          5484:        * sudoers.man.in, sudo.cat, sudoers.cat, visudo.cat: regen
        !          5485:
        !          5486: 2004-05-16 16:20  millert
        !          5487:
        !          5488:        * Makefile.in: Fix some line wrap and update (c) year
        !          5489:
        !          5490: 2004-04-28 15:05  aaron
        !          5491:
        !          5492:        * README.LDAP: Build Note
        !          5493:
        !          5494: 2004-04-06 22:03  aaron
        !          5495:
        !          5496:        * Makefile.in: Fix install-dirs
        !          5497:
        !          5498: 2004-04-04 20:27  millert
        !          5499:
        !          5500:        * visudo.c: In Exit() when used as a signal handler, emsg is a
        !          5501:          pointer so sizeof() is wrong so make it a #define instead.  Also
        !          5502:          avoid using a negative exit value.  Found by Aaron Campbell
        !          5503:
        !          5504: 2004-03-24 18:23  millert
        !          5505:
        !          5506:        * sudoers.pod: Remove bogus sentence about uids in a User_List.
        !          5507:          Document usernames vs. uid parsing in a Runas_List.
        !          5508:
        !          5509: 2004-03-24 18:06  millert
        !          5510:
        !          5511:        * parse.c, parse.h, parse.yacc, sudo.c, testsudoers.c, visudo.c: If
        !          5512:          the user specified a uid with the -u flag and the uid exists in
        !          5513:          the passwd file, set runas_user to the name, not the uid.
        !          5514:
        !          5515:          When comparing usernames in sudoers, if a name is really a uid
        !          5516:          (starts with '#') compare it numerically to pw_uid.
        !          5517:
        !          5518: 2004-03-22 13:35  millert
        !          5519:
        !          5520:        * auth/kerb5.c: krb5_mcc_ops should be const; Johnny C. Lam
        !          5521:
        !          5522: 2004-02-28 18:54  aaron
        !          5523:
        !          5524:        * CHANGES, config.h.in, ldap.c: Added start_tls support
        !          5525:
        !          5526: 2004-02-14 18:04  millert
        !          5527:
        !          5528:        * Makefile.in: Clean up libtool stuff for 'make distclean' and add
        !          5529:          def_data.c, def_data.h to PARSESRCS.
        !          5530:
        !          5531: 2004-02-14 10:13  aaron
        !          5532:
        !          5533:        * strlcat.c, strlcpy.c: Un-Fix last license munge
        !          5534:
        !          5535: 2004-02-13 16:37  millert
        !          5536:
        !          5537:        * CHANGES, RUNSON, TODO: checkpoint
        !          5538:
        !          5539: 2004-02-13 16:37  millert
        !          5540:
        !          5541:        * lex.yy.c, configure: regen
        !          5542:
        !          5543: 2004-02-13 16:36  millert
        !          5544:
        !          5545:        * LICENSE, Makefile.binary, Makefile.in, alloc.c, check.c,
        !          5546:          closefrom.c, compat.h, defaults.c, defaults.h, env.c, fileops.c,
        !          5547:          find_path.c, getprogname.c, getspwuid.c, goodpath.c, ins_2001.h,
        !          5548:          ins_classic.h, ins_csops.h, ins_goons.h, insults.h, interfaces.c,
        !          5549:          interfaces.h, ldap.c, logging.c, logging.h, parse.c, parse.h,
        !          5550:          parse.lex, parse.yacc, pathnames.h.in, set_perms.c, sigaction.c,
        !          5551:          strerror.c, strlcat.c, strlcpy.c, sudo.c, sudo.h, sudo.man.in,
        !          5552:          sudo.pod, sudo_edit.c, sudo_noexec.c, sudoers.man.in,
        !          5553:          sudoers.pod, testsudoers.c, tgetpass.c, utime.c, version.h,
        !          5554:          visudo.c, visudo.man.in, visudo.pod, zero_bytes.c, auth/afs.c,
        !          5555:          auth/aix_auth.c, auth/bsdauth.c, auth/dce.c, auth/fwtk.c,
        !          5556:          auth/kerb4.c, auth/kerb5.c, auth/pam.c, auth/passwd.c,
        !          5557:          auth/rfc1938.c, auth/secureware.c, auth/securid.c,
        !          5558:          auth/securid5.c, auth/sia.c, auth/sudo_auth.c, auth/sudo_auth.h,
        !          5559:          emul/search.h, emul/utime.h: More to a less restrictive,
        !          5560:          ISC-style license.
        !          5561:
        !          5562: 2004-02-12 21:08  aaron
        !          5563:
        !          5564:        * CHANGES, Makefile.in, README.LDAP, config.h.in, configure.in,
        !          5565:          def_data.c, def_data.h, def_data.in, ldap.c, sudo.c, sudo.h,
        !          5566:          sudoers2ldif: Merged in LDAP Support
        !          5567:
        !          5568: 2004-02-08 15:53  millert
        !          5569:
        !          5570:        * sudo.h, sudo_noexec.c: Only do "extern int errno" if errno is not
        !          5571:          a macro.
        !          5572:
        !          5573: 2004-02-06 18:08  millert
        !          5574:
        !          5575:        * set_perms.c: setreuid(0, 0) fails on QNX if the euid is not
        !          5576:          already 0 so set the euid first, then just call setuid(0) to set
        !          5577:          the real uid too.
        !          5578:
        !          5579: 2004-02-06 14:52  millert
        !          5580:
        !          5581:        * set_perms.c: Use setresuid() and setreuid() for PERM_RUNAS when
        !          5582:          appropriate instead of seteuid() which may not exist.
        !          5583:
        !          5584: 2004-02-04 14:58  millert
        !          5585:
        !          5586:        * LICENSE: 2004
        !          5587:
        !          5588: 2004-02-03 23:38  millert
        !          5589:
        !          5590:        * INSTALL, config.h.in, configure, configure.in, ins_classic.h: Add
        !          5591:          --with-pc-insults configure option
        !          5592:
        !          5593: 2004-02-03 23:32  millert
        !          5594:
        !          5595:        * visudo.man.in: Prefer VISUAL over EDITOR like old vipw did.
        !          5596:
        !          5597: 2004-02-01 15:45  millert
        !          5598:
        !          5599:        * sudo.man.in, sudoers.man.in: regen
        !          5600:
        !          5601: 2004-02-01 15:44  millert
        !          5602:
        !          5603:        * sudoers.pod: Add a note that noexec is not a cure-all.
        !          5604:
        !          5605: 2004-02-01 15:20  millert
        !          5606:
        !          5607:        * sudoers.pod: Mention that disabling "root_sudo" is pretty
        !          5608:          pointless.
        !          5609:
        !          5610: 2004-02-01 15:20  millert
        !          5611:
        !          5612:        * configure, configure.in: Substitute for root_sudo in sudoers.pod
        !          5613:
        !          5614: 2004-02-01 15:03  millert
        !          5615:
        !          5616:        * sudo.pod: Add sudoedit to the NAME section
        !          5617:
        !          5618: 2004-02-01 15:00  millert
        !          5619:
        !          5620:        * sudoers.pod: Document that fact that setting ignore_dot in
        !          5621:          sudoers has no effect due to the fact that find_path() is called
        !          5622:          *before* sudoers is read.
        !          5623:
        !          5624: 2004-01-29 19:50  millert
        !          5625:
        !          5626:        * sudo_edit.c: Do not require _PATH_USRTMP to be set.
        !          5627:
        !          5628: 2004-01-29 19:42  millert
        !          5629:
        !          5630:        * BUGS, CHANGES, TODO: sync
        !          5631:
        !          5632: 2004-01-29 19:42  millert
        !          5633:
        !          5634:        * sudo.man.in: regen
        !          5635:
        !          5636: 2004-01-29 19:41  millert
        !          5637:
        !          5638:        * sudo.pod: Clarify that when sudo is run by root with the
        !          5639:          SUDO_USER variable set, the sudoers lookup happens for root and
        !          5640:          not the SUDO_USER user.
        !          5641:
        !          5642: 2004-01-29 17:33  millert
        !          5643:
        !          5644:        * defaults.c, env.c, fnmatch.c, interfaces.c, logging.c, parse.c,
        !          5645:          set_perms.c, sigaction.c, sudo.c, tgetpass.c, auth/pam.c,
        !          5646:          auth/sudo_auth.c: Use the SET, CLR and ISSET macros.
        !          5647:
        !          5648: 2004-01-29 16:22  millert
        !          5649:
        !          5650:        * interfaces.h: MAIN was replaced with _SUDO_MAIN some time ago.
        !          5651:
        !          5652: 2004-01-29 16:15  millert
        !          5653:
        !          5654:        * sudo.c: Don't look at prev_user until after we've parsed sudoers
        !          5655:          and done the password check.  That way, if sudo/sudoedit is run
        !          5656:          from a root process that was invoked by sudo, we check sudoers
        !          5657:          for root, not the previous user.  This makes sudoedit much more
        !          5658:          useful and means that for the sudo case, we get correct logging
        !          5659:          on who actually ran the command.
        !          5660:
        !          5661: 2004-01-22 19:22  millert
        !          5662:
        !          5663:        * sudo_edit.c: Add a comment describing why we need to be notified
        !          5664:          about our child stopping.
        !          5665:
        !          5666: 2004-01-22 16:06  millert
        !          5667:
        !          5668:        * def_data.c, def_data.in: Update the noexec variable descriptions
        !          5669:
        !          5670: 2004-01-22 14:18  millert
        !          5671:
        !          5672:        * sudoers.man.in, sudoers.pod: noexec now replaces more than just
        !          5673:          execve()
        !          5674:
        !          5675: 2004-01-22 12:14  millert
        !          5676:
        !          5677:        * sudo_noexec.c: Alas, all the world does not go through execve(2).
        !          5678:          Many systems still have an execv(2) system call, Linux 2.6
        !          5679:          provides fexecve(2) and it is not uncommon for libc to have
        !          5680:          underscore ('_') versions of the functions to be used internally
        !          5681:          by the library.  Instead of stubbing all these out by hand,
        !          5682:          define a macro and let it do the work.  Extra exec functions
        !          5683:          pointed out by Reznic Valery.
        !          5684:
        !          5685: 2004-01-21 21:57  millert
        !          5686:
        !          5687:        * sudo.c, sudo_edit.c: Fix suspending the editor in -e mode.
        !          5688:          Because we do a fork() first we need to be notified when the
        !          5689:          child has been stopped and then send that same signal to ourself
        !          5690:          so the shell can do its job control thing.
        !          5691:
        !          5692: 2004-01-21 21:44  millert
        !          5693:
        !          5694:        * visudo.c: Use WIFEXITED and WEXITSTATUS macros.  If there are
        !          5695:          systems out there that want to run sudo that still don't support
        !          5696:          these we can try to deal with that later.
        !          5697:
        !          5698: 2004-01-21 20:03  millert
        !          5699:
        !          5700:        * lex.yy.c: regen
        !          5701:
        !          5702: 2004-01-21 20:00  millert
        !          5703:
        !          5704:        * sudo.man.in, sudo.pod, sudoers.man.in, sudoers.pod: Document sudo
        !          5705:          -e / sudoedit
        !          5706:
        !          5707: 2004-01-21 19:08  millert
        !          5708:
        !          5709:        * configure, configure.in: fix typo
        !          5710:
        !          5711: 2004-01-21 19:02  millert
        !          5712:
        !          5713:        * config.h.in, configure.in: Add SET/CLR/ISSET
        !          5714:
        !          5715: 2004-01-21 18:55  millert
        !          5716:
        !          5717:        * sudo.c: Allow non-exclusive flags when invoked as sudoedit.
        !          5718:          Pretty print the long usage() line to not wrap (assumes 80 char
        !          5719:          display)
        !          5720:
        !          5721: 2004-01-21 18:01  millert
        !          5722:
        !          5723:        * Makefile.in, sudo.c: If sudo is invoked as "sudoedit" the -e flag
        !          5724:          is implied and no other flags are permitted.
        !          5725:
        !          5726: 2004-01-21 18:00  millert
        !          5727:
        !          5728:        * sudo.h: Add a new flag, -e, that makes it possible to give users
        !          5729:          the ability to edit files with the editor of their choice as the
        !          5730:          invoking user, not the runas user.  Temporary files are used for
        !          5731:          the actual edit and the temp file is copied over the original
        !          5732:          after the editor is done.
        !          5733:
        !          5734: 2004-01-21 17:25  millert
        !          5735:
        !          5736:        * Makefile.in, parse.c, parse.lex, sudo.c, sudo_edit.c: Add a new
        !          5737:          flag, -e, that makes it possible to give users the ability to
        !          5738:          edit files with the editor of their choice as the invoking user,
        !          5739:          not the runas user.  Temporary files are used for the actual edit
        !          5740:          and the temp file is copied over the original after the editor is
        !          5741:          done.
        !          5742:
        !          5743: 2004-01-21 17:06  millert
        !          5744:
        !          5745:        * sudo.c, env.c: If real uid == 0 and the SUDO_USER environment
        !          5746:          variables is set, use that to determine the invoking user's true
        !          5747:          identity.  That way the proper info gets logged by someone who
        !          5748:          has done "sudo su" but still uses sudo to as root.  We can't do
        !          5749:          this for non-root users since that would open up a security hole,
        !          5750:          though perhaps it would be acceptable to use getlogin(2) on OSes
        !          5751:          where this a system call (and doesn't just look in the utmp
        !          5752:          file).
        !          5753:
        !          5754: 2004-01-21 16:58  millert
        !          5755:
        !          5756:        * pathnames.h.in: Add _PATH_TMP, _PATH_VARTMP and _PATH_USRTMP
        !          5757:
        !          5758: 2004-01-21 16:57  millert
        !          5759:
        !          5760:        * configure, config.h.in, configure.in: Add check for fchown(2)
        !          5761:
        !          5762: 2004-01-20 14:22  millert
        !          5763:
        !          5764:        * sudo.c: Back out portions of the -i commit that set NewArgv[0] in
        !          5765:          set_runaspw.  It is far to late to set NewArgv[0] there and will
        !          5766:          have no effect anyway as cmnd and safe_cmnd have already been
        !          5767:          set.
        !          5768:
        !          5769: 2004-01-20 14:18  millert
        !          5770:
        !          5771:        * visudo.c, visudo.pod: Prefer VISUAL over EDITOR like old vipw
        !          5772:          did.
        !          5773:
        !          5774: 2004-01-18 20:17  millert
        !          5775:
        !          5776:        * env.c, sudo.c: In -i mode always set new environment based on the
        !          5777:          runas user's passwd entry.
        !          5778:
        !          5779: 2004-01-18 17:56  millert
        !          5780:
        !          5781:        * sudo.man.in, sudo.pod: Document the new -i flag and sync SYNOPSIS
        !          5782:          section with usage() in sudo.c.  Also sort the flags in the
        !          5783:          OPTIONS section.
        !          5784:
        !          5785: 2004-01-18 17:55  millert
        !          5786:
        !          5787:        * sudo.c, sudo.h: o Add -i that acts similar to "su -", based on
        !          5788:          patches from David J. MacKenzie o Sort the flags in the usage
        !          5789:          message
        !          5790:
        !          5791: 2004-01-18 17:22  millert
        !          5792:
        !          5793:        * sudoers.man.in, sudoers.pod: Add a missing @runas_default@
        !          5794:          substitution.
        !          5795:
        !          5796: 2004-01-17 16:34  millert
        !          5797:
        !          5798:        * sudo.c: Change euid to runas user before calling find_path().
        !          5799:          Unfortunately, though runas_user can be modified in sudoers we
        !          5800:          haven't parsed sudoers yet.
        !          5801:
        !          5802: 2004-01-17 16:25  millert
        !          5803:
        !          5804:        * sudoers.man.in, sudoers.pod: Add missing defintion of
        !          5805:          Parameter_List and use single pipes in the Defaults EBNF
        !          5806:          definition.
        !          5807:
        !          5808: 2004-01-17 13:49  millert
        !          5809:
        !          5810:        * sudo.c: Fix a bug when set_runaspw() is used as a callback.  We
        !          5811:          don't want to reset the contents of runas_pw if the user
        !          5812:          specified a user via the -u flag.
        !          5813:
        !          5814:          Avoid unnecessary passwd lookups in set_authpw().  In most cases
        !          5815:          we already have the info in runas_pw.
        !          5816:
        !          5817: 2004-01-16 18:16  millert
        !          5818:
        !          5819:        * check.c: Add Stan Lee / Uncle Ben quote to the lecture from
        !          5820:          RedHat
        !          5821:
        !          5822: 2004-01-16 18:12  millert
        !          5823:
        !          5824:        * sudo.h: Update sudo_getepw() proto and add one for set_runaspw()
        !          5825:
        !          5826: 2004-01-16 18:10  millert
        !          5827:
        !          5828:        * parse.c: If we can't stat the command as root, try as the runas
        !          5829:          user instead.
        !          5830:
        !          5831: 2004-01-16 18:09  millert
        !          5832:
        !          5833:        * testsudoers.c, visudo.c: Add stub set_runaspw() function
        !          5834:
        !          5835: 2004-01-16 18:09  millert
        !          5836:
        !          5837:        * sudo.c: Add set_runaspw() function to fill in runas_pw.  This
        !          5838:          will be used as a callback to update runas_pw when the runas user
        !          5839:          changes.
        !          5840:
        !          5841: 2004-01-16 18:07  millert
        !          5842:
        !          5843:        * env.c, sudo.c: PERM_RUNAS -> PERM_FULL_RUNAS
        !          5844:
        !          5845: 2004-01-16 18:05  millert
        !          5846:
        !          5847:        * set_perms.c, sudo.h: Rename PERM_RUNAS -> PERM_FULL_RUNAS and add
        !          5848:          a PERM_RUNAS that just changes the euid.
        !          5849:
        !          5850: 2004-01-16 18:04  millert
        !          5851:
        !          5852:        * getspwuid.c: Make sudo_pwdup() act like OpenBSD pw_dup() and
        !          5853:          allocate memory in one chunk for easy free()ing.  Also change it
        !          5854:          from static to extern.
        !          5855:
        !          5856: 2004-01-16 18:03  millert
        !          5857:
        !          5858:        * defaults.c, defaults.h: Add callback support
        !          5859:
        !          5860: 2004-01-16 18:02  millert
        !          5861:
        !          5862:        * def_data.c, def_data.in, mkdefaults: Add a callback field and use
        !          5863:          it for runas_default
        !          5864:
        !          5865: 2004-01-15 15:13  millert
        !          5866:
        !          5867:        * auth/fwtk.c: Add support for chalnecho and display server
        !          5868:          responses used by fwtk >= 2.0
        !          5869:
        !          5870: 2004-01-12 18:39  millert
        !          5871:
        !          5872:        * sudoers.man.in, sudoers.pod: ld.so is ld.so.1 on solaris
        !          5873:
        !          5874: 2004-01-12 14:03  millert
        !          5875:
        !          5876:        * Makefile.in, config.h.in, configure, configure.in, sudo.c,
        !          5877:          sudo.h: Use closefrom() instead of doing the equivalent inline.
        !          5878:
        !          5879: 2004-01-12 13:55  millert
        !          5880:
        !          5881:        * closefrom.c: closefrom(3) for systems w/o it
        !          5882:
        !          5883: 2004-01-09 16:29  millert
        !          5884:
        !          5885:        * sudoers.man.in: Update from .pod file.
        !          5886:
        !          5887: 2004-01-09 16:26  millert
        !          5888:
        !          5889:        * configure, configure.in: Substitute noexec_file for the sudoers
        !          5890:          man page
        !          5891:
        !          5892: 2004-01-09 16:24  millert
        !          5893:
        !          5894:        * sudo.man.in, sudo.pod: Mention noexec
        !          5895:
        !          5896: 2004-01-09 16:16  millert
        !          5897:
        !          5898:        * sudoers.man.in, sudoers.pod: Document noexec
        !          5899:
        !          5900: 2004-01-09 14:38  millert
        !          5901:
        !          5902:        * config.h.in, configure.in, auth/pam.c: Move PAM_CONST macro
        !          5903:          definition from config.h to pam.c where it belongs.  We can't
        !          5904:          have this in config.h since that gets included too early.
        !          5905:
        !          5906: 2004-01-09 14:35  millert
        !          5907:
        !          5908:        * config.h.in, configure, configure.in, auth/pam.c: Some PAM
        !          5909:          implementations put their headers in /usr/include/pam instead of
        !          5910:          /usr/include/security.
        !          5911:
        !          5912: 2004-01-09 14:32  millert
        !          5913:
        !          5914:        * configure.in: I missed changing the EXEC macro -> EXECV here when
        !          5915:          I changed this in config.h.in and sudo.c a while ago.
        !          5916:
        !          5917: 2004-01-09 13:15  millert
        !          5918:
        !          5919:        * acsite.m4: OpenBSD vax/m88k/hppa don't do shared libs
        !          5920:
        !          5921: 2004-01-09 03:29  millert
        !          5922:
        !          5923:        * configure, configure.in: o merge the hpux case entries into a
        !          5924:          single entry w/ its own sub-case statement.  o HP-UX >= 11
        !          5925:          support getspnam(), use it in preference to getprpwuid()
        !          5926:
        !          5927: 2004-01-09 02:58  millert
        !          5928:
        !          5929:        * configure, configure.in: eval $shrext so that it expands nicely
        !          5930:          on MacOS X
        !          5931:
        !          5932: 2004-01-09 02:50  millert
        !          5933:
        !          5934:        * Makefile.in: Don't lie about making a module, it does the wrong
        !          5935:          thing on mach
        !          5936:
        !          5937: 2004-01-09 02:49  millert
        !          5938:
        !          5939:        * ltmain.sh: Remove requirement that libs must begin with "lib".
        !          5940:          They don't when we point directly at the lib using LD_PRELOAD or
        !          5941:          its equivalent.
        !          5942:
        !          5943: 2004-01-09 02:01  millert
        !          5944:
        !          5945:        * acsite.m4: Disable support for c++, f77 and java.  We don't need
        !          5946:          it, it takes a lot of time, and it hosed our check for shared lib
        !          5947:          support.
        !          5948:
        !          5949: 2004-01-09 02:00  millert
        !          5950:
        !          5951:        * configure: regen
        !          5952:
        !          5953: 2004-01-09 02:00  millert
        !          5954:
        !          5955:        * configure.in: Call AC_ENABLE_SHARED and check the status of
        !          5956:          enable_shared to know when shared libs are available.
        !          5957:
        !          5958: 2004-01-09 01:37  millert
        !          5959:
        !          5960:        * acsite.m4: Duh, OpenBSD suports shared libs too
        !          5961:
        !          5962: 2004-01-09 01:18  millert
        !          5963:
        !          5964:        * configure.in, config.h.in: Only OpenPAM and Linux PAM use const
        !          5965:          qualifiers.
        !          5966:
        !          5967: 2004-01-09 01:15  millert
        !          5968:
        !          5969:        * configure, configure.in: o No need to check for sed, libtool
        !          5970:          config does that for us o move check for --with-noexec until
        !          5971:          after libtool magic is run so we   can use $can_build_shared and
        !          5972:          $shrext
        !          5973:
        !          5974: 2004-01-09 01:14  millert
        !          5975:
        !          5976:        * ltmain.sh: Don't print a bunch of crap about library installs
        !          5977:          since we are not really installing a library.
        !          5978:
        !          5979: 2004-01-09 00:38  millert
        !          5980:
        !          5981:        * env.c: Make format_env() varargs Add noexec support for Darwin,
        !          5982:          MacOS X, Irix, and Tru64
        !          5983:
        !          5984: 2004-01-09 00:32  millert
        !          5985:
        !          5986:        * acsite.m4, ltconfig, ltmain.sh: Update to libtool 1.5 with local
        !          5987:          changes:  o no ldconfig in the finish step  o assume no libprefix
        !          5988:          or version is needed
        !          5989:
        !          5990: 2004-01-09 00:15  millert
        !          5991:
        !          5992:        * sudo_noexec.c: Fix compilation under K&R
        !          5993:
        !          5994: 2004-01-06 09:31  millert
        !          5995:
        !          5996:        * CHANGES: checkpoint
        !          5997:
        !          5998: 2004-01-06 09:28  millert
        !          5999:
        !          6000:        * sudo_noexec.c: stub execve() that just returns EACCES; used for
        !          6001:          noexec functionality
        !          6002:
        !          6003: 2004-01-06 01:42  millert
        !          6004:
        !          6005:        * sudo.tab.h: Regen w/ updated byacc from OpenBSD; fixes a gcc 3.2
        !          6006:          issue with generated code.
        !          6007:
        !          6008: 2004-01-05 16:10  millert
        !          6009:
        !          6010:        * def_data.c, def_data.h, def_data.in: Move the environment
        !          6011:          defaults to the end and shorten a few of the descriptions.
        !          6012:
        !          6013: 2004-01-05 15:05  millert
        !          6014:
        !          6015:        * configure.in, configure: no shared libs on ultris or convexos
        !          6016:
        !          6017: 2004-01-05 15:03  millert
        !          6018:
        !          6019:        * Makefile.in, configure, configure.in: Build sudo_noexec shared
        !          6020:          object using libtool; could use some cleanup.
        !          6021:
        !          6022: 2004-01-05 14:59  millert
        !          6023:
        !          6024:        * acsite.m4, ltconfig, ltmain.sh: libtool scaffolding
        !          6025:
        !          6026: 2004-01-05 14:56  millert
        !          6027:
        !          6028:        * parse.yacc: Merge the NOPASSWD/PASSWD and NOEXEC/EXEC rules so
        !          6029:          that order is not important.
        !          6030:
        !          6031: 2004-01-05 12:15  millert
        !          6032:
        !          6033:        * defaults.c, env.c, parse.c, parse.h, parse.lex, parse.yacc,
        !          6034:          pathnames.h.in, sudo.c, sudo.h, lex.yy.c: update copyright year
        !          6035:
        !          6036: 2004-01-04 22:58  millert
        !          6037:
        !          6038:        * configure, configure.in, defaults.c, env.c, pathnames.h.in: Add
        !          6039:          _PATH_SUDO_NOEXEC and corresponding --with-noexec configure
        !          6040:          option.  The default value of noexec_file is set to this.
        !          6041:
        !          6042: 2004-01-04 21:48  millert
        !          6043:
        !          6044:        * def_data.c, def_data.h, def_data.in, env.c, lex.yy.c, parse.c,
        !          6045:          parse.h, parse.lex, parse.yacc, sudo.c, sudo.h, sudo.tab.h: Add
        !          6046:          support for preloading a shared object containing a dummy
        !          6047:          execve() function that just sets error and returns -1.  This adds
        !          6048:          a "noexec_file" option to load the filename as well as a "noexec"
        !          6049:          flag to enable it unconditionally.  There is also a NOEXEC tag
        !          6050:          that can be attached to specific commands and an EXEC tag to
        !          6051:          disable it.
        !          6052:
        !          6053: 2004-01-04 21:40  millert
        !          6054:
        !          6055:        * mkdefaults: add missing newline to usage statement
        !          6056:
        !          6057: 2004-01-04 20:39  millert
        !          6058:
        !          6059:        * config.h.in, sudo.c: Rename EXEC macro -> EXECV
        !          6060:
        !          6061: 2004-01-04 20:16  millert
        !          6062:
        !          6063:        * logging.c: Don't truncate usernames to 8 characters in the log
        !          6064:          message.
        !          6065:
        !          6066: 2004-01-04 20:13  millert
        !          6067:
        !          6068:        * check.c, sudoers.man.in, sudoers.pod: Update copyright year
        !          6069:
        !          6070: 2004-01-04 20:12  millert
        !          6071:
        !          6072:        * check.c, def_data.c, def_data.h, def_data.in, sudoers.man.in,
        !          6073:          sudoers.pod: Add a new option, lecture_file, that can be used to
        !          6074:          point to a custom sudo lecture.
        !          6075:
        !          6076: 2003-12-31 17:46  millert
        !          6077:
        !          6078:        * Makefile.in, sudo.h, zero_bytes.c, auth/aix_auth.c,
        !          6079:          auth/bsdauth.c, auth/fwtk.c, auth/pam.c, auth/sudo_auth.c: Add a
        !          6080:          zero_bytes() function to do the equivalent of bzero in such a way
        !          6081:          that will heopfully not be optimized away by sneaky compilers.
        !          6082:
        !          6083: 2003-12-31 13:35  millert
        !          6084:
        !          6085:        * err.c: Use #ifdef __STDC__, not #if __STDC__.
        !          6086:
        !          6087: 2003-12-30 17:41  millert
        !          6088:
        !          6089:        * mkdefaults: Always put at least one space between the def_* macro
        !          6090:          name and its definition.
        !          6091:
        !          6092: 2003-12-30 17:34  millert
        !          6093:
        !          6094:        * configure, configure.in: Adjust code for --without-lecture to
        !          6095:          match new values.
        !          6096:
        !          6097: 2003-12-30 17:33  millert
        !          6098:
        !          6099:        * visudo.man.in: regen after pasto fix
        !          6100:
        !          6101: 2003-12-30 17:31  millert
        !          6102:
        !          6103:        * sudoers.man.in, sudoers.pod: Document that "lecture" has changed
        !          6104:          from a flag to a tuple.
        !          6105:
        !          6106: 2003-12-30 17:31  millert
        !          6107:
        !          6108:        * check.c, def_data.c, def_data.h, def_data.in, defaults.c,
        !          6109:          defaults.h, logging.c, mkdefaults, parse.c, sudo.c, sudo.h: Add
        !          6110:          support for tuples in def_data.in; these are implemented as an
        !          6111:          enum type.  Currently there is only a single tuple enum but in
        !          6112:          the future we may have one tuple enum per T_TUPLE entry in
        !          6113:          def_data.in.  Currently listpw, verifypw and lecture are tuples.
        !          6114:          This avoids the need to have two entries (one ival, one str) for
        !          6115:          pwflags and syslog values.
        !          6116:
        !          6117:          lecture is now a tuple with the following values: never, once,
        !          6118:          always
        !          6119:
        !          6120:          We no longer use both an int and string entry for syslog
        !          6121:          facilities and priorities.  Instead, there are logfac2str() and
        !          6122:          logpri2str() functions that get used when we need to print the
        !          6123:          string values.
        !          6124:
        !          6125: 2003-12-30 17:20  millert
        !          6126:
        !          6127:        * check.c, def_data.h, defaults.c, defaults.h, env.c, find_path.c,
        !          6128:          logging.c, mkdefaults, parse.c, parse.yacc, set_perms.c, sudo.c,
        !          6129:          visudo.c, auth/aix_auth.c, auth/bsdauth.c, auth/fwtk.c,
        !          6130:          auth/pam.c, auth/rfc1938.c, auth/securid5.c, auth/sia.c,
        !          6131:          auth/sudo_auth.c: Create def_* macros for each defaults value so
        !          6132:          we no longer need the def_{flag,ival,str,list,mode} macros (which
        !          6133:          have been removed).  This is a step toward more flexible data
        !          6134:          types in def_data.in.
        !          6135:
        !          6136: 2003-12-30 15:55  millert
        !          6137:
        !          6138:        * TODO: checkpoint
        !          6139:
        !          6140: 2003-12-22 21:18  millert
        !          6141:
        !          6142:        * sudo.c: If we are in -k/-K mode, just spew to stderr.  It is not
        !          6143:          unusual for users to place "sudo -k" in a .logout file which can
        !          6144:          cause sudo to be run during reboot after the YP/NIS/NIS+/LDAP/etc
        !          6145:          daemon has died.  Previously, this would result in useless mail
        !          6146:          and logging.
        !          6147:
        !          6148: 2003-12-16 13:51  millert
        !          6149:
        !          6150:        * visudo.pod: fix pasto in VISUAL description
        !          6151:
        !          6152: 2003-12-09 22:09  millert
        !          6153:
        !          6154:        * configure: regen
        !          6155:
        !          6156: 2003-12-09 22:08  millert
        !          6157:
        !          6158:        * CHANGES: checkpoint
        !          6159:
        !          6160: 2003-12-09 22:02  millert
        !          6161:
        !          6162:        * TROUBLESHOOTING: Some OSes (like Solaris) allow export w/ nosuid
        !          6163:          too
        !          6164:
        !          6165: 2003-08-12 16:45  millert
        !          6166:
        !          6167:        * compat.h: We don't use FD_ZERO anymore so just define FD_SET (if
        !          6168:          not already there).
        !          6169:
        !          6170: 2003-06-28 21:31  millert
        !          6171:
        !          6172:        * auth/pam.c: Fix a core dump on Solaris by preserving the
        !          6173:          pam_handle_t we used during authentication for pam_prep_user().
        !          6174:          If we didn't authenticate (ie: ticket still valid), we call
        !          6175:          pam_init() from pam_prep_user().  This is something of a hack; it
        !          6176:          may be better to change the auth API and add an auth_final()
        !          6177:          function that acts like pam_prep_user().
        !          6178:
        !          6179: 2003-06-21 12:50  millert
        !          6180:
        !          6181:        * set_perms.c: Add explicit declaration of printerr variable in
        !          6182:          function header (was defaulting to int which is OK but oh so K&R
        !          6183:          :-).  From Theo.
        !          6184:
        !          6185: 2003-06-09 19:00  millert
        !          6186:
        !          6187:        * config.h.in, configure.in: s/HAVE_STOW/USE_STOW/
        !          6188:
        !          6189: 2003-06-09 16:07  millert
        !          6190:
        !          6191:        * logging.c: Also exit waitpid() loop when pid == 0.  Fixes a
        !          6192:          problem where the sudo process would spin eating up CPU until
        !          6193:          sendmail finished when it has to send mail.
        !          6194:
        !          6195: 2003-05-30 16:22  millert
        !          6196:
        !          6197:        * fnmatch.3, fnmatch.c: Remove advertising clause, UCB has
        !          6198:          disavowed it
        !          6199:
        !          6200: 2003-05-21 21:53  millert
        !          6201:
        !          6202:        * parse.c: Don't assume that getgrnam() calls don't modify contents
        !          6203:          of struct passwd returned by getpwnam().  On FreeBSD w/ NIS this
        !          6204:          can happen.  Based on a patch from Kirk Webb.
        !          6205:
        !          6206: 2003-05-06 11:25  millert
        !          6207:
        !          6208:        * configure.in: missing ;;
        !          6209:
        !          6210: 2003-05-06 00:53  millert
        !          6211:
        !          6212:        * configure.in: darwin has a broken setreuid() in at least some
        !          6213:          versions
        !          6214:
        !          6215: 2003-05-06 00:31  millert
        !          6216:
        !          6217:        * env.c: Fix an off by one error when reallocating the environment;
        !          6218:          Kevin Pye
        !          6219:
        !          6220: 2003-04-30 14:04  millert
        !          6221:
        !          6222:        * sudoers.pod: Fix User_Spec definition; SEKINE Tatsuo
        !          6223:
        !          6224: 2003-04-28 19:30  millert
        !          6225:
        !          6226:        * HISTORY: More info on the early days from Coggs.
        !          6227:
        !          6228: 2003-04-21 14:47  millert
        !          6229:
        !          6230:        * auth/kerb5.c: remove errant semicolon that prevented compilation
        !          6231:          under heimdal
        !          6232:
        !          6233: 2003-04-15 20:42  millert
        !          6234:
        !          6235:        * Makefile.in, alloc.c, check.c, compat.h, defaults.c, defaults.h,
        !          6236:          env.c, fileops.c, find_path.c, getprogname.c, getspwuid.c,
        !          6237:          goodpath.c, interfaces.c, interfaces.h, logging.c, parse.c,
        !          6238:          parse.lex, parse.yacc, pathnames.h.in, set_perms.c, sigaction.c,
        !          6239:          strerror.c, sudo.c, sudo.h, sudo.man.in, sudo.pod,
        !          6240:          sudoers.man.in, sudoers.pod, testsudoers.c, tgetpass.c, utime.c,
        !          6241:          version.h, visudo.c, visudo.man.in, visudo.pod, auth/afs.c,
        !          6242:          auth/aix_auth.c, auth/bsdauth.c, auth/dce.c, auth/fwtk.c,
        !          6243:          auth/kerb4.c, auth/kerb5.c, auth/pam.c, auth/passwd.c,
        !          6244:          auth/rfc1938.c, auth/secureware.c, auth/securid.c,
        !          6245:          auth/securid5.c, auth/sia.c, auth/sudo_auth.c: add DARPA credit
        !          6246:          on affected files
        !          6247:
        !          6248: 2003-04-15 20:25  millert
        !          6249:
        !          6250:        * LICENSE: slightly different wording for the darpa credit
        !          6251:
        !          6252: 2003-04-15 14:37  millert
        !          6253:
        !          6254:        * LICENSE: Add DARPA credit
        !          6255:
        !          6256: 2003-04-14 16:49  millert
        !          6257:
        !          6258:        * auth/kerb5.c: Use krb5_princ_component() instead of
        !          6259:          krb5_princ_realm() for MIT Kerberos like we did before I messed
        !          6260:          things up ;-)
        !          6261:
        !          6262:          Use krb5_principal_get_comp_string() to do the same thing w/
        !          6263:          Heimdal.  I'm not sure if the component should be 0 or 1 in this
        !          6264:          case.
        !          6265:
        !          6266:          #define ENCTYPE_DES_CBC_MD5 ETYPE_DES_CBC_MD5 for Heimdal since
        !          6267:          older versions lack ENCTYPE_DES_CBC_MD5.  This is gross and there
        !          6268:          should be a configure check for this I guess.
        !          6269:
        !          6270: 2003-04-13 15:48  millert
        !          6271:
        !          6272:        * TROUBLESHOOTING, config.h.in, configure, configure.in,
        !          6273:          sample.sudoers: builtin -> built-in; Jason McIntyre
        !          6274:
        !          6275: 2003-04-13 15:45  millert
        !          6276:
        !          6277:        * sudoers.pod: built in -> built-in; Jason McIntyre
        !          6278:
        !          6279: 2003-04-09 16:14  millert
        !          6280:
        !          6281:        * CHANGES: checkpoint for 1.6.7p3
        !          6282:
        !          6283: 2003-04-09 16:14  millert
        !          6284:
        !          6285:        * HISTORY: Update info on the early years @ SUNY-Buffalo from Cliff
        !          6286:          Spencer.  Amazingly, sudo source from 1985 is available via
        !          6287:          groups.google.com
        !          6288:
        !          6289: 2003-04-09 16:13  millert
        !          6290:
        !          6291:        * sudo.c: Don't change rl.rlim_max for RLIMIT_CORE.  We need only
        !          6292:          set rl.rlim_cur to 0 to turn off core dumps.  This may be needed
        !          6293:          for the RLIMIT_CORE restoration on some OSes.
        !          6294:
        !          6295: 2003-04-04 12:46  millert
        !          6296:
        !          6297:        * auth/kerb5.c: Make this compile on Heimdal and MIT Kerberos 5
        !          6298:
        !          6299: 2003-04-04 12:45  millert
        !          6300:
        !          6301:        * config.h.in, configure, configure.in: Check for heimdal even if
        !          6302:          we found krb5-config and define HAVE_HEIMDAL.
        !          6303:
        !          6304: 2003-04-03 22:04  millert
        !          6305:
        !          6306:        * auth/kerb5.c: Replace ETYPE_DES_CBC_MD5 with ENCTYPE_DES_CBC_MD5.
        !          6307:          The former is no longer defined by MIT kerb5 (though it used to
        !          6308:          be and indeed remains so in Heimdal).
        !          6309:
        !          6310: 2003-04-03 10:16  millert
        !          6311:
        !          6312:        * mkinstalldirs: Remove newer stuff that passes multiple (possibly
        !          6313:          duplicate) directories to "mkdir -p" since that seems to break on
        !          6314:          Tru64 Unix at least.  This basically brings back what shipped
        !          6315:          with sudo 1.6.6.
        !          6316:
        !          6317: 2003-04-02 13:57  millert
        !          6318:
        !          6319:        * auth/kerb5.c: Correct number of args to
        !          6320:          krb5_principal_get_realm() and fix an unclosed comment that hid
        !          6321:          the bug.
        !          6322:
        !          6323: 2003-04-02 13:45  millert
        !          6324:
        !          6325:        * configure: regen
        !          6326:
        !          6327: 2003-04-02 13:45  millert
        !          6328:
        !          6329:        * BUGS, CHANGES, INSTALL, INSTALL.binary, Makefile.in, README,
        !          6330:          configure.in, version.h: ++version
        !          6331:
        !          6332: 2003-04-02 13:44  millert
        !          6333:
        !          6334:        * configure.in: use krb5-config to determine Kerberos V details if
        !          6335:          it exists
        !          6336:
        !          6337: 2003-04-02 13:25  millert
        !          6338:
        !          6339:        * alloc.c, check.c, compat.h, defaults.c, env.c, find_path.c,
        !          6340:          interfaces.c, logging.c, parse.c, sudo.c, sudo.h, testsudoers.c,
        !          6341:          visudo.c, auth/fwtk.c, auth/rfc1938.c, auth/securid.c,
        !          6342:          auth/securid5.c, auth/sia.c: Use warn/err and getprogname()
        !          6343:          throughout.  The main exception is openlog().  Since the admin
        !          6344:          may be filtering logs based on the program name in the log files,
        !          6345:          hard code this to "sudo".
        !          6346:
        !          6347: 2003-04-02 13:16  millert
        !          6348:
        !          6349:        * Makefile.in: Add getprogname.c and err.c
        !          6350:
        !          6351: 2003-04-02 13:15  millert
        !          6352:
        !          6353:        * configure: regen
        !          6354:
        !          6355: 2003-04-02 13:15  millert
        !          6356:
        !          6357:        * configure.in, config.h.in: Add checks for getprognam(),
        !          6358:          __progname and err.h
        !          6359:
        !          6360: 2003-04-02 13:14  millert
        !          6361:
        !          6362:        * err.c, emul/err.h: For systems withour err/warn functions.
        !          6363:
        !          6364: 2003-04-02 13:14  millert
        !          6365:
        !          6366:        * getprogname.c: For systems neither getprogname() nor __progname;
        !          6367:          uses Argv[0].
        !          6368:
        !          6369: 2003-04-01 10:09  millert
        !          6370:
        !          6371:        * CHANGES: checkpoint for 1.6.7p1
        !          6372:
        !          6373: 2003-04-01 10:02  millert
        !          6374:
        !          6375:        * sudo.c, testsudoers.c: fix strlcpy() rval check (innocuous)
        !          6376:
        !          6377: 2003-04-01 09:58  millert
        !          6378:
        !          6379:        * check.c: oflow detection in expand_prompt() was faulty (false
        !          6380:          positives).  The count was based on strlcat() return value which
        !          6381:          includes the length of the entire string.
        !          6382:
        !          6383: 2003-03-30 19:02  millert
        !          6384:
        !          6385:        * CHANGES, RUNSON, TODO: checkpoint for the sudo 1.6.7 release
        !          6386:
        !          6387: 2003-03-24 16:09  millert
        !          6388:
        !          6389:        * logging.c: g/c unused variable
        !          6390:
        !          6391: 2003-03-24 11:06  millert
        !          6392:
        !          6393:        * configure: regen
        !          6394:
        !          6395: 2003-03-24 11:05  millert
        !          6396:
        !          6397:        * configure.in: use man sections 8 and 5 for csops
        !          6398:
        !          6399: 2003-03-21 18:11  millert
        !          6400:
        !          6401:        * configure: regen
        !          6402:
        !          6403: 2003-03-21 15:10  millert
        !          6404:
        !          6405:        * configure.in: Add -lskey or -lopie directly to SUDO_LIBS instead
        !          6406:          of having AC_CHECK_LIB() add them to LIBS.  Fixes visudo linkage.
        !          6407:
        !          6408: 2003-03-21 14:02  millert
        !          6409:
        !          6410:        * configure: regen
        !          6411:
        !          6412: 2003-03-21 14:01  millert
        !          6413:
        !          6414:        * INSTALL, aclocal.m4, configure.in: Add --with-blibpath for AIX.
        !          6415:          An alternate libpath may be specified or -blibpath support can be
        !          6416:          disabled.  Also change conifgure such that -blibpath is not
        !          6417:          specified if no -L libpaths were added to SUDO_LDFLAGS.
        !          6418:
        !          6419: 2003-03-20 22:05  millert
        !          6420:
        !          6421:        * configure.in: add AIX blibpath support
        !          6422:
        !          6423: 2003-03-20 20:28  millert
        !          6424:
        !          6425:        * INSTALL, configure.in: --with-skey and --with-opie now take an
        !          6426:          option directory argument This obsoletes a --with-csops hack
        !          6427:          (/tools/cs/skey)
        !          6428:
        !          6429:          Also remove the remaining direct uses of "echo"
        !          6430:
        !          6431: 2003-03-20 17:44  millert
        !          6432:
        !          6433:        * configure.in: Detect KTH Kerberos IV and deal with it.  Also make
        !          6434:          -lroken optional for KTH Kerberos IV and V.
        !          6435:
        !          6436: 2003-03-20 14:42  millert
        !          6437:
        !          6438:        * aclocal.m4: Add SUDO_APPEND_LIBPATH function that add
        !          6439:          -L/path/to/dir (and -R/path/to/dir if $with_rpath) to the
        !          6440:          specified variable.
        !          6441:
        !          6442: 2003-03-20 14:40  millert
        !          6443:
        !          6444:        * INSTALL, configure.in: Add -R/path/to/libs for Solaris and SVR4.
        !          6445:          There is a new configure option, --with-rpath to control this
        !          6446:          behavior.
        !          6447:
        !          6448: 2003-03-19 23:50  millert
        !          6449:
        !          6450:        * configure.in: for kerb4 put libdes after libkrb on the link line
        !          6451:
        !          6452: 2003-03-19 23:49  millert
        !          6453:
        !          6454:        * auth/kerb4.c: typo
        !          6455:
        !          6456: 2003-03-19 23:33  millert
        !          6457:
        !          6458:        * configure.in: fix kerberos lib check when a path is specified
        !          6459:
        !          6460: 2003-03-19 21:04  millert
        !          6461:
        !          6462:        * logging.c: Fix boolean thinko in SIGCHLD reaper and call
        !          6463:          reapchild after sending mail instead of doing a conditional
        !          6464:          sudo_waitpid.
        !          6465:
        !          6466: 2003-03-19 16:20  millert
        !          6467:
        !          6468:        * configure: regen
        !          6469:
        !          6470: 2003-03-19 16:19  millert
        !          6471:
        !          6472:        * configure.in: replace =DIR with [=DIR] where sensible
        !          6473:
        !          6474: 2003-03-19 16:16  millert
        !          6475:
        !          6476:        * configure.in: o Use AC_MSG_* instead of "echo" o New Kerberos
        !          6477:          include/lib detection based on openssh's configure.in
        !          6478:
        !          6479: 2003-03-19 15:58  millert
        !          6480:
        !          6481:        * INSTALL: --with-kerb4 and --with-kerb5 now take an optional
        !          6482:          argument.
        !          6483:
        !          6484: 2003-03-15 22:03  millert
        !          6485:
        !          6486:        * auth/securid.c: Kill remaining strcpy(), the programmer's guide
        !          6487:          says username is 32 bytes.
        !          6488:
        !          6489: 2003-03-15 21:18  millert
        !          6490:
        !          6491:        * auth/kerb4.c: trat uid_t as unsigned long for printf and use
        !          6492:          snprintf, not sprintf
        !          6493:
        !          6494: 2003-03-15 21:18  millert
        !          6495:
        !          6496:        * auth/rfc1938.c: use snprintf
        !          6497:
        !          6498: 2003-03-15 15:37  millert
        !          6499:
        !          6500:        * auth/: afs.c, aix_auth.c, bsdauth.c, dce.c, fwtk.c, kerb4.c,
        !          6501:          kerb5.c, pam.c, passwd.c, rfc1938.c, sudo_auth.c: update
        !          6502:          copyright year
        !          6503:
        !          6504: 2003-03-15 15:31  millert
        !          6505:
        !          6506:        * LICENSE, alloc.c, check.c, configure.in, env.c, sudo.c,
        !          6507:          Makefile.in, aclocal.m4, compat.h, find_path.c, interfaces.c,
        !          6508:          logging.c, parse.c, parse.lex, parse.yacc, set_perms.c, sudo.h,
        !          6509:          sudo.pod, sudoers.pod, testsudoers.c, version.h, visudo.c,
        !          6510:          visudo.pod, sudo.man.in, sudoers.man.in, visudo.man.in: update
        !          6511:          copyright year
        !          6512:
        !          6513: 2003-03-15 15:19  millert
        !          6514:
        !          6515:        * check.c, env.c, sudo.c: Cast [ug]ids to unsigned long and printf
        !          6516:          with %lu
        !          6517:
        !          6518: 2003-03-15 15:17  millert
        !          6519:
        !          6520:        * configure: regen
        !          6521:
        !          6522: 2003-03-15 15:16  millert
        !          6523:
        !          6524:        * configure.in: correct error messages for
        !          6525:          --with-sudoers-{mode,uid,gid}
        !          6526:
        !          6527: 2003-03-15 15:10  millert
        !          6528:
        !          6529:        * alloc.c: make the malloc(0) error specific to each function to
        !          6530:          aid tracking down bugs.
        !          6531:
        !          6532: 2003-03-15 14:49  millert
        !          6533:
        !          6534:        * alloc.c: deal with platforms where size_t is signed and there is
        !          6535:          no SIZE_MAX or SIZE_T_MAX
        !          6536:
        !          6537: 2003-03-15 14:10  millert
        !          6538:
        !          6539:        * auth/kerb5.c: Make this compile w/ Heimdal and fix some gcc
        !          6540:          warnings.
        !          6541:
        !          6542: 2003-03-15 13:02  millert
        !          6543:
        !          6544:        * sudo.c: Use stat_sudoers macro so --with-stow can work
        !          6545:
        !          6546: 2003-03-15 13:01  millert
        !          6547:
        !          6548:        * INSTALL, config.h.in, configure, configure.in: Add support for
        !          6549:          --with-stow based on patches from Robert Uhl
        !          6550:
        !          6551: 2003-03-15 12:51  millert
        !          6552:
        !          6553:        * env.c: fix indentation
        !          6554:
        !          6555: 2003-03-15 00:21  millert
        !          6556:
        !          6557:        * configure.in: back out rev 1.352
        !          6558:
        !          6559: 2003-03-14 20:11  millert
        !          6560:
        !          6561:        * lex.yy.c: regen
        !          6562:
        !          6563: 2003-03-14 20:11  millert
        !          6564:
        !          6565:        * parse.lex: use strlcpy, not strncpy
        !          6566:
        !          6567: 2003-03-14 19:48  millert
        !          6568:
        !          6569:        * set_perms.c: Fix typo; check pw_uid, not pw_gid after
        !          6570:          setusercontext() failure.
        !          6571:
        !          6572: 2003-03-14 19:43  millert
        !          6573:
        !          6574:        * logging.c: use pid_t
        !          6575:
        !          6576: 2003-03-14 10:43  millert
        !          6577:
        !          6578:        * strlcat.c, strlcpy.c: Make gcc shutup about unused rcsid
        !          6579:
        !          6580: 2003-03-14 10:35  millert
        !          6581:
        !          6582:        * interfaces.c: Move the n == 0 check for the non-getifaddrs cas
        !          6583:
        !          6584: 2003-03-13 21:47  millert
        !          6585:
        !          6586:        * auth/rfc1938.c: skeychallenge() on NetBSD take a size parameter
        !          6587:
        !          6588: 2003-03-13 21:38  millert
        !          6589:
        !          6590:        * configure: regen
        !          6591:
        !          6592: 2003-03-13 21:38  millert
        !          6593:
        !          6594:        * configure.in: put -ldl after -lpam, not before; fixes static
        !          6595:          linking on Linux
        !          6596:
        !          6597: 2003-03-13 21:17  millert
        !          6598:
        !          6599:        * interfaces.c: Avoid malloc(0) and fix the loop invariant for the
        !          6600:          getifaddrs() case.
        !          6601:
        !          6602: 2003-03-13 20:24  millert
        !          6603:
        !          6604:        * sudo.man.in, sudoers.man.in, visudo.man.in, sudo.cat,
        !          6605:          sudoers.cat, visudo.cat: regen
        !          6606:
        !          6607: 2003-03-13 20:23  millert
        !          6608:
        !          6609:        * Makefile.in: Preserve copyright notice from .pod file in .man.in
        !          6610:          file
        !          6611:
        !          6612: 2003-03-13 20:01  millert
        !          6613:
        !          6614:        * visudo.pod: Add sudoers(5) to SEE ALSO
        !          6615:
        !          6616: 2003-03-13 15:27  millert
        !          6617:
        !          6618:        * lex.yy.c: regen
        !          6619:
        !          6620: 2003-03-13 15:27  millert
        !          6621:
        !          6622:        * parse.lex: Don't assume libc can realloc() a NULL string.  If
        !          6623:          malloc/realloc fails, make sure we just return; yyerror() is not
        !          6624:          terminal.
        !          6625:
        !          6626: 2003-03-13 15:17  millert
        !          6627:
        !          6628:        * lex.yy.c: regen
        !          6629:
        !          6630: 2003-03-13 15:17  millert
        !          6631:
        !          6632:        * parse.lex: simplify fill_args a little and use strlcpy for
        !          6633:          paranoia
        !          6634:
        !          6635: 2003-03-13 15:00  millert
        !          6636:
        !          6637:        * check.c, env.c, find_path.c, parse.c, parse.yacc, sudo.c,
        !          6638:          testsudoers.c: Use strlc{at,py} for paranoia's sake and exit on
        !          6639:          overflow.  In all cases the strings were either pre-allocated to
        !          6640:          the correct size of length checks were done before the copy but a
        !          6641:          little paranoia can go a long way.
        !          6642:
        !          6643: 2003-03-13 12:54  millert
        !          6644:
        !          6645:        * sudo.h: Add strlc{at,py} protos
        !          6646:
        !          6647: 2003-03-13 12:03  millert
        !          6648:
        !          6649:        * env.c, interfaces.c: Use erealloc3()
        !          6650:
        !          6651: 2003-03-13 12:00  millert
        !          6652:
        !          6653:        * configure: regen
        !          6654:
        !          6655: 2003-03-13 12:00  millert
        !          6656:
        !          6657:        * alloc.c: Oflow test of nmemb > SIZE_MAX / size is fine (don't
        !          6658:          need >=).  Use memcpy() instead of strcpy() in estrdup() so this
        !          6659:          is strcpy()-free.
        !          6660:
        !          6661: 2003-03-13 11:58  millert
        !          6662:
        !          6663:        * sudo.c: snprintf() a uid as %lu, not %ld to match the
        !          6664:          MAX_UID_T_LEN test in configure.
        !          6665:
        !          6666: 2003-03-13 11:56  millert
        !          6667:
        !          6668:        * aclocal.m4: In MAX_UID_T_LEN test cast uid_t to unsigned long,
        !          6669:          just unsigned.
        !          6670:
        !          6671: 2003-03-12 18:46  millert
        !          6672:
        !          6673:        * sudo.c: Use snprintf() for paranoia
        !          6674:
        !          6675: 2003-03-12 17:16  millert
        !          6676:
        !          6677:        * parse.yacc: Use emalloc2 and erealloc3
        !          6678:
        !          6679: 2003-03-12 17:08  millert
        !          6680:
        !          6681:        * Makefile.in: strlc{at,py} for those w/o it
        !          6682:
        !          6683: 2003-03-12 17:07  millert
        !          6684:
        !          6685:        * strlcat.c, strlcpy.c: stlc{at,py} for those w/o it.
        !          6686:
        !          6687: 2003-03-12 17:07  millert
        !          6688:
        !          6689:        * config.h.in, configure, configure.in: Add stlc{at,py} for those
        !          6690:          w/o it.
        !          6691:
        !          6692: 2003-03-12 16:51  millert
        !          6693:
        !          6694:        * alloc.c, sudo.h: Add erealloc3(), a realloc() version of
        !          6695:          emalloc2().
        !          6696:
        !          6697: 2003-03-12 16:45  millert
        !          6698:
        !          6699:        * interfaces.c, sudo.c: Use emalloc2() to allocate N things of a
        !          6700:          certain size.
        !          6701:
        !          6702: 2003-03-12 16:41  millert
        !          6703:
        !          6704:        * alloc.c, sudo.h: Add emalloc2() -- like calloc() but w/o the
        !          6705:          bzero and with error/oflow checking.
        !          6706:
        !          6707: 2003-03-12 16:23  millert
        !          6708:
        !          6709:        * alloc.c: Error out on malloc(0); suggested by theo
        !          6710:
        !          6711: 2003-03-09 19:34  millert
        !          6712:
        !          6713:        * configure, configure.in: fix a typo; David Krause
        !          6714:
        !          6715: 2003-03-07 10:46  millert
        !          6716:
        !          6717:        * sudo.pod: fix typo
        !          6718:
        !          6719: 2003-03-03 21:47  millert
        !          6720:
        !          6721:        * env.c: Remove DYLD_ from the environment for MacOS X; from bbraun
        !          6722:
        !          6723: 2003-03-01 13:20  millert
        !          6724:
        !          6725:        * configure.in, config.h.in: not not; Anil Madhavapeddy
        !          6726:
        !          6727: 2003-01-23 03:03  millert
        !          6728:
        !          6729:        * sudo.pod, sudoers.pod, visudo.pod: typos; jmc@openbsd.org
        !          6730:
        !          6731: 2003-01-20 16:13  millert
        !          6732:
        !          6733:        * parse.yacc: Add some missing ';' rule terminators that bison
        !          6734:          warns about.
        !          6735:
        !          6736: 2003-01-20 16:07  millert
        !          6737:
        !          6738:        * config.sub: fix typo I introduced in last merge
        !          6739:
        !          6740: 2003-01-20 15:59  millert
        !          6741:
        !          6742:        * configure: regenerate with autoconf 2.57
        !          6743:
        !          6744: 2003-01-20 15:58  millert
        !          6745:
        !          6746:        * config.h.in: Add missing "$HOME"
        !          6747:
        !          6748: 2003-01-20 15:57  millert
        !          6749:
        !          6750:        * configure.in: Add some more square backets to make autoconf 2.57
        !          6751:          happy
        !          6752:
        !          6753: 2003-01-20 14:39  millert
        !          6754:
        !          6755:        * config.guess, config.sub, mkinstalldirs: Updates from
        !          6756:          autoconf-2.57
        !          6757:
        !          6758: 2003-01-17 18:10  millert
        !          6759:
        !          6760:        * lex.yy.c, sudo.tab.h: regen
        !          6761:
        !          6762: 2003-01-17 18:09  millert
        !          6763:
        !          6764:        * parse.lex, parse.yacc, sudoers.pod: Add support for
        !          6765:          Defaults>RunasUser
        !          6766:
        !          6767: 2003-01-06 19:10  millert
        !          6768:
        !          6769:        * visudo.c: fclose() yyin after each yyparse() is done and use
        !          6770:          fopen() instead of using freopen().
        !          6771:
        !          6772: 2003-01-06 19:02  millert
        !          6773:
        !          6774:        * parse.lex: Better fix for sudoers files w/o a newline before EOF.
        !          6775:          It looks like the issue is that yyrestart() does not reset the
        !          6776:          start condition to INITIAL which is an issue since we parse
        !          6777:          sudoers multiple times.
        !          6778:
        !          6779: 2003-01-06 18:47  millert
        !          6780:
        !          6781:        * parse.lex: Work around what appears to be a flex bug when dealing
        !          6782:          with files that lack a final newline before EOF.  This adds a
        !          6783:          rule to match EOF in the non-initial states which resets the
        !          6784:          state to INITIAL and throws an error.
        !          6785:
        !          6786: 2003-01-06 15:06  millert
        !          6787:
        !          6788:        * visudo.c: o The parser needs sudoers to end with a newline but
        !          6789:          some editors (emacs) may   not add one.  Check for a missing
        !          6790:          newline at EOF and add one if needed.  o Set quiet flag during
        !          6791:          initial sudoers parse (to get options) o Move yyrestart() call
        !          6792:          and always use freopen() to open yyin after   initial sudoers
        !          6793:          parse.
        !          6794:
        !          6795: 2002-12-15 11:24  millert
        !          6796:
        !          6797:        * set_perms.c: Fix pasto/thinko in setresgid()/setregid() usage.
        !          6798:          Want to set effective gid, not real gid, when reading sudoers.
        !          6799:
        !          6800: 2002-12-15 11:08  millert
        !          6801:
        !          6802:        * set_perms.c: don't compile set_perms_posix if we have setreuid or
        !          6803:          setresuid
        !          6804:
        !          6805: 2002-12-14 14:21  millert
        !          6806:
        !          6807:        * sudo.pod, sudoers.pod: document new prompt escapes
        !          6808:
        !          6809: 2002-12-14 14:15  millert
        !          6810:
        !          6811:        * check.c: Add %U and %H escapes and redo prompt rewriting.  "%%"
        !          6812:          now gets collapsed to "%" as was originally intended.  This also
        !          6813:          gets rid of lastchar (does lookahead instead of lookback) which
        !          6814:          should simplify the logic slightly.
        !          6815:
        !          6816: 2002-12-13 13:20  millert
        !          6817:
        !          6818:        * tgetpass.c: Write the prompt *after* turning off echo to avoid
        !          6819:          some password characters being echoed on heavily-loaded machines
        !          6820:          with fast typists.
        !          6821:
        !          6822: 2002-12-13 13:09  millert
        !          6823:
        !          6824:        * config.sub: Add support for mipseb; wiz@danbala.tuwien.ac.at
        !          6825:
        !          6826: 2002-12-13 12:48  millert
        !          6827:
        !          6828:        * configure.in: Fix IRIX fallout from name changes in man dir/sect
        !          6829:          Makefile variables.  Patch from erici AT motown DOT cc DOT utexas
        !          6830:          DOT edu
        !          6831:
        !          6832: 2002-12-13 11:33  millert
        !          6833:
        !          6834:        * auth/pam.c: Keep a local copy of tgetpass_flags so we don't add
        !          6835:          in TGP_ECHO to the global copy.  Problem noted by Peter Pentchev.
        !          6836:
        !          6837: 2002-11-28 18:43  millert
        !          6838:
        !          6839:        * parse.yacc: Add missing yyerror() calls; YYERROR does not seem to
        !          6840:          call this for us.
        !          6841:
        !          6842: 2002-11-26 12:09  millert
        !          6843:
        !          6844:        * sudo.c: fix typo in comment; Pedro Bastos
        !          6845:
        !          6846: 2002-11-22 14:41  millert
        !          6847:
        !          6848:        * INSTALL: document --disable-setresuid
        !          6849:
        !          6850: 2002-11-22 14:41  millert
        !          6851:
        !          6852:        * auth/: aix_auth.c, bsdauth.c, fwtk.c, pam.c, sudo_auth.c:
        !          6853:          Sprinkle some volatile qualifiers to prevent over-enthusiastic
        !          6854:          optimizers from removing memset() calls.
        !          6855:
        !          6856: 2002-11-22 14:11  millert
        !          6857:
        !          6858:        * logging.c, parse.yacc: minor sign fixes pointed out by gcc
        !          6859:          -Wsign-compare
        !          6860:
        !          6861: 2002-11-22 14:09  millert
        !          6862:
        !          6863:        * set_perms.c, sudo.c, sudo.h: Revamp set_perms.  We now use a
        !          6864:          version based on setresuid() or setreuid() when possible since
        !          6865:          that allows us to support the stay_setuid option and we always
        !          6866:          know exactly what the semantics will be (various Linux kernels
        !          6867:          have broken POSIX saved uid support).
        !          6868:
        !          6869: 2002-11-22 14:08  millert
        !          6870:
        !          6871:        * config.h.in, configure: regen from configure.in
        !          6872:
        !          6873: 2002-11-22 14:07  millert
        !          6874:
        !          6875:        * configure.in: Add checks for setresuid() and a way to disable
        !          6876:          using it
        !          6877:
        !          6878: 2002-11-22 14:05  millert
        !          6879:
        !          6880:        * compat.h: No long need to emulate set*[ug]id() via setres[ug]id()
        !          6881:          or setre[ug]id().  The new set_perms stuff only uses things it
        !          6882:          knows are there.
        !          6883:
        !          6884: 2002-11-22 13:33  millert
        !          6885:
        !          6886:        * sudo.c: Before exec, restore state of signal handlers to be the
        !          6887:          same as when we were initialy invoked instead of just reseting to
        !          6888:          SIG_DFL.  Fixes a problem when using sudo with nohup.  Based on a
        !          6889:          patch from Paul Markham.
        !          6890:
        !          6891: 2002-11-22 13:23  millert
        !          6892:
        !          6893:        * sudo.c: o timestamp_uid should be uid_t, not int o clarify error
        !          6894:          message when sudo is run by root and no_root_sudo is set
        !          6895:
        !          6896: 2002-09-19 17:27  millert
        !          6897:
        !          6898:        * README: update ftp link for bison
        !          6899:
        !          6900: 2002-07-20 08:30  millert
        !          6901:
        !          6902:        * set_perms.c: Error out if setusercontext() fails and the runas
        !          6903:          user is not root.
        !          6904:
        !          6905: 2002-05-20 16:51  millert
        !          6906:
        !          6907:        * auth/securid5.c: Fix rcsid
        !          6908:
        !          6909: 2002-05-20 16:50  millert
        !          6910:
        !          6911:        * configure.in: Fix SecurID API test
        !          6912:
        !          6913: 2002-05-17 13:20  millert
        !          6914:
        !          6915:        * env.c: typo in comment
        !          6916:
        !          6917: 2002-05-17 13:20  millert
        !          6918:
        !          6919:        * configure.in: securid5 stuff needs pthreads.  Just adding
        !          6920:          -lpthread is suboptimal but I don't see a better way at the
        !          6921:          moment.
        !          6922:
        !          6923: 2002-05-17 13:04  millert
        !          6924:
        !          6925:        * Makefile.in, auth/securid5.c: SecurID API version 5 support from
        !          6926:          Michael Stroucken
        !          6927:
        !          6928: 2002-05-17 13:02  millert
        !          6929:
        !          6930:        * configure.in: Add check for SecurID 5.0 API
        !          6931:
        !          6932: 2002-05-08 16:46  millert
        !          6933:
        !          6934:        * strerror.c: We actually do still need config.h to get the 'const'
        !          6935:          definition for K&R C.
        !          6936:
        !          6937: 2002-05-05 16:43  millert
        !          6938:
        !          6939:        * configure: regen with autoconf 2.5.3
        !          6940:
        !          6941: 2002-05-05 16:25  millert
        !          6942:
        !          6943:        * configure.in: Don't set sysconfdir to '/etc' if the user has
        !          6944:          specified a --prefix.
        !          6945:
        !          6946: 2002-05-05 16:14  millert
        !          6947:
        !          6948:        * configure.in: Some fixes for autoconf 2.53 from Robert Uhl  o
        !          6949:          don't AC_SUBST LIBOBJS  o force a 4th arg for AC_CHECK_HEADER()
        !          6950:          to workaround a bug
        !          6951:
        !          6952: 2002-05-05 15:58  millert
        !          6953:
        !          6954:        * env.c, sudo.c, sudo.h: No need for dump_badenv() now that
        !          6955:          dump_defaults() knows how to dump lists.
        !          6956:
        !          6957: 2002-05-04 21:31  millert
        !          6958:
        !          6959:        * BUGS, INSTALL, Makefile.in, configure.in, version.h,
        !          6960:          INSTALL.binary, README: ++version
        !          6961:
        !          6962: 2002-05-04 20:57  millert
        !          6963:
        !          6964:        * sudoers.pod: document timestampowner
        !          6965:
        !          6966: 2002-05-04 20:45  millert
        !          6967:
        !          6968:        * check.c: Don't call set_perms() when doing timestamp stuff unless
        !          6969:          timestamp_uid != 0.
        !          6970:
        !          6971: 2002-05-04 20:43  millert
        !          6972:
        !          6973:        * check.c, logging.c, parse.c, set_perms.c, sudo.c, sudo.h,
        !          6974:          testsudoers.c, auth/sudo_auth.c: g/c second arg to set_perms--it
        !          6975:          is no longer used
        !          6976:
        !          6977: 2002-05-03 18:48  millert
        !          6978:
        !          6979:        * check.c, set_perms.c, sudo.c, sudo.h: Add support for non-root
        !          6980:          timestamp dirs.  This allows the timestamp dir to be shared via
        !          6981:          NFS (though this is not recommended).
        !          6982:
        !          6983: 2002-05-03 18:47  millert
        !          6984:
        !          6985:        * def_data.c, def_data.h, def_data.in: Add timestampowner, "Owner
        !          6986:          of the authentication timestamp dir"
        !          6987:
        !          6988: 2002-05-02 15:40  millert
        !          6989:
        !          6990:        * env.c: Don't try to pre-compute the size of the new envp, just
        !          6991:          allocate space up front and realloc as needed.  Changes to the
        !          6992:          new env pointer must all be made through insert_env() which now
        !          6993:          keeps track of spaced used and allocates as needed.
        !          6994:
        !          6995: 2002-04-26 15:12  millert
        !          6996:
        !          6997:        * configure: regen
        !          6998:
        !          6999: 2002-04-26 15:12  millert
        !          7000:
        !          7001:        * configure.in: Fix two typo/pastos; from jrj@purdue.edu
        !          7002:
        !          7003: 2002-04-25 11:36  millert
        !          7004:
        !          7005:        * INSTALL.binary, README: ++version
        !          7006:
        !          7007: 2002-04-25 11:35  millert
        !          7008:
        !          7009:        * sudo.cat, sudo.man.in, sudoers.cat, sudoers.man.in, visudo.cat,
        !          7010:          visudo.man.in, configure: regen
        !          7011:
        !          7012: 2002-04-25 11:31  millert
        !          7013:
        !          7014:        * CHANGES, RUNSON, TODO: Sync with 1.6.6
        !          7015:
        !          7016: 2002-04-25 11:30  millert
        !          7017:
        !          7018:        * check.c: The the loop used to expand %h and %u, the lastchar
        !          7019:          variable was not being initialized.  This means that if the last
        !          7020:          char in the prompt is '%' and the first char is 'h' or 'u' a
        !          7021:          extra copy of the host or user name would be copied, for which
        !          7022:          space had not been allocated.
        !          7023:
        !          7024: 2002-04-18 11:41  millert
        !          7025:
        !          7026:        * BUGS, INSTALL, Makefile.in, configure.in, version.h: crank
        !          7027:          version to 1.6.6
        !          7028:
        !          7029: 2002-04-18 11:39  millert
        !          7030:
        !          7031:        * auth/afs.c: #undef VOID to get rid of an AFS warning
        !          7032:
        !          7033: 2002-04-18 11:38  millert
        !          7034:
        !          7035:        * env.c: Use easprintf instead of emalloc + sprintf for some
        !          7036:          things.
        !          7037:
        !          7038: 2002-03-15 19:45  millert
        !          7039:
        !          7040:        * lex.yy.c: regen
        !          7041:
        !          7042: 2002-03-15 19:44  millert
        !          7043:
        !          7044:        * parse.c, parse.lex, parse.yacc, testsudoers.c: Remove Chris
        !          7045:          Jepeway's email address so people don't bug him ;-)
        !          7046:
        !          7047: 2002-03-11 22:19  millert
        !          7048:
        !          7049:        * sudo.c: Move endpwent() to be after set_perms(PERM_RUNAS, ...)
        !          7050:          and also call endgrent() at the same time.
        !          7051:
        !          7052: 2002-02-21 22:23  millert
        !          7053:
        !          7054:        * INSTALL: Make it clear which configure options take arguments.
        !          7055:
        !          7056: 2002-01-25 13:38  millert
        !          7057:
        !          7058:        * compat.h: HP-UX 9.x has RLIMIT_* but no RLIM_INFINITY.  If there
        !          7059:          is no RLIM_INFINITY, just pretend it is -1.  This works because
        !          7060:          we only check for RLIM_INFINITY and do not set anything to that
        !          7061:          value.
        !          7062:
        !          7063: 2002-01-22 11:43  millert
        !          7064:
        !          7065:        * auth/pam.c: Zero and free allocated memory when there is a
        !          7066:          conversation error.
        !          7067:
        !          7068: 2002-01-21 22:37  millert
        !          7069:
        !          7070:        * auth/bsdauth.c: Use sigaction() not signal()
        !          7071:
        !          7072: 2002-01-21 22:26  millert
        !          7073:
        !          7074:        * INSTALL: Mention that some linux kernels have broken POSIX saved
        !          7075:          ID support
        !          7076:
        !          7077: 2002-01-21 21:03  millert
        !          7078:
        !          7079:        * CHANGES: checkpoint for 1.6.5p2
        !          7080:
        !          7081: 2002-01-21 21:01  millert
        !          7082:
        !          7083:        * configure: regen
        !          7084:
        !          7085: 2002-01-21 21:01  millert
        !          7086:
        !          7087:        * configure.in: Add --disable-setreuid flag
        !          7088:
        !          7089: 2002-01-21 21:00  millert
        !          7090:
        !          7091:        * INSTALL: Document new --disable-setreuid option and change
        !          7092:          description for --disable-saved-ids to match new error message.
        !          7093:
        !          7094: 2002-01-21 21:00  millert
        !          7095:
        !          7096:        * set_perms.c: fatal() now takes an argument that determines
        !          7097:          whether or not to call perror().
        !          7098:
        !          7099: 2002-01-21 20:58  millert
        !          7100:
        !          7101:        * PORTING, TROUBLESHOOTING: Update for new error messages from
        !          7102:          set_perms()
        !          7103:
        !          7104: 2002-01-21 17:46  millert
        !          7105:
        !          7106:        * auth/pam.c: Make this compile w/o warnings
        !          7107:
        !          7108: 2002-01-21 17:36  millert
        !          7109:
        !          7110:        * auth/pam.c: Mention that we can't use pam_acct_mgmt()
        !          7111:
        !          7112: 2002-01-21 17:25  millert
        !          7113:
        !          7114:        * auth/: aix_auth.c, bsdauth.c, fwtk.c, pam.c: The user's password
        !          7115:          was not zeroed after use when AIX authentication, BSD
        !          7116:          authentication, FWTK or PAM was in use.
        !          7117:
        !          7118: 2002-01-20 14:21  millert
        !          7119:
        !          7120:        * auth/pam.c: Avoid giving PAM a NULL password response, use the
        !          7121:          empty string instead.  This avoids a log warning when the user
        !          7122:          hits ^C at the password prompt when PAM is in use.
        !          7123:
        !          7124: 2002-01-19 19:46  millert
        !          7125:
        !          7126:        * auth/pam.c: Don't check the return value of pam_setcred().  In
        !          7127:          Linux-PAM 0.75 pam_setcred() returns the last saved return code,
        !          7128:          not the return code for the setcred module.  Because we haven't
        !          7129:          called pam_authenticate(), this is not set and so pam_setcred()
        !          7130:          returns PAM_PERM_DENIED.
        !          7131:
        !          7132: 2002-01-19 19:43  millert
        !          7133:
        !          7134:        * Makefile.binary, Makefile.in: Don't need a '/' between $(DESTDIR)
        !          7135:          and a directory.
        !          7136:
        !          7137: 2002-01-18 14:18  millert
        !          7138:
        !          7139:        * configure: regen
        !          7140:
        !          7141: 2002-01-18 14:18  millert
        !          7142:
        !          7143:        * configure.in: o BSDi also has a bogus setreuid() o Old FreeBSD
        !          7144:          has a bogus setreuid() o new NetBSD has a real setreuid() o add
        !          7145:          check for freeifaddrs() if getifaddrs() exists.
        !          7146:
        !          7147: 2002-01-18 14:17  millert
        !          7148:
        !          7149:        * config.h.in, interfaces.c: Older BSDi releases lack freeifaddrs()
        !          7150:          so add a test for that and if it is not present just use free().
        !          7151:
        !          7152: 2002-01-17 11:30  millert
        !          7153:
        !          7154:        * CHANGES, RUNSON: Checkpoint for 1.6.5p1
        !          7155:
        !          7156: 2002-01-17 10:56  millert
        !          7157:
        !          7158:        * auth/passwd.c: Return AUTH_FAILURE in passwd_init() if
        !          7159:          skeyaccess() denies access to normal passwords, not AUTH_FATAL
        !          7160:          (which just causes an exit).
        !          7161:
        !          7162: 2002-01-17 10:35  millert
        !          7163:
        !          7164:        * visudo.c: Don't use memory after it has been freed.
        !          7165:
        !          7166: 2002-01-17 00:24  millert
        !          7167:
        !          7168:        * auth/passwd.c: skeyaccess() wants a struct passwd * not a char *;
        !          7169:          Patch from Phillip E. Lobbes
        !          7170:
        !          7171: 2002-01-16 20:00  millert
        !          7172:
        !          7173:        * BUGS: ++version
        !          7174:
        !          7175: 2002-01-16 19:53  millert
        !          7176:
        !          7177:        * CHANGES, RUNSON, TODO: checkpoint for sudo 1.6.5
        !          7178:
        !          7179: 2002-01-16 18:37  millert
        !          7180:
        !          7181:        * configure: regen
        !          7182:
        !          7183: 2002-01-16 18:37  millert
        !          7184:
        !          7185:        * INSTALL, INSTALL.binary, Makefile.in, README, configure.in:
        !          7186:          version 1.6.5
        !          7187:
        !          7188: 2002-01-16 18:37  millert
        !          7189:
        !          7190:        * sudo.cat, sudo.man.in, sudoers.cat, sudoers.man.in, visudo.cat,
        !          7191:          visudo.man.in: sudo version 1.6.5
        !          7192:
        !          7193: 2002-01-16 16:28  millert
        !          7194:
        !          7195:        * logging.c: o when invoking the mailer as root use a hard-coded
        !          7196:          environment that   doesn't include any info from the user's
        !          7197:          environment.  Basically   paranoia.
        !          7198:
        !          7199:          o Add support for the NO_ROOT_MAILER compile-time option and run
        !          7200:          the   mailer as the user and not root if NO_ROOT_MAILER is
        !          7201:          defined.
        !          7202:
        !          7203: 2002-01-16 16:27  millert
        !          7204:
        !          7205:        * set_perms.c, sudo.h: Bring back PERM_FULL_USER
        !          7206:
        !          7207: 2002-01-16 16:26  millert
        !          7208:
        !          7209:        * configure: regen
        !          7210:
        !          7211: 2002-01-16 16:26  millert
        !          7212:
        !          7213:        * version.h: version 1.6.5
        !          7214:
        !          7215: 2002-01-16 16:26  millert
        !          7216:
        !          7217:        * INSTALL, config.h.in, configure.in: Add --disable-root-mailer
        !          7218:          option to run the mailer as the user and not root.
        !          7219:
        !          7220: 2002-01-16 12:44  millert
        !          7221:
        !          7222:        * CHANGES: checkpoint for 1.6.4p2
        !          7223:
        !          7224: 2002-01-15 19:22  millert
        !          7225:
        !          7226:        * PORTING: Mention the "seteuid(0): Operation not permitted"
        !          7227:          problem here too just for good measure.
        !          7228:
        !          7229: 2002-01-15 18:43  millert
        !          7230:
        !          7231:        * env.c, getspwuid.c, sudo.c: The SHELL environment variable was
        !          7232:          preserved from the user's environment instead of being reset
        !          7233:          based on the passwd database when the "env_reset" option was
        !          7234:          used.  Now it is reset as it should be.
        !          7235:
        !          7236: 2002-01-15 17:47  millert
        !          7237:
        !          7238:        * configure: regen
        !          7239:
        !          7240: 2002-01-15 17:47  millert
        !          7241:
        !          7242:        * INSTALL, TROUBLESHOOTING, config.h.in, configure.in, set_perms.c,
        !          7243:          sudo.c: Add a configure option to turn off use of POSIX saved IDs
        !          7244:
        !          7245: 2002-01-15 15:48  millert
        !          7246:
        !          7247:        * configure: regen
        !          7248:
        !          7249: 2002-01-15 15:48  millert
        !          7250:
        !          7251:        * configure.in: add --with-efence option
        !          7252:
        !          7253: 2002-01-15 15:39  millert
        !          7254:
        !          7255:        * sudo.c: Only OR in MODE_RESET_HOME if MODE_RUN is set.  Fixes a
        !          7256:          problem where "sudo -l" would not work if always_set_home was
        !          7257:          set.
        !          7258:
        !          7259: 2002-01-15 13:16  millert
        !          7260:
        !          7261:        * lex.yy.c: regen
        !          7262:
        !          7263: 2002-01-15 13:16  millert
        !          7264:
        !          7265:        * parse.lex: Quoted commas were not being treated correctly in
        !          7266:          command line arguments.
        !          7267:
        !          7268: 2002-01-14 20:53  millert
        !          7269:
        !          7270:        * sudo.c: o Move the call to rebuild_env() until after
        !          7271:          MODE_RESET_HOME is set.    Otherwise, the set_home option has no
        !          7272:          effect.
        !          7273:
        !          7274:          o Fix use of freed memory when the "fqdn" flag is set.  This was
        !          7275:           introduced by the fix for the "segv when gethostbynam() fails"
        !          7276:          bug.    Also, we no longer call set_fqdn() if the "fqdn" flag is
        !          7277:          not set so    there is no need to check the "fqdn" flag in
        !          7278:          set_fqdn() itself.
        !          7279:
        !          7280: 2002-01-14 20:45  millert
        !          7281:
        !          7282:        * env.c: Add 'continue' statements to optimize the switch
        !          7283:          statement.  From Solar.
        !          7284:
        !          7285: 2002-01-13 13:42  millert
        !          7286:
        !          7287:        * sudoers.cat, sudoers.man.in: Regen from new sudoers.pod
        !          7288:
        !          7289: 2002-01-13 13:36  millert
        !          7290:
        !          7291:        * sudoers.pod: Add caveat about stay_setuid flag
        !          7292:
        !          7293: 2002-01-13 13:29  millert
        !          7294:
        !          7295:        * sudo.c: If set_perms == set_perms_posix and the stay_setuid flag
        !          7296:          is not set, set all uids to 0 and use set_perms_fallback().
        !          7297:
        !          7298: 2002-01-13 13:28  millert
        !          7299:
        !          7300:        * set_perms.c, sudo.h: Remove PERM_FULL_USER (which is no longer
        !          7301:          used) and add PERM_FULL_ROOT (used when exec'ing the mailer).
        !          7302:
        !          7303: 2002-01-13 13:27  millert
        !          7304:
        !          7305:        * logging.c: Use set_perms(PERM_FULL_ROOT, 0) before exec'ing the
        !          7306:          mailer since we never want to run the mailer setuid.
        !          7307:
        !          7308: 2002-01-12 17:55  millert
        !          7309:
        !          7310:        * sudo.cat, sudo.man.in, sudo.pod, visudo.cat, visudo.man.in,
        !          7311:          visudo.pod: Use sudo.ws instead of courtesan.com in URLs
        !          7312:
        !          7313: 2002-01-12 14:00  millert
        !          7314:
        !          7315:        * Makefile.in, Makefile.binary: Fix mansect substitution
        !          7316:
        !          7317: 2002-01-12 13:15  millert
        !          7318:
        !          7319:        * Makefile.in: Substitute man sections in Makefile.binary
        !          7320:
        !          7321: 2002-01-12 13:15  millert
        !          7322:
        !          7323:        * Makefile.binary: Sync install targets with Makefile.in and
        !          7324:          substitute in man sections.
        !          7325:
        !          7326: 2002-01-12 13:09  millert
        !          7327:
        !          7328:        * INSTALL, INSTALL.binary: version is 1.6.4
        !          7329:
        !          7330: 2002-01-12 12:59  millert
        !          7331:
        !          7332:        * Makefile.in: Repair bindist target
        !          7333:
        !          7334: 2002-01-12 11:43  millert
        !          7335:
        !          7336:        * CHANGES: sync for 1.6.4
        !          7337:
        !          7338: 2002-01-10 13:00  millert
        !          7339:
        !          7340:        * install-sh: Fix case where neither whoami nor id are found
        !          7341:
        !          7342: 2002-01-09 12:35  millert
        !          7343:
        !          7344:        * install-sh: If neither whoami nor id exists, just assume we are
        !          7345:          root.
        !          7346:
        !          7347: 2002-01-09 11:56  millert
        !          7348:
        !          7349:        * alloc.c: Add explicit cast to (VOID *) on malloc/realloc.  Seems
        !          7350:          to be needed on AIX which for some reason isn't pulling in the
        !          7351:          malloc prototype.
        !          7352:
        !          7353: 2002-01-08 10:00  millert
        !          7354:
        !          7355:        * Makefile.in, aclocal.m4, compat.h, parse.c, sudo.c: (c) 2002
        !          7356:
        !          7357: 2002-01-08 09:21  millert
        !          7358:
        !          7359:        * CHANGES: checkpoint
        !          7360:
        !          7361: 2002-01-08 09:20  millert
        !          7362:
        !          7363:        * sudo.c: Defer assigning new environment until right before the
        !          7364:          exec.
        !          7365:
        !          7366: 2002-01-08 09:08  millert
        !          7367:
        !          7368:        * parse.c: kill extra blank line
        !          7369:
        !          7370: 2002-01-07 13:59  millert
        !          7371:
        !          7372:        * configure: regen
        !          7373:
        !          7374: 2002-01-07 13:59  millert
        !          7375:
        !          7376:        * configure.in: Use -O not -O2 for m88k-motorola-sysv* since
        !          7377:          motorola gcc-derived compiler doesn't recognise -O2.
        !          7378:
        !          7379: 2002-01-06 23:02  millert
        !          7380:
        !          7381:        * HISTORY: Clarify origins of Root Group sudo a bit based on info
        !          7382:          from billp@rootgroup.com
        !          7383:
        !          7384: 2002-01-02 22:41  millert
        !          7385:
        !          7386:        * LICENSE: 2002
        !          7387:
        !          7388: 2002-01-02 22:26  millert
        !          7389:
        !          7390:        * CHANGES: checkpoint for 1.6.4rc1
        !          7391:
        !          7392: 2002-01-02 17:40  millert
        !          7393:
        !          7394:        * config.h.in: now generated via autoheader
        !          7395:
        !          7396: 2002-01-02 17:40  millert
        !          7397:
        !          7398:        * configure: regen
        !          7399:
        !          7400: 2002-01-02 17:37  millert
        !          7401:
        !          7402:        * compat.h: Move in some stuff that was previously in config.h.
        !          7403:
        !          7404: 2002-01-02 17:36  millert
        !          7405:
        !          7406:        * configure.in, aclocal.m4: Add info for autoheader.
        !          7407:
        !          7408: 2002-01-01 16:53  millert
        !          7409:
        !          7410:        * Makefile.in:  o Add DESTDIR support
        !          7411:           o Use -M, -O, and -G instead of -m, -o, and -g to facilitate
        !          7412:          non-root installs
        !          7413:
        !          7414: 2002-01-01 16:48  millert
        !          7415:
        !          7416:        * install-sh: Add -M option (like -m but only for root) If we can't
        !          7417:          find "whoami", use "id" w/ some sed.
        !          7418:
        !          7419: 2002-01-01 14:01  millert
        !          7420:
        !          7421:        * configure: regen
        !          7422:
        !          7423: 2002-01-01 14:00  millert
        !          7424:
        !          7425:        * configure.in: allow user to always override mansectsu and
        !          7426:          mansectform
        !          7427:
        !          7428: 2001-12-31 17:05  millert
        !          7429:
        !          7430:        * mkinstalldirs: update from autoconf 2.52
        !          7431:
        !          7432: 2001-12-31 17:03  millert
        !          7433:
        !          7434:        * config.guess, config.sub: Update from autoconf 2.52
        !          7435:
        !          7436: 2001-12-31 16:57  millert
        !          7437:
        !          7438:        * configure: regen with autoconf 2.52
        !          7439:
        !          7440: 2001-12-31 16:57  millert
        !          7441:
        !          7442:        * configure.in:  o Call AC_PROG_CC_STDC to find out how to run the
        !          7443:          compiler in ANSI mode
        !          7444:           o Remove compiler-specific checks for HP-UX now that we use
        !          7445:          AC_PROG_CC_STDC
        !          7446:
        !          7447: 2001-12-31 12:19  millert
        !          7448:
        !          7449:        * RUNSON: Checkpoint
        !          7450:
        !          7451: 2001-12-31 12:18  millert
        !          7452:
        !          7453:        * auth/pam.c: o Add pam_prep_user function to call pam_setcred()
        !          7454:          for the target user;   on Linux this often sets resource limits.
        !          7455:          o When calling pam_end(), try to convert the auth->result to a
        !          7456:          PAM_FOO   value.  This is a hack--we really need to stash the
        !          7457:          last PAM_FOO   value received and use that instead.
        !          7458:
        !          7459: 2001-12-31 12:18  millert
        !          7460:
        !          7461:        * set_perms.c, sudo.h: o Add pam_prep_user function to call
        !          7462:          pam_setcred() for the target user;   on Linux this often sets
        !          7463:          resource limits.
        !          7464:
        !          7465: 2001-12-31 00:53  millert
        !          7466:
        !          7467:        * env.c: Fix off by one error in number of bytes allocated via
        !          7468:          malloc (does not affected any released version of sudo).
        !          7469:
        !          7470: 2001-12-30 17:12  millert
        !          7471:
        !          7472:        * lex.yy.c: regen
        !          7473:
        !          7474: 2001-12-30 17:12  millert
        !          7475:
        !          7476:        * parse.lex: Allow '@', '(', ')', ':' in arguments to a defaults
        !          7477:          variable w/o requiring that they be quoted.
        !          7478:
        !          7479: 2001-12-30 14:26  millert
        !          7480:
        !          7481:        * sudoers.cat, sudoers.man.in, sudoers.pod: Mention that no double
        !          7482:          quotes are needed when adding/deleting/assigning a single value
        !          7483:          to a list.
        !          7484:
        !          7485: 2001-12-30 13:58  millert
        !          7486:
        !          7487:        * Makefile.in: Don't rely on mkdefaults being executable, call perl
        !          7488:          explicitly.
        !          7489:
        !          7490: 2001-12-30 13:41  millert
        !          7491:
        !          7492:        * parse.yacc: Remove some XXX that are no longer relevant.
        !          7493:
        !          7494: 2001-12-30 13:40  millert
        !          7495:
        !          7496:        * defaults.c: o Roll our own loop instead of using strpbrk() for
        !          7497:          better grokability o When adding to a list we must malloc() and
        !          7498:          use memcpy(), not strdup()   since we must only copy len bytes
        !          7499:          from str.
        !          7500:
        !          7501: 2001-12-21 16:49  millert
        !          7502:
        !          7503:        * parse.yacc: typo in comment
        !          7504:
        !          7505: 2001-12-19 11:50  millert
        !          7506:
        !          7507:        * CHANGES: checkpoint
        !          7508:
        !          7509: 2001-12-19 10:56  millert
        !          7510:
        !          7511:        * configure: regen
        !          7512:
        !          7513: 2001-12-19 10:56  millert
        !          7514:
        !          7515:        * configure.in: avoid the -g flag unless --with-devel was specified
        !          7516:
        !          7517: 2001-12-19 10:04  millert
        !          7518:
        !          7519:        * Makefile.in: mkdefaults, def_data.in and sigaction.c were missing
        !          7520:          from the tarball
        !          7521:
        !          7522: 2001-12-19 09:46  millert
        !          7523:
        !          7524:        * Makefile.in: def_data.c was missing
        !          7525:
        !          7526: 2001-12-18 12:42  millert
        !          7527:
        !          7528:        * env.c: Fix setting of $USER and $LOGNAME in the non-reset_env
        !          7529:          case.  Also allow HOME, SHELL, LOGNAME, and USER to be specified
        !          7530:          in keep_env
        !          7531:
        !          7532: 2001-12-17 20:48  millert
        !          7533:
        !          7534:        * TODO: Another TODO item
        !          7535:
        !          7536: 2001-12-17 19:50  millert
        !          7537:
        !          7538:        * sudoers: Add comment for Default section so folks know where it
        !          7539:          should go.
        !          7540:
        !          7541: 2001-12-17 18:56  millert
        !          7542:
        !          7543:        * tgetpass.c: Use TCSETAF, not TCSETA to set terminal in termio
        !          7544:          case
        !          7545:
        !          7546: 2001-12-17 18:35  millert
        !          7547:
        !          7548:        * sudoers.man.in, sudoers.cat: regen from sudoers.pod
        !          7549:
        !          7550: 2001-12-17 18:33  millert
        !          7551:
        !          7552:        * sudoers.pod:  o Typo, Runas_User_List should be Runas_List
        !          7553:           o a User_List can not contain a uid
        !          7554:           o mention that the Defaults section should come after Alias
        !          7555:             definitions but before the user specifications
        !          7556:
        !          7557: 2001-12-15 11:51  millert
        !          7558:
        !          7559:        * sudoers.cat, sudoers.man.in: regen
        !          7560:
        !          7561: 2001-12-15 11:51  millert
        !          7562:
        !          7563:        * sudoers.pod: Fix listpw and verifypw sections, they were not
        !          7564:          being formatted properly.
        !          7565:
        !          7566: 2001-12-15 11:39  millert
        !          7567:
        !          7568:        * sudoers.cat, sudoers.man.in: regen
        !          7569:
        !          7570: 2001-12-15 11:38  millert
        !          7571:
        !          7572:        * sudoers.pod: fix typos
        !          7573:
        !          7574: 2001-12-15 10:57  millert
        !          7575:
        !          7576:        * configure: regen
        !          7577:
        !          7578: 2001-12-15 10:57  millert
        !          7579:
        !          7580:        * configure.in, config.h.in: use AC_SYS_POSIX_TERMIOS instead of
        !          7581:          rolling our own
        !          7582:
        !          7583: 2001-12-15 10:33  millert
        !          7584:
        !          7585:        * README: Reference sudo.ws not courtesan.com
        !          7586:
        !          7587: 2001-12-15 10:29  millert
        !          7588:
        !          7589:        * PORTING: Add notes on shadow passwords
        !          7590:
        !          7591: 2001-12-15 00:48  millert
        !          7592:
        !          7593:        * BUGS: In list mode (sudo -l), characters escaped with a backslash
        !          7594:          are shown verbatim with the backslash.
        !          7595:
        !          7596: 2001-12-15 00:44  millert
        !          7597:
        !          7598:        * sudoers: Add simple examples from OpenBSD (Marc Espie)
        !          7599:
        !          7600: 2001-12-15 00:40  millert
        !          7601:
        !          7602:        * tgetpass.c: Catch SIGTTIN and SIGTTOU too and treat them like
        !          7603:          SIGTSTP.
        !          7604:
        !          7605: 2001-12-14 21:53  millert
        !          7606:
        !          7607:        * CHANGES: minor prettyification
        !          7608:
        !          7609: 2001-12-14 21:43  millert
        !          7610:
        !          7611:        * CHANGES: Updated change log
        !          7612:
        !          7613: 2001-12-14 21:27  millert
        !          7614:
        !          7615:        * testsudoers.c: Fix CIDR handling here too.
        !          7616:
        !          7617: 2001-12-14 21:21  millert
        !          7618:
        !          7619:        * auth/pam.c: Apparently a NULL response is OK
        !          7620:
        !          7621: 2001-12-14 21:19  millert
        !          7622:
        !          7623:        * TODO: Checkpoint for upcoming beta release
        !          7624:
        !          7625: 2001-12-14 21:17  millert
        !          7626:
        !          7627:        * TROUBLESHOOTING: Many people believe that adding a runas spec
        !          7628:          should obviate the need for the -u flag.  It does not.
        !          7629:
        !          7630: 2001-12-14 21:11  millert
        !          7631:
        !          7632:        * RUNSON: checkpoint update for upcoming 1.6.4 beta
        !          7633:
        !          7634: 2001-12-14 20:44  millert
        !          7635:
        !          7636:        * config.h.in: o Add HAVE_STDLIB_H and HAVE_MEMORY_H o Define
        !          7637:          HAVE_STRINGS_H even if HAVE_STRING_H is defined -- this is safe
        !          7638:          now
        !          7639:
        !          7640: 2001-12-14 20:07  millert
        !          7641:
        !          7642:        * PORTING: Add signals section
        !          7643:
        !          7644: 2001-12-14 20:00  millert
        !          7645:
        !          7646:        * configure: regen
        !          7647:
        !          7648: 2001-12-14 20:00  millert
        !          7649:
        !          7650:        * configure.in: Fix check for sigaction_t
        !          7651:
        !          7652: 2001-12-14 19:45  millert
        !          7653:
        !          7654:        * sudo.c: XXX - should call find_path() as runas user, not root.
        !          7655:          Can't do that until the parser changes though.
        !          7656:
        !          7657: 2001-12-14 19:38  millert
        !          7658:
        !          7659:        * sudo.c: If find_path() fails as root, try again as the invoking
        !          7660:          user (useful for NFS).  Idea from Chip Capelik.
        !          7661:
        !          7662: 2001-12-14 19:28  millert
        !          7663:
        !          7664:        * sudo.cat, sudo.man.in, sudoers.cat, sudoers.man.in: Regenerate
        !          7665:          after pod file changes
        !          7666:
        !          7667: 2001-12-14 19:24  millert
        !          7668:
        !          7669:        * def_data.c, def_data.h, def_data.in, set_perms.c, sudo.c, sudo.h,
        !          7670:          sudo.pod, sudoers.pod: Add new sudoers option "preserve_groups".
        !          7671:          Previously sudo would not call initgroups() if the target user
        !          7672:          was root.  Now it always calls initgroups() unless the -P command
        !          7673:          line option or the "preserve_groups" sudoers option is set.  Idea
        !          7674:          from TJ Saunders.
        !          7675:
        !          7676: 2001-12-14 18:38  millert
        !          7677:
        !          7678:        * compat.h, config.h.in: Use new HAVE_SIGACTION_T define
        !          7679:
        !          7680: 2001-12-14 18:33  millert
        !          7681:
        !          7682:        * logging.c: Fix compilation on K&C
        !          7683:
        !          7684: 2001-12-14 18:14  millert
        !          7685:
        !          7686:        * configure: regen
        !          7687:
        !          7688: 2001-12-14 18:14  millert
        !          7689:
        !          7690:        * configure.in: Add check for sigaction_t -- IRIX already defines
        !          7691:          this so don't redefine it.
        !          7692:
        !          7693: 2001-12-14 17:15  millert
        !          7694:
        !          7695:        * snprintf.c: fix typo
        !          7696:
        !          7697: 2001-12-14 17:12  millert
        !          7698:
        !          7699:        * interfaces.c: need stdlib.h here too
        !          7700:
        !          7701: 2001-12-14 15:31  millert
        !          7702:
        !          7703:        * configure: regen
        !          7704:
        !          7705: 2001-12-14 15:31  millert
        !          7706:
        !          7707:        * configure.in: Remove redundant checks for string.h, strings.h and
        !          7708:          unistd.h
        !          7709:
        !          7710: 2001-12-14 15:29  millert
        !          7711:
        !          7712:        * sudo.cat, sudo.man.in, sudoers.cat, sudoers.man.in, visudo.cat,
        !          7713:          visudo.man.in: Regen from pod files
        !          7714:
        !          7715: 2001-12-14 15:03  millert
        !          7716:
        !          7717:        * BUGS: Update for 1.6.4
        !          7718:
        !          7719: 2001-12-14 14:59  millert
        !          7720:
        !          7721:        * configure, lex.yy.c: regen
        !          7722:
        !          7723: 2001-12-14 14:56  millert
        !          7724:
        !          7725:        * strerror.c: Return EINVAL if errnum > sys_nerr
        !          7726:
        !          7727: 2001-12-14 14:54  millert
        !          7728:
        !          7729:        * LICENSE, Makefile.binary, Makefile.in, aclocal.m4, compat.h,
        !          7730:          config.h.in, defaults.h, interfaces.h, pathnames.h.in, sudo.h,
        !          7731:          sudo.pod, auth/sudo_auth.h: o Update copyright year
        !          7732:
        !          7733: 2001-12-14 14:54  millert
        !          7734:
        !          7735:        * configure.in: o Don't define STDC_HEADERS unconditionally for
        !          7736:          IRIX o Update copyright year
        !          7737:
        !          7738: 2001-12-14 14:53  millert
        !          7739:
        !          7740:        * README: update version
        !          7741:
        !          7742: 2001-12-14 14:52  millert
        !          7743:
        !          7744:        * alloc.c, check.c, defaults.c, env.c, fileops.c, find_path.c,
        !          7745:          fnmatch.c, getcwd.c, getspwuid.c, goodpath.c, interfaces.c,
        !          7746:          logging.c, lsearch.c, parse.c, parse.lex, parse.yacc,
        !          7747:          set_perms.c, snprintf.c, sudo.c, testsudoers.c, tgetpass.c,
        !          7748:          utime.c, visudo.c, auth/afs.c, auth/aix_auth.c, auth/bsdauth.c,
        !          7749:          auth/dce.c, auth/fwtk.c, auth/kerb4.c, auth/kerb5.c, auth/pam.c,
        !          7750:          auth/passwd.c, auth/rfc1938.c, auth/secureware.c, auth/securid.c,
        !          7751:          auth/sia.c, auth/sudo_auth.c: o Reorder some headers and use
        !          7752:          STDC_HEADERS define properly o Update copyright year
        !          7753:
        !          7754: 2001-12-14 01:53  millert
        !          7755:
        !          7756:        * configure: regen
        !          7757:
        !          7758: 2001-12-14 01:53  millert
        !          7759:
        !          7760:        * tgetpass.c: flags set in signal handlers should be volatile
        !          7761:          sig_atomic_t
        !          7762:
        !          7763: 2001-12-14 01:52  millert
        !          7764:
        !          7765:        * config.h.in, configure.in: Add checks for volatile and
        !          7766:          sig_atomic_t
        !          7767:
        !          7768: 2001-12-14 01:42  millert
        !          7769:
        !          7770:        * lex.yy.c, configure: regen
        !          7771:
        !          7772: 2001-12-14 01:40  millert
        !          7773:
        !          7774:        * def_data.c, def_data.h, def_data.in, defaults.c, env.c,
        !          7775:          find_path.c, sudo.c, sudoers.pod: Remove "secure_path" Defaults
        !          7776:          option since it cannot work with the existing parser.
        !          7777:
        !          7778: 2001-12-14 01:26  millert
        !          7779:
        !          7780:        * find_path.c, sudo.c: Unset "secure_path" if user_is_exempt()
        !          7781:
        !          7782: 2001-12-14 01:24  millert
        !          7783:
        !          7784:        * env.c, pathnames.h.in: o Remove assumption that PATH and TERM are
        !          7785:          not listed in env_keep o If no PATH is in the environment use a
        !          7786:          default value o If TERM is not set in the non-reset case also
        !          7787:          give it a default   value.
        !          7788:
        !          7789: 2001-12-14 01:17  millert
        !          7790:
        !          7791:        * aclocal.m4, configure.in, defaults.c, pathnames.h.in:
        !          7792:          _PATH_SENDMAIL -> _PATH_SUDO_SENDMAIL so --without-sendmail works
        !          7793:          on systems that define  in paths.h
        !          7794:
        !          7795: 2001-12-14 01:15  millert
        !          7796:
        !          7797:        * auth/: passwd.c, sudo_auth.c, sudo_auth.h: Add support for
        !          7798:          skeyaccess(3) if it is present in libskey.
        !          7799:
        !          7800: 2001-12-12 21:42  millert
        !          7801:
        !          7802:        * sudo.c: Only need to do 'lc = login_getclass(NULL)' if lc == NULL
        !          7803:
        !          7804: 2001-12-12 21:24  millert
        !          7805:
        !          7806:        * parse.lex: '\\' is a perfectly legal character to have in a
        !          7807:          command line argument.
        !          7808:
        !          7809: 2001-12-12 20:24  millert
        !          7810:
        !          7811:        * sudo.c: o Defer call to set_fqdn() until it is safe to use
        !          7812:          log_error() o Don't print errno string value if gethostbyname
        !          7813:          fails, it is not relevant
        !          7814:
        !          7815: 2001-12-12 20:07  millert
        !          7816:
        !          7817:        * parse.c: Fix CIDR -> in_addr_t conversion.
        !          7818:
        !          7819: 2001-12-12 16:21  millert
        !          7820:
        !          7821:        * sudoers.pod: Remove an extra "User_List" in the User_Spec
        !          7822:          definition From ybertrand AT snoopymail.com
        !          7823:
        !          7824: 2001-12-12 16:00  millert
        !          7825:
        !          7826:        * parse.c: Make 'listpw=never' work for users who are not
        !          7827:          explicitly mentioned in sudoers.
        !          7828:
        !          7829: 2001-12-12 15:40  millert
        !          7830:
        !          7831:        * sudoers.pod: Remove gratuitous '=' in EBNF grammar; era AT iki.fi
        !          7832:
        !          7833: 2001-12-12 15:34  millert
        !          7834:
        !          7835:        * sudoers.pod: Document new list Defaults type and convert env_keep
        !          7836:          and env_delete to lists.  Document new env_check option.
        !          7837:
        !          7838: 2001-12-12 15:11  millert
        !          7839:
        !          7840:        * lex.yy.c, sudo.tab.h: regen parser
        !          7841:
        !          7842: 2001-12-12 14:56  millert
        !          7843:
        !          7844:        * parse.lex: Don't let '#' appear in a {WORD} and restrict #foo in
        !          7845:          a Runas spec to #[0-9-]+.
        !          7846:
        !          7847: 2001-12-12 14:55  millert
        !          7848:
        !          7849:        * configure: regen
        !          7850:
        !          7851: 2001-12-12 14:55  millert
        !          7852:
        !          7853:        * aclocal.m4: Simpler SUDO_FUNC_ISBLANK that uses AC_TRY_LINK
        !          7854:
        !          7855: 2001-12-12 14:43  millert
        !          7856:
        !          7857:        * config.h.in, configure.in: Add check for skeyaccess(3)
        !          7858:
        !          7859: 2001-12-11 19:47  millert
        !          7860:
        !          7861:        * visudo.pod: Document new -c, -f, and -q options
        !          7862:
        !          7863: 2001-12-11 19:41  millert
        !          7864:
        !          7865:        * visudo.c: o Add -f option (alternate sudoers file) o Convert to
        !          7866:          use getopt(3)
        !          7867:
        !          7868: 2001-12-11 19:31  millert
        !          7869:
        !          7870:        * configure: regen
        !          7871:
        !          7872: 2001-12-11 19:31  millert
        !          7873:
        !          7874:        * aclocal.m4, config.h.in, configure.in: Add check for isblank and
        !          7875:          a replacement macro if it doesn't exist.
        !          7876:
        !          7877: 2001-12-11 18:22  millert
        !          7878:
        !          7879:        * visudo.c: In check-only mode, don't create sudoers if it does not
        !          7880:          already exist.
        !          7881:
        !          7882: 2001-12-11 18:06  millert
        !          7883:
        !          7884:        * parse.yacc:  o Add a new token, DEFVAR, to indicate a Defaults
        !          7885:          variable name
        !          7886:           o Add support for "+=" and "-=" list operators
        !          7887:           o replace some 1 and 0 with TRUE and FALSE for greater
        !          7888:          legibility.
        !          7889:
        !          7890: 2001-12-11 18:05  millert
        !          7891:
        !          7892:        * parse.lex:  o Use exclusive start conditions to remove some
        !          7893:          ambiguity in the
        !          7894:             lexer.  Also reorder some things for clarity.
        !          7895:           o Add support for "+=" and "-=" list operators.
        !          7896:           o Use the new DEFVAR token to denote a Defaults variable name.
        !          7897:
        !          7898: 2001-12-11 18:03  millert
        !          7899:
        !          7900:        * sudo.h: Prototype init_envtables()
        !          7901:
        !          7902: 2001-12-11 18:02  millert
        !          7903:
        !          7904:        * env.c:  o Convert environment handling to use lists instead of
        !          7905:          strings.
        !          7906:             This greatly simplifies routines that need to do "foreach"
        !          7907:          type
        !          7908:             operations.
        !          7909:           o Add new init_envtables() function to set env_check and
        !          7910:          env_delete
        !          7911:             defaults based on initial_badenv_table and
        !          7912:          initial_checkenv_table
        !          7913:             (formerly sudo_badenv_table).
        !          7914:
        !          7915: 2001-12-11 18:00  millert
        !          7916:
        !          7917:        * defaults.c, defaults.h:  o Add a new LIST type and functions to
        !          7918:          manipulate it.
        !          7919:           o This is for use with environment handling variables.
        !          7920:           o Call new init_envtables() routine inside init_defaults() to
        !          7921:             initialize the environment lists.
        !          7922:
        !          7923: 2001-12-11 17:57  millert
        !          7924:
        !          7925:        * def_data.c, def_data.h, def_data.in: Convert environment options
        !          7926:          to use the new LIST type and add a new one, env_check that only
        !          7927:          deletes if the sanity check fails.
        !          7928:
        !          7929: 2001-12-11 17:55  millert
        !          7930:
        !          7931:        * testsudoers.c: Add dummy version of init_envtables()
        !          7932:
        !          7933: 2001-12-11 17:53  millert
        !          7934:
        !          7935:        * parse.yacc: honor quiet mode
        !          7936:
        !          7937: 2001-12-11 17:51  millert
        !          7938:
        !          7939:        * visudo.c: Add check-only mode
        !          7940:
        !          7941: 2001-12-10 20:27  millert
        !          7942:
        !          7943:        * mkdefaults: Fix generation of entries with NULL descriptions.
        !          7944:
        !          7945: 2001-12-09 00:27  millert
        !          7946:
        !          7947:        * tgetpass.c: Use sigaction_t and quiet a gcc warning.
        !          7948:
        !          7949: 2001-12-09 00:20  millert
        !          7950:
        !          7951:        * sudo.c: Must reset signal handlers before we exec
        !          7952:
        !          7953: 2001-12-09 00:16  millert
        !          7954:
        !          7955:        * auth/: aix_auth.c, bsdauth.c, fwtk.c, pam.c, sudo_auth.c: Be
        !          7956:          carefule now that tgetpass() can return NULL (user hit ^C).  PAM
        !          7957:          version needs testing.  Set SIGTSTP to SIG_DFL during password
        !          7958:          entry so user can suspend us.
        !          7959:
        !          7960: 2001-12-09 00:14  millert
        !          7961:
        !          7962:        * tgetpass.c: Add support for interrupting/suspending tgetpass via
        !          7963:          keyboard input.  If you suspend sudo from the password prompt and
        !          7964:          resume it will re-prompt you.
        !          7965:
        !          7966: 2001-12-09 00:09  millert
        !          7967:
        !          7968:        * sudo.c: Don't block keyboard interrupt signals, just set them to
        !          7969:          SIG_IGN.
        !          7970:
        !          7971: 2001-12-08 14:48  millert
        !          7972:
        !          7973:        * config.h.in: add back HAVE_SIGACTION
        !          7974:
        !          7975: 2001-12-08 14:44  millert
        !          7976:
        !          7977:        * configure: regen
        !          7978:
        !          7979: 2001-12-08 14:44  millert
        !          7980:
        !          7981:        * config.h.in, configure.in, logging.c, sudo.c, visudo.c: Kill
        !          7982:          POSIX_SIGNALS define and old signal support now that we emulate
        !          7983:          POSIX ones Also be sure to correctly initialize struct sigaction.
        !          7984:
        !          7985: 2001-12-08 14:42  millert
        !          7986:
        !          7987:        * strerror.c: Don't need config.h or "#ifndef HAVE_STRERROR"
        !          7988:          wrapper.
        !          7989:
        !          7990: 2001-12-08 14:39  millert
        !          7991:
        !          7992:        * compat.h: Add scaffolding for POSIX signal emulation
        !          7993:
        !          7994: 2001-12-08 14:36  millert
        !          7995:
        !          7996:        * sigaction.c: o Add missing ';' so this compiles o Can't use NULL
        !          7997:          since we don't include stdio.h
        !          7998:
        !          7999: 2001-12-08 14:23  millert
        !          8000:
        !          8001:        * sigaction.c: Emulate sigaction() using sigvec()
        !          8002:
        !          8003: 2001-11-12 19:32  millert
        !          8004:
        !          8005:        * sudoers.pod: Document new behavior of negative values of
        !          8006:          timestamp_timeout Fix a typo
        !          8007:
        !          8008: 2001-11-12 19:31  millert
        !          8009:
        !          8010:        * sudo.pod: Add security note about command not being logged after
        !          8011:          'sudo su' and friends.
        !          8012:
        !          8013: 2001-11-12 19:19  millert
        !          8014:
        !          8015:        * sudo.pod: Mention that -V prints default values when run as root,
        !          8016:          including the list of environment variables to clear.
        !          8017:
        !          8018: 2001-11-12 19:14  millert
        !          8019:
        !          8020:        * Makefile.in: Run pod2man with --quotes=none to avoid stupid
        !          8021:          quoting of C<> entries.
        !          8022:
        !          8023: 2001-11-12 13:12  millert
        !          8024:
        !          8025:        * def_data.c, def_data.h, def_data.in, sudoers.pod,
        !          8026:          auth/sudo_auth.c: Add mail_badpass option Also modify mail_always
        !          8027:          behavior to also send mail when the password is wrong
        !          8028:
        !          8029: 2001-11-12 13:08  millert
        !          8030:
        !          8031:        * env.c, sudo.c, sudo.h: Dump default bad env table when 'sudo -V'
        !          8032:          is run by root.
        !          8033:
        !          8034: 2001-11-11 23:52  millert
        !          8035:
        !          8036:        * sudoers.pod: document env_delete
        !          8037:
        !          8038: 2001-11-11 23:51  millert
        !          8039:
        !          8040:        * env.c: Add support for '*' in env_keep when not resetting the
        !          8041:          environment (ie: the normal case).
        !          8042:
        !          8043: 2001-11-11 23:47  millert
        !          8044:
        !          8045:        * env.c: Add env_delete variable that lets the user replace/add to
        !          8046:          the bad_env_table.  Allow '*' wildcard in env_keep entries.
        !          8047:
        !          8048: 2001-11-06 13:59  millert
        !          8049:
        !          8050:        * mkinstalldirs: Force umask to 022 to guarantee sane directory
        !          8051:          permissions.
        !          8052:
        !          8053: 2001-11-02 18:09  millert
        !          8054:
        !          8055:        * Makefile.in: add sudo.tab.h and sudo.tab.c to sudo.tab.o
        !          8056:          dependency
        !          8057:
        !          8058: 2001-11-02 17:25  millert
        !          8059:
        !          8060:        * mkdefaults: fix breakage in last commit
        !          8061:
        !          8062: 2001-11-02 17:18  millert
        !          8063:
        !          8064:        * Makefile.in: acsite.m4 -> aclocal.m4
        !          8065:
        !          8066: 2001-11-02 15:59  millert
        !          8067:
        !          8068:        * check.c: fix I_TS_TIMEOUT vs. I_TIMESTAMP_TIMEOUT pasto in
        !          8069:          previous commit
        !          8070:
        !          8071: 2001-11-02 15:57  millert
        !          8072:
        !          8073:        * def_data.c: regenerated from def_data.in
        !          8074:
        !          8075: 2001-11-02 15:56  millert
        !          8076:
        !          8077:        * check.c, defaults.c, defaults.h: Add new T_UINT type that most
        !          8078:          things use instead of T_INT If timestamp_timeout is < 0 then
        !          8079:          treat the ticket as never expiring (to be expired manually by the
        !          8080:          user).
        !          8081:
        !          8082: 2001-11-02 15:51  millert
        !          8083:
        !          8084:        * def_data.in: change most T_INT -> T_UINT
        !          8085:
        !          8086: 2001-11-02 15:51  millert
        !          8087:
        !          8088:        * mkdefaults: fix warning when no args
        !          8089:
        !          8090: 2001-11-02 12:52  millert
        !          8091:
        !          8092:        * visudo.c: Change 2 Exit() -> exit() Avoid stdio in Exit() and
        !          8093:          call _exit() if we are a signal handler.  We no longer print the
        !          8094:          signal number but the user can just check the exit value for
        !          8095:          that.
        !          8096:
        !          8097: 2001-10-16 01:35  millert
        !          8098:
        !          8099:        * logging.c: when setting up pipes in child process check for case
        !          8100:          where stdin == pipe fd 0
        !          8101:
        !          8102: 2001-10-11 13:20  millert
        !          8103:
        !          8104:        * visudo.c: Ignore editor exit value since XPG4 says vi's exit
        !          8105:          value is the count of editing errors made (failed searches, etc).
        !          8106:
        !          8107: 2001-10-05 16:39  millert
        !          8108:
        !          8109:        * configure: regen
        !          8110:
        !          8111: 2001-10-05 16:39  millert
        !          8112:
        !          8113:        * configure.in: sco now is identified by config.guess as *-sco-*
        !          8114:
        !          8115: 2001-10-05 16:24  millert
        !          8116:
        !          8117:        * configure.in: Check for getspnam() in -lgen if not in -lc for
        !          8118:          UnixWare.
        !          8119:
        !          8120: 2001-09-17 21:48  millert
        !          8121:
        !          8122:        * sudoers.pod, visudo.pod: "upper case" -> "uppercase"
        !          8123:
        !          8124: 2001-09-17 21:32  millert
        !          8125:
        !          8126:        * sudoers.pod: fix typos and grammar; pjanzen@foatdi.harvard.edu
        !          8127:
        !          8128: 2001-08-28 10:26  millert
        !          8129:
        !          8130:        * sudoers.pod: Missing word (specify); krapht@secureops.com
        !          8131:
        !          8132: 2001-08-23 17:43  millert
        !          8133:
        !          8134:        * sudo.c: If we fail to lookup a login class, apply the default
        !          8135:          one.
        !          8136:
        !          8137: 2001-08-23 17:42  millert
        !          8138:
        !          8139:        * logging.c: In log_error() free message, not logline
        !          8140:          unconditionally, then free logline if it is not the same as
        !          8141:          message.  No function change but this mirrors how they are
        !          8142:          allocated.
        !          8143:
        !          8144: 2001-07-16 23:33  millert
        !          8145:
        !          8146:        * configure: regenerate
        !          8147:
        !          8148: 2001-07-16 23:33  millert
        !          8149:
        !          8150:        * configure.in: remove some backslash quotes that are unneeded
        !          8151:
        !          8152: 2001-07-16 23:30  millert
        !          8153:
        !          8154:        * configure.in: o Tweaks to make this work with autoconf-2.50 o Use
        !          8155:          AC_LIBOBJ instead of changing LIBOBJS directly o Use
        !          8156:          AC_REPLACE_FUNCS where we can o Use AC_CHECK_FUNCS instead of
        !          8157:          AC_CHECK_FUNC so we don't have to   AC_DEFINE things manually.
        !          8158:
        !          8159: 2001-07-16 23:28  millert
        !          8160:
        !          8161:        * config.guess, config.sub: Updated from autoconf-2.50
        !          8162:
        !          8163: 2001-05-22 19:11  millert
        !          8164:
        !          8165:        * README: Update mailing list section.  We use mailman now, not
        !          8166:          majordomo.
        !          8167:
        !          8168: 2001-05-10 14:55  millert
        !          8169:
        !          8170:        * getspwuid.c, logging.c, sudo.c: Use setpwent()/endpwent() + all
        !          8171:          the shadow variants to make sure we don't inadvertantly leak an
        !          8172:          fd to the child.  Apparently Linux's shadow routines leave the fd
        !          8173:          open even if you don't call setspent().  Reported by
        !          8174:          mike@gistnet.com; different patch used.
        !          8175:
        !          8176: 2001-04-12 21:43  millert
        !          8177:
        !          8178:        * sudoers.pod: s/eg./e.g./
        !          8179:
        !          8180: 2001-04-12 21:42  millert
        !          8181:
        !          8182:        * tgetpass.c: select() may return EAGAIN.  If so, continue like we
        !          8183:          do for EINTR.
        !          8184:
        !          8185: 2001-04-12 21:41  millert
        !          8186:
        !          8187:        * logging.c: Fix a non-exploitable buffer overflow in the word
        !          8188:          splitting code.  This should really be rewritten.
        !          8189:
        !          8190: 2001-04-12 21:41  millert
        !          8191:
        !          8192:        * Makefile.in: FAQ link goes away
        !          8193:
        !          8194: 2001-04-12 21:40  millert
        !          8195:
        !          8196:        * INSTALL: Tell people to look in sample.syslog.conf for examples,
        !          8197:          not FAQ
        !          8198:
        !          8199: 2001-04-12 21:40  millert
        !          8200:
        !          8201:        * TROUBLESHOOTING: Update list of env vars that are cleared
        !          8202:
        !          8203: 2001-04-12 21:36  millert
        !          8204:
        !          8205:        * sudo.c: remove struct env_table decl since that stuff has all
        !          8206:          moved to env.c
        !          8207:
        !          8208: 2001-04-04 13:17  millert
        !          8209:
        !          8210:        * fileops.c: Fix a pasto in flock-style unlocking and include
        !          8211:          <sys/file.h> for flock on older systems; twetzel@gwdg.de
        !          8212:
        !          8213: 2001-04-04 13:14  millert
        !          8214:
        !          8215:        * configure: regen to get NeXT lockf/flock fix
        !          8216:
        !          8217: 2001-04-04 13:14  millert
        !          8218:
        !          8219:        * configure.in: force NeXT to use flock since lockf is broken
        !          8220:
        !          8221: 2001-03-30 08:54  millert
        !          8222:
        !          8223:        * check.c: Use stashed user_gid when checking against exempt gid
        !          8224:          since sudo sets its gid to a a value that makes sudoers readable.
        !          8225:          Previously if you used gid 0 as the exempt group everyone would
        !          8226:          be exempt.  From Paul Kranenburg <pk@cs.few.eur.nl>
        !          8227:
        !          8228: 2001-03-29 13:14  millert
        !          8229:
        !          8230:        * configure: regen
        !          8231:
        !          8232: 2001-03-29 13:08  millert
        !          8233:
        !          8234:        * aclocal.m4: #include stdio.h in SUDO_CHECK_TYPE since IRIX 6
        !          8235:          aparently defines some types (such as ssize_t) therein.
        !          8236:
        !          8237: 2001-03-02 09:09  millert
        !          8238:
        !          8239:        * defaults.c: Fix negation of paths in a boolean context.  Problem
        !          8240:          found by apt@UH.EDU
        !          8241:
        !          8242: 2001-02-23 13:03  millert
        !          8243:
        !          8244:        * visudo.c: pasto
        !          8245:
        !          8246: 2001-02-17 16:11  millert
        !          8247:
        !          8248:        * visudo.c: SA_RESETHAND means the opposite of what I was
        !          8249:          thinking--oops To block all signals in old-style signals use ~0,
        !          8250:          not 0xffffffff
        !          8251:
        !          8252: 2001-02-04 11:16  millert
        !          8253:
        !          8254:        * defaults.c: coerce difference of pointers to int when used in a
        !          8255:          string length printf format; deraadt@openbsd.org
        !          8256:
        !          8257: 2001-01-17 11:34  millert
        !          8258:
        !          8259:        * visudo.c: Block all signals in Exit() to avoid a signal race.
        !          8260:          There is still a tiny window but I'm not going to worry about it.
        !          8261:
        !          8262: 2001-01-07 13:57  millert
        !          8263:
        !          8264:        * env.c: glibc uses the LANGUAGE env var so clear that too; Solar
        !          8265:          Designer
        !          8266:
        !          8267: 2001-01-07 13:55  millert
        !          8268:
        !          8269:        * lex.yy.c: Regenerate with a fix to flex.skl that preserves errno
        !          8270:          from clobbering by isatty().
        !          8271:
        !          8272: 2000-12-30 20:39  millert
        !          8273:
        !          8274:        * auth/: aix_auth.c, bsdauth.c, fwtk.c, pam.c, sia.c, sudo_auth.c:
        !          8275:          Some defaults I_ defines got renamed.
        !          8276:
        !          8277: 2000-12-30 20:38  millert
        !          8278:
        !          8279:        * Makefile.in, check.c, def_data.c, def_data.h, def_data.in,
        !          8280:          defaults.c, defaults.h, env.c, logging.c, mkdefaults, parse.yacc,
        !          8281:          set_perms.c, sudo.c: Move defaults info into its own files from
        !          8282:          which we generate .h and .c files.  This makes adding or
        !          8283:          rearranging variables much simpler.
        !          8284:
        !          8285: 2000-12-30 16:58  millert
        !          8286:
        !          8287:        * configure, configure.in: fix typo in last commit
        !          8288:
        !          8289: 2000-12-30 16:55  millert
        !          8290:
        !          8291:        * compat.h, config.h.in, configure, configure.in: Add check +
        !          8292:          emulation for setegid (like seteuid).
        !          8293:
        !          8294: 2000-12-30 16:22  millert
        !          8295:
        !          8296:        * env.c: Make env_keep override badenv_table as documented Fix
        !          8297:          traversal of badenv_table (broken in last commit)
        !          8298:
        !          8299: 2000-12-29 22:59  millert
        !          8300:
        !          8301:        * set_perms.c, sudo.c, sudo.h: Don't try and build saved uid
        !          8302:          version of set_perms on systems w/o them.  Rename
        !          8303:          set_perms_saved_uid() -> set_perms_posix() Make
        !          8304:          set_perms_setreuid simply be set_perms_fallback() and simply
        !          8305:          include   the appropriate function at compile time (setreuid()
        !          8306:          vs. setuid()).
        !          8307:
        !          8308: 2000-12-29 22:45  millert
        !          8309:
        !          8310:        * sudoers.pod, sudoers.cat, sudoers.man.in: PATH is also preserved
        !          8311:          when env_reset is in effect
        !          8312:
        !          8313: 2000-12-29 22:29  millert
        !          8314:
        !          8315:        * CHANGES, env.c, Makefile.in, check.c, compat.h, config.h.in,
        !          8316:          configure, configure.in, defaults.c, defaults.h, find_path.c,
        !          8317:          getspwuid.c, set_perms.c, sudo.c, sudo.cat, sudo.h, sudo.man.in,
        !          8318:          sudo.pod, sudoers.cat, sudoers.man.in, sudoers.pod,
        !          8319:          testsudoers.c, visudo.c, visudo.cat, visudo.man.in: New Defaults
        !          8320:          options:  o stay_setuid - sudo will remain setuid if system has
        !          8321:          saved uids or setreuid(2)  o env_reset - reset the environment to
        !          8322:          a sane default  o env_keep - preserve environment variables that
        !          8323:          would otherwise be cleared
        !          8324:
        !          8325:          No longer use getenv/putenv/setenv functions--do environment
        !          8326:          munging by hand.  Potentially dangerous environment variables can
        !          8327:          be cleared only if they contain '/' pr '%' characters to protect
        !          8328:          buggy programs.  Moved environment routines into env.c (new file)
        !          8329:
        !          8330: 2000-12-29 22:17  millert
        !          8331:
        !          8332:        * INSTALL: Clear up --without-passwd description
        !          8333:
        !          8334: 2000-12-29 19:39  millert
        !          8335:
        !          8336:        * sudo_setenv.c, putenv.c: We now build up a new environment from
        !          8337:          scratch and assign it to "environ".
        !          8338:
        !          8339: 2000-12-18 22:35  millert
        !          8340:
        !          8341:        * sudo.pod, visudo.pod: Grammatical fixes from Paul Janzen
        !          8342:
        !          8343: 2000-12-14 23:19  millert
        !          8344:
        !          8345:        * visudo.c: If there was a syntax error and the user just wants to
        !          8346:          quit, unlink sudoers if it is zero length.
        !          8347:
        !          8348: 2000-12-14 23:10  millert
        !          8349:
        !          8350:        * visudo.c: 'Q' means ignore parse error, not 'q'
        !          8351:
        !          8352: 2000-12-14 22:57  millert
        !          8353:
        !          8354:        * visudo.c: Open sudoers for writing with mode SUDOERS_MODE From
        !          8355:          Dimitry Andric <dim@xs4all.nl>
        !          8356:
        !          8357: 2000-12-13 12:23  millert
        !          8358:
        !          8359:        * set_perms.c: Add missing #ifdef HAVE_LOGIN_CAP_H;
        !          8360:          ayamura@ayamura.org
        !          8361:
        !          8362: 2000-12-09 11:46  millert
        !          8363:
        !          8364:        * config.guess, config.sub: Darwin / Mac OS X support from Wilfredo
        !          8365:          Sanchez <wsanchez@apple.com>
        !          8366:
        !          8367: 2000-11-03 09:36  millert
        !          8368:
        !          8369:        * sudo.c, visudo.c: Use exit(127), not exit(-1)
        !          8370:
        !          8371: 2000-11-03 00:37  millert
        !          8372:
        !          8373:        * defaults.h, set_perms.c, sudo.c, Makefile.in, defaults.c: Move
        !          8374:          set_perms() to its own file and use POSIX saved uid or setreuid()
        !          8375:          if available.
        !          8376:
        !          8377:          Added stay_setuid option for systems that have libraries that
        !          8378:          perform extra paranoia checks in system libraries for setuid
        !          8379:          programs (ie: anything with issetugid(2)).
        !          8380:
        !          8381: 2000-11-02 20:28  millert
        !          8382:
        !          8383:        * sudo.c: strip more bits from the environment and add a facility
        !          8384:          for stripping things only if they contain '/' or '%' to address
        !          8385:          printf format string vulnerabilities in other programs.
        !          8386:
        !          8387: 2000-11-02 12:55  millert
        !          8388:
        !          8389:        * configure: regen
        !          8390:
        !          8391: 2000-11-02 12:55  millert
        !          8392:
        !          8393:        * configure.in: For NCR, add -lc89 to LIBS, not SUDO_LIBS and cache
        !          8394:          the existence of strcasecmp().
        !          8395:
        !          8396: 2000-11-02 12:46  millert
        !          8397:
        !          8398:        * configure: regen
        !          8399:
        !          8400: 2000-11-02 12:46  millert
        !          8401:
        !          8402:        * configure.in: Check for strcasecmp(3) in -lc89 for NCR Unix
        !          8403:
        !          8404: 2000-11-01 10:22  millert
        !          8405:
        !          8406:        * config.h.in: Define HAVE_INNETGR #ifdef HAVE__INNETGR
        !          8407:
        !          8408: 2000-11-01 10:17  millert
        !          8409:
        !          8410:        * configure: regen
        !          8411:
        !          8412: 2000-11-01 10:17  millert
        !          8413:
        !          8414:        * compat.h, config.h.in, configure.in: Add check for _innetgr(3)
        !          8415:          since NCR systems have that instead of innetgr(3).
        !          8416:
        !          8417: 2000-10-31 14:16  millert
        !          8418:
        !          8419:        * auth/securid.c: check return value of creadcfg() call sd_close()
        !          8420:          after sd_auth() store username in sd->username so we don't rely
        !          8421:          on the USER env variable
        !          8422:
        !          8423: 2000-10-29 23:00  millert
        !          8424:
        !          8425:        * INSTALL: document --with-bsdauth
        !          8426:
        !          8427: 2000-10-29 22:57  millert
        !          8428:
        !          8429:        * configure: regen
        !          8430:
        !          8431: 2000-10-29 22:56  millert
        !          8432:
        !          8433:        * configure.in: --with-bsdauth assumes --with-logincap
        !          8434:
        !          8435: 2000-10-29 22:45  millert
        !          8436:
        !          8437:        * auth/: bsdauth.c, fwtk.c: When prompting for a response to a
        !          8438:          challenge, if the user just hits return then reprompt with echo
        !          8439:          turned on.
        !          8440:
        !          8441: 2000-10-29 17:31  millert
        !          8442:
        !          8443:        * sudo.c: Remove debugging code that should not have been
        !          8444:          committed, oops.
        !          8445:
        !          8446: 2000-10-29 17:31  millert
        !          8447:
        !          8448:        * auth/bsdauth.c: Use lower-level routines and get the password
        !          8449:          ourselves.  Checks for a challenge and if there is one echo is
        !          8450:          not turned off.
        !          8451:
        !          8452: 2000-10-29 17:30  millert
        !          8453:
        !          8454:        * auth/: pam.c, sudo_auth.h: minor housekeeping, no real code
        !          8455:          changes
        !          8456:
        !          8457: 2000-10-27 18:41  millert
        !          8458:
        !          8459:        * sudo.c: Fix a coredump in the logging functions if gethostname(2)
        !          8460:          fails by deferring the call to log_error() until things are
        !          8461:          better setup.
        !          8462:
        !          8463:          Fix return value of set_loginclass() in non-BSD-auth case.
        !          8464:
        !          8465:          Hard-code 'sudo' in the usage message so we can fit more options
        !          8466:          on a line
        !          8467:
        !          8468: 2000-10-27 18:35  millert
        !          8469:
        !          8470:        * logging.c: Fix errant ';' (typo) that broken MSG_ONLY
        !          8471:
        !          8472: 2000-10-26 13:03  millert
        !          8473:
        !          8474:        * sudo.cat, sudo.man.in: regen
        !          8475:
        !          8476: 2000-10-26 13:01  millert
        !          8477:
        !          8478:        * sudo.pod: Document -a flag
        !          8479:
        !          8480: 2000-10-26 12:42  millert
        !          8481:
        !          8482:        * Makefile.in, config.h.in, configure, configure.in, getspwuid.c,
        !          8483:          sudo.c, auth/sudo_auth.h, auth/bsdauth.c: Add support for BSD
        !          8484:          authentication.
        !          8485:
        !          8486: 2000-10-19 10:09  millert
        !          8487:
        !          8488:        * sudoers.pod: Fix typo; from sato@complex.eng.hokudai.ac.jp
        !          8489:
        !          8490: 2000-10-12 09:49  millert
        !          8491:
        !          8492:        * sudoers.pod: Mention negating umask
        !          8493:
        !          8494: 2000-10-12 01:30  millert
        !          8495:
        !          8496:        * defaults.c: Allow user to specify umask of 0777 (same as !umask)
        !          8497:
        !          8498: 2000-10-08 21:46  millert
        !          8499:
        !          8500:        * sudo.pod, visudo.pod: Fix a typo and give a URL for the sudo
        !          8501:          history.
        !          8502:
        !          8503: 2000-10-08 12:25  millert
        !          8504:
        !          8505:        * defaults.c, sudo.pod: fix typos; pepper@reppep.com
        !          8506:
        !          8507: 2000-09-14 16:48  millert
        !          8508:
        !          8509:        * sudo.c, sudo.h, sudo_setenv.c: sudo_setenv() now exits on memory
        !          8510:          alloc failure instead of returning -1.
        !          8511:
        !          8512: 2000-09-07 17:41  millert
        !          8513:
        !          8514:        * sudo.c: Strip out NLSPATH and PATH_LOCALE from the environment
        !          8515:          for FreeBSD and possibly others.
        !          8516:
        !          8517: 2000-09-07 10:43  millert
        !          8518:
        !          8519:        * logging.c: Don't use vsyslog(3) since HP-UX (and others?) lack
        !          8520:          it.  This means that "%m" won't be expanded but we don't use that
        !          8521:          anyway since the logging routines may splat to stderr as well.
        !          8522:
        !          8523: 2000-09-06 21:35  millert
        !          8524:
        !          8525:        * defaults.c, defaults.h, sudo.c, sudoers.cat, sudoers.man.in,
        !          8526:          sudoers.pod: Add always_set_home variable
        !          8527:
        !          8528: 2000-09-06 21:24  millert
        !          8529:
        !          8530:        * configure, configure.in: Have to hard code default values in help
        !          8531:          since the defaults are set _after_ the help stuff.
        !          8532:
        !          8533: 2000-08-31 13:08  millert
        !          8534:
        !          8535:        * lex.yy.c, parse.lex: Allow special characters (including '#') to
        !          8536:          be embedded in pathnames if quoted by a '\\'.  The quoted chars
        !          8537:          will be dealt with by fnmatch().  Unfortunately, 'sudo -l' still
        !          8538:          prints the '\\'.
        !          8539:
        !          8540: 2000-08-13 17:10  millert
        !          8541:
        !          8542:        * install-sh: Better path searching for programs we need.
        !          8543:
        !          8544: 2000-08-13 17:10  millert
        !          8545:
        !          8546:        * TROUBLESHOOTING: Add section on "C compiler cannot create
        !          8547:          executables" errors.
        !          8548:
        !          8549: 2000-08-13 17:10  millert
        !          8550:
        !          8551:        * Makefile.binary, Makefile.in, version.h: Crank version
        !          8552:
        !          8553: 2000-08-13 17:09  millert
        !          8554:
        !          8555:        * aclocal.m4, configure, configure.in, sudo.cat, sudo.man.in,
        !          8556:          sudo.pod, sudoers.cat, sudoers.man.in, sudoers.pod, visudo.cat,
        !          8557:          visudo.man.in, visudo.pod: Substitute values from configure into
        !          8558:          man pages.
        !          8559:
        !          8560: 2000-08-12 16:48  millert
        !          8561:
        !          8562:        * parse.c, sudo.c: The listpw and verifypw sudoers options would
        !          8563:          not take effect because the value of the default was checked
        !          8564:          *before* sudoers was parsed.  Instead of passing in the value of
        !          8565:          PWCHECK_* to sudoers_lookup(), pass in the arg for def_ival() so
        !          8566:          the check can be deferred until after sudoers is parsed.
        !          8567:
        !          8568: 2000-08-11 15:41  millert
        !          8569:
        !          8570:        * tgetpass.c: When writing prompt, no need to write the NUL as
        !          8571:          well; hag@linnaean.org
        !          8572:
        !          8573: 2000-06-09 12:25  millert
        !          8574:
        !          8575:        * install-sh: When looking for chown, check in /sbin too
        !          8576:
        !          8577: 2000-06-04 22:57  millert
        !          8578:
        !          8579:        * visudo.c: Remove extraneous call to init_defaults() and set
        !          8580:          runas_user to NULL betweem parses so init_defaults will reset it
        !          8581:          each time, thus avoiding a reference to free()d data.
        !          8582:
        !          8583: 2000-06-04 19:57  millert
        !          8584:
        !          8585:        * config.h.in, interfaces.c, interfaces.h, sudo.c: Add support for
        !          8586:          using getifaddrs() to get the list of ip addr / netmask pairs.
        !          8587:          Currently IPv4-only.
        !          8588:
        !          8589: 2000-06-04 19:51  millert
        !          8590:
        !          8591:        * visudo.c: Add a missing check for UserEditor == NULL Add missing
        !          8592:          '+' before line number when invoking editor to fix a syntax error
        !          8593:
        !          8594: 2000-05-12 16:55  millert
        !          8595:
        !          8596:        * sudo.c: Call clean_env very early in main() for paranoia's sake.
        !          8597:          Idea from Marc Esipovich.
        !          8598:
        !          8599: 2000-05-10 01:11  millert
        !          8600:
        !          8601:        * sudo.h: Update proto for evasprintf and easprintf
        !          8602:
        !          8603: 2000-05-10 01:10  millert
        !          8604:
        !          8605:        * alloc.c: Make easprintf() and evasprintf() return an int.
        !          8606:
        !          8607: 2000-05-10 00:56  millert
        !          8608:
        !          8609:        * check.c: If the targetpw flag is set, use target username as part
        !          8610:          of the timestamp path.  If tty tickets are in effect cat the tty
        !          8611:          and the target username with a ':' as the separator.
        !          8612:
        !          8613: 2000-05-09 12:05  millert
        !          8614:
        !          8615:        * auth/pam.c: Backout part of last change; setting PAM_USER to the
        !          8616:          invoking user breaks things like targetpw.
        !          8617:
        !          8618: 2000-05-09 11:52  millert
        !          8619:
        !          8620:        * auth/pam.c: set tty and username via pam_set_item
        !          8621:
        !          8622: 2000-05-09 11:42  millert
        !          8623:
        !          8624:        * check.c, getspwuid.c, sudo.c, sudo.h, auth/sudo_auth.c: Fix root,
        !          8625:          runas, and target authentication for non-passwd file auth
        !          8626:          methods.
        !          8627:
        !          8628: 2000-04-22 14:15  millert
        !          8629:
        !          8630:        * sudo.pod, sudo.man.in, sudoers.man.in, sudoers.pod, visudo.pod,
        !          8631:          sudo.cat, sudoers.cat, visudo.man.in, visudo.cat: Use B<-Z> not
        !          8632:          C<-Z> for command line flags in all places.  This is more
        !          8633:          consistent and works around a bug in Pod::Man.
        !          8634:
        !          8635: 2000-04-22 13:59  millert
        !          8636:
        !          8637:        * sudoers.cat, sudoers.man.in, sudoers.pod: Fix an occurence of
        !          8638:          'semicolon' that should be 'colon'
        !          8639:
        !          8640: 2000-04-19 15:30  millert
        !          8641:
        !          8642:        * configure, configure.in: Fix --with-badpri help line
        !          8643:
        !          8644: 2000-04-17 14:01  millert
        !          8645:
        !          8646:        * defaults.c, logging.c, sudo.c: Bracket calls to syslog with an
        !          8647:          openlog() and closelog() since some authentication methods (like
        !          8648:          PAM) may do their own logging via syslog.  Since we don't use
        !          8649:          syslog much (usually just once per session) this doesn't really
        !          8650:          incur a performance penalty.  It also Fixes a SEGV with pam_kafs.
        !          8651:
        !          8652: 2000-04-15 16:32  millert
        !          8653:
        !          8654:        * sudo.c: Fix -H flag.  runas_homedir is only valid after
        !          8655:          set_perms(PERM_RUNAS, mode)
        !          8656:
        !          8657: 2000-04-12 18:56  millert
        !          8658:
        !          8659:        * INSTALL: Clarify the fact that insults are not enabled just by
        !          8660:          including them in the binary.
        !          8661:
        !          8662: 2000-04-07 10:39  millert
        !          8663:
        !          8664:        * sudo.man.in, sudoers.man.in, visudo.man.in, sudo.cat,
        !          8665:          sudoers.cat, visudo.cat: Regenerated with perl 5.6.0 pod2man
        !          8666:
        !          8667: 2000-04-07 10:38  millert
        !          8668:
        !          8669:        * Makefile.in: Give date string to pod2man since its default is
        !          8670:          ugly and it ain't got no alibi.
        !          8671:
        !          8672: 2000-04-07 10:27  millert
        !          8673:
        !          8674:        * Makefile.in: Do section substitution on the output of pod2man and
        !          8675:          remove hack needed for old pod2man.
        !          8676:
        !          8677: 2000-04-07 10:26  millert
        !          8678:
        !          8679:        * sudo.pod, sudoers.pod, visudo.pod: Put back real man sections, we
        !          8680:          will do the substitution later.
        !          8681:
        !          8682: 2000-04-02 11:44  millert
        !          8683:
        !          8684:        * configure, configure.in: Don't bother checking for the path to vi
        !          8685:          if user specified --with-editor
        !          8686:
        !          8687: 2000-04-01 17:25  millert
        !          8688:
        !          8689:        * CHANGES, visudo.c: Visudo now does its own fork/exec instead of
        !          8690:          calling system(3).
        !          8691:
        !          8692: 2000-04-01 16:23  millert
        !          8693:
        !          8694:        * CHANGES, INSTALL, Makefile.in, sudoers.cat, sudoers.man.in,
        !          8695:          sudoers.pod, visudo.c: Visudo now checks for the existence of an
        !          8696:          editor and gives a sensible error if it does not exist.
        !          8697:
        !          8698:          The path to the editor for visudo is now a colon-separated list
        !          8699:          of allowable editors.  If the user has $EDITOR set and it matches
        !          8700:          one of the allowed editors that editor will be used.  If not, the
        !          8701:          first editor in the list that actually exists is used.
        !          8702:
        !          8703: 2000-04-01 16:22  millert
        !          8704:
        !          8705:        * sudo.pod, sudo.cat, sudo.man.in: Clear up confusion wrt sudo's
        !          8706:          return value.
        !          8707:
        !          8708: 2000-03-27 12:08  millert
        !          8709:
        !          8710:        * Makefile.in: Strip sudo and visudo for bindist target
        !          8711:
        !          8712: 2000-03-26 22:26  millert
        !          8713:
        !          8714:        * sudo.cat, sudo.man.in, sudo.pod, sudoers.cat, sudoers.man.in,
        !          8715:          sudoers.pod, visudo.cat, visudo.man.in, visudo.pod: Use
        !          8716:          @mansectsu@ and @mansectform@ in the man page bodies as well.
        !          8717:
        !          8718: 2000-03-26 22:07  millert
        !          8719:
        !          8720:        * visudo.cat, visudo.man.in, visudo.pod: Typo: @sysconf@ ->
        !          8721:          @sysconfdir@
        !          8722:
        !          8723: 2000-03-26 21:57  millert
        !          8724:
        !          8725:        * Makefile.in: 'make dist' should not cause any files to be
        !          8726:          modified so remove its dependencies.
        !          8727:
        !          8728: 2000-03-26 21:43  millert
        !          8729:
        !          8730:        * CHANGES: Whoops, forgot to add release marker
        !          8731:
        !          8732: 2000-03-26 11:57  millert
        !          8733:
        !          8734:        * CHANGES: Final change for 1.6.3 (or so I hope)
        !          8735:
        !          8736: 2000-03-26 11:57  millert
        !          8737:
        !          8738:        * sudo.cat, sudoers.cat, visudo.cat: Use SYSV man sections since
        !          8739:          BSD systems will have nroff...
        !          8740:
        !          8741: 2000-03-24 18:58  millert
        !          8742:
        !          8743:        * parse.yacc: When checking to see if the host/user matches in a
        !          8744:          defaults spec, check against TRUE, not just non-zero since it
        !          8745:          might be -1.
        !          8746:
        !          8747: 2000-03-24 15:14  millert
        !          8748:
        !          8749:        * configure.in, configure: OSF/1 puts file formats in section 4,
        !          8750:          not 5.
        !          8751:
        !          8752: 2000-03-24 15:13  millert
        !          8753:
        !          8754:        * CHANGES, INSTALL, sudo.c: Make login class support work on BSD/OS
        !          8755:
        !          8756: 2000-03-23 20:24  millert
        !          8757:
        !          8758:        * RUNSON: Update for 1.6.3
        !          8759:
        !          8760: 2000-03-23 20:23  millert
        !          8761:
        !          8762:        * configure, configure.in: If there is no inet_addr but there *is*
        !          8763:          an __inet_addr that's ok since inet_addr is probably just a macro
        !          8764:          then.  The better thing to do would be to look for the macro, but
        !          8765:          this is fine for now.
        !          8766:
        !          8767: 2000-03-23 19:50  millert
        !          8768:
        !          8769:        * configure, configure.in: Don't use shlicc for BSD/OS 4.x
        !          8770:
        !          8771: 2000-03-23 19:40  millert
        !          8772:
        !          8773:        * Makefile.in, configure, configure.in: *.man lives in cwd, *.cat
        !          8774:          lives in $(srcdir), add a @mansrcdir@ configure variable so we
        !          8775:          can deal with this.  Also, only remove *.man for 'distclean' not
        !          8776:          'clean'.
        !          8777:
        !          8778: 2000-03-23 19:16  millert
        !          8779:
        !          8780:        * sudo.c: set_loginclass() should be static like the proto says
        !          8781:
        !          8782: 2000-03-23 14:14  millert
        !          8783:
        !          8784:        * fnmatch.c: Add #ifdef __STDC__ around the rangematch function
        !          8785:          header to avoid promotion of test to int, thus violating the
        !          8786:          prototype.  Gcc handles this gracefully but more std ANSI
        !          8787:          compilers will complain.
        !          8788:
        !          8789: 2000-03-23 10:11  millert
        !          8790:
        !          8791:        * emul/fnmatch.h: Pull in newer fnmatch(3) that supports
        !          8792:          FNM_CASEFOLD
        !          8793:
        !          8794: 2000-03-23 10:11  millert
        !          8795:
        !          8796:        * aclocal.m4, configure, fnmatch.3, fnmatch.c: Pull in newer
        !          8797:          fnmatch(3) that supports FNM_CASEFOLD Check for FNM_CASEFOLD in
        !          8798:          configure
        !          8799:
        !          8800: 2000-03-22 23:41  millert
        !          8801:
        !          8802:        * CHANGES, TODO: update for 1.6.3
        !          8803:
        !          8804: 2000-03-22 23:38  millert
        !          8805:
        !          8806:        * lex.yy.c, parse.c, parse.h, parse.lex, parse.yacc, sudo.tab.h,
        !          8807:          testsudoers.c, visudo.c: Fully qualified hosts w/ wildcards were
        !          8808:          not matching the FQHOST token type.  There's really no need for a
        !          8809:          separate token for fully-qualified vs.  unqualified anymore so
        !          8810:          FQHOST is now history and hostname_matches now decides which
        !          8811:          hostname (short or long) to check based on whether or not the
        !          8812:          pattern contains a '.'.
        !          8813:
        !          8814: 2000-03-22 23:09  millert
        !          8815:
        !          8816:        * parse.c, parse.h, parse.yacc, sudoers.pod, testsudoers.c,
        !          8817:          visudo.c, sudoers.cat, sudoers.man.in: Add support for wildcards
        !          8818:          in the hostname.
        !          8819:
        !          8820: 2000-03-22 22:50  millert
        !          8821:
        !          8822:        * Makefile.in: Add targets for *.man.in, using config.status to
        !          8823:          generate *.man from *.man.in
        !          8824:
        !          8825: 2000-03-22 22:20  millert
        !          8826:
        !          8827:        * sudoers.cat, sudoers.man.in, sudoers.pod: Document set_logname
        !          8828:          option and enbolden refs to sudo and visudo.
        !          8829:
        !          8830: 2000-03-22 19:35  millert
        !          8831:
        !          8832:        * INSTALL, Makefile.in, aclocal.m4, configure, configure.in,
        !          8833:          sudo.cat, sudo.pod, sudo.man.in, sudoers.cat, sudoers.pod,
        !          8834:          visudo.cat, visudo.pod, sudoers.man.in, visudo.man.in: Add
        !          8835:          FreeBSD login.conf support (untested on BSD/OS) based on a patch
        !          8836:          from Michael D. Marchionna.  configure now does substitution on
        !          8837:          the man pages, allowing us to fix up the paths and set the
        !          8838:          section correctly.  Based on an idea from Michael D. Marchionna.
        !          8839:
        !          8840: 2000-03-22 19:27  millert
        !          8841:
        !          8842:        * auth/passwd.c: Better fix for handling HP-UX aging info.
        !          8843:
        !          8844: 2000-03-22 19:20  millert
        !          8845:
        !          8846:        * sudo.c: Add support for set_logname run-time default
        !          8847:
        !          8848: 2000-03-22 19:17  millert
        !          8849:
        !          8850:        * sudo.man.in, sudoers.man.in, visudo.man.in: configure does
        !          8851:          substitution on these to produce *.man
        !          8852:
        !          8853: 2000-03-22 19:16  millert
        !          8854:
        !          8855:        * sudo.man, sudoers.man, visudo.man: These files now get generated
        !          8856:          from *.man.in at configure time.
        !          8857:
        !          8858: 2000-03-22 18:40  millert
        !          8859:
        !          8860:        * defaults.c, defaults.h: Add set_logname option so users can turn
        !          8861:          off setting of LOGNAME/USER environment variables.
        !          8862:
        !          8863: 2000-03-22 10:53  millert
        !          8864:
        !          8865:        * testsudoers.c, lsearch.c, parse.c: kill register
        !          8866:
        !          8867: 2000-03-13 15:52  millert
        !          8868:
        !          8869:        * auth/passwd.c: HP-UX adds extra info at the end for password
        !          8870:          aging so when comparing the result of crypt to pw_passwd we only
        !          8871:          compare the first len(epass) bytes *unless* the user entered an
        !          8872:          empty string for a password.
        !          8873:
        !          8874: 2000-03-13 11:05  millert
        !          8875:
        !          8876:        * logging.c: Get rid of grandchild hack, it was causing problems
        !          8877:          and there is really no need for it.  This fixes a bug where we
        !          8878:          spin eating up CPU when the user runs a long-running process like
        !          8879:          a shell.
        !          8880:
        !          8881: 2000-03-07 14:26  millert
        !          8882:
        !          8883:        * sudo.c: User can always specify a login class if he/she is
        !          8884:          already root.
        !          8885:
        !          8886: 2000-03-06 23:29  millert
        !          8887:
        !          8888:        * config.h.in, configure, configure.in, defaults.c, defaults.h,
        !          8889:          sudo.c, sudo.h: FreeBSD login class (login.conf) support.
        !          8890:
        !          8891: 2000-03-06 14:42  millert
        !          8892:
        !          8893:        * auth/sudo_auth.c: HAVE_SECUREWARE -> HAVE_GETPRPWNAM; fixes
        !          8894:          secureware support
        !          8895:
        !          8896: 2000-03-03 18:04  millert
        !          8897:
        !          8898:        * auth/passwd.c: Truncate unencrypted password to 8 chars if
        !          8899:          encrypted password is exactly 13 characters (indicateing standard
        !          8900:          a DES password).  Many versions of crypt() do this for you, but
        !          8901:          not all (like HP-UX's).
        !          8902:
        !          8903: 2000-03-01 21:01  millert
        !          8904:
        !          8905:        * INSTALL, RUNSON: Mention that gcc on dynix may have problems
        !          8906:
        !          8907: 2000-02-29 17:46  millert
        !          8908:
        !          8909:        * Makefile.in: Link visudo with NET_LIBS since we now call syslog
        !          8910:          via defaults.c
        !          8911:
        !          8912: 2000-02-29 17:41  millert
        !          8913:
        !          8914:        * defaults.c: Use Argv[0] as the first arg to openlog() since
        !          8915:          visudo uses this too.
        !          8916:
        !          8917: 2000-02-28 18:58  millert
        !          8918:
        !          8919:        * sudo.c: Stash coredumpsize resource limit and retsore it before
        !          8920:          the exec() Otherwise the child ends up with a coredumpsize of 0.
        !          8921:
        !          8922: 2000-02-26 22:56  millert
        !          8923:
        !          8924:        * sudo.cat, sudo.man, sudo.pod: document -S flag
        !          8925:
        !          8926: 2000-02-26 22:54  millert
        !          8927:
        !          8928:        * sudo.c: fix usage string
        !          8929:
        !          8930: 2000-02-26 22:48  millert
        !          8931:
        !          8932:        * CHANGES, RUNSON, TODO, sudo.c, sudo.h, tgetpass.c,
        !          8933:          auth/aix_auth.c, auth/fwtk.c, auth/pam.c, auth/sudo_auth.c: Added
        !          8934:          -S flag (read passwd from stdin) and tgetpass_flags global that
        !          8935:          holds flags to be passed in to tgetpass().  Change echo_off param
        !          8936:          to tgetpass() into a flags field.  There are currently 2 possible
        !          8937:          flags for tgetpass(): TGP_ECHO and TGP_STDIN.  In tgetpass(),
        !          8938:          abstract the echo set/clear via macros and if (flags & TGP_ECHO)
        !          8939:          but echo is not set on the terminal, but sure to set it.
        !          8940:
        !          8941: 2000-02-26 22:11  millert
        !          8942:
        !          8943:        * tgetpass.c: Fixed a bug that caused an infinite loop when the
        !          8944:          password timeout was disabled.
        !          8945:
        !          8946: 2000-02-18 12:56  millert
        !          8947:
        !          8948:        * CHANGES, defaults.c, defaults.h, getspwuid.c, sudo.c, sudo.h,
        !          8949:          sudoers.cat, sudoers.man, sudoers.pod, visudo.c: Add rootpw,
        !          8950:          runaspw, and targetpw options.
        !          8951:
        !          8952: 2000-02-18 12:11  millert
        !          8953:
        !          8954:        * CHANGES, defaults.c, sudoers.cat, sudoers.man, sudoers.pod,
        !          8955:          visudo.c: enveditor -> env_editor
        !          8956:
        !          8957: 2000-02-15 19:07  millert
        !          8958:
        !          8959:        * BUGS, INSTALL, Makefile.in, README, configure, configure.in,
        !          8960:          sudo.cat, sudo.man, sudoers.cat, sudoers.man, version.h,
        !          8961:          visudo.cat, visudo.man: crank versino to 1.6.3
        !          8962:
        !          8963: 2000-02-15 19:03  millert
        !          8964:
        !          8965:        * INSTALL, TODO, defaults.c, defaults.h, sudoers.cat, sudoers.man,
        !          8966:          sudoers.pod, visudo.c: Add 'editor' and 'enveditor' sudoers
        !          8967:          defaults and make visudo honor them.  This means that visudo will
        !          8968:          now parse the sudoers file *before* it is edited so a bogus
        !          8969:          sudoers file will cause a warning to go to stderr.  Also, visudo
        !          8970:          checks the variables once--it does not check them after each
        !          8971:          editor run since that could be confusing.
        !          8972:
        !          8973: 2000-02-15 18:49  millert
        !          8974:
        !          8975:        * RUNSON: 1.6.2 -> 1.6.2p1
        !          8976:
        !          8977: 2000-02-15 18:36  millert
        !          8978:
        !          8979:        * check.c, sudo.c, sudo.h: Move user_is_exempt prototype into
        !          8980:          sudo.h
        !          8981:
        !          8982: 2000-02-13 13:38  millert
        !          8983:
        !          8984:        * configure, configure.in: Fix thinko, some && should have been ||
        !          8985:          in the last commit
        !          8986:
        !          8987: 2000-02-13 13:28  millert
        !          8988:
        !          8989:        * configure, configure.in: Don't initialized Makefile variables to
        !          8990:          be NULL since the user may want to import variables from their
        !          8991:          environment.
        !          8992:
        !          8993: 2000-02-03 21:09  millert
        !          8994:
        !          8995:        * configure, configure.in: typo
        !          8996:
        !          8997: 2000-01-27 15:01  millert
        !          8998:
        !          8999:        * INSTALL, RUNSON, configure, configure.in: Make pam work on HP-UX
        !          9000:          11.0;jaearick@colby.edu
        !          9001:
        !          9002: 2000-01-27 15:01  millert
        !          9003:
        !          9004:        * CHANGES: recent changes; prepare for 1.6.2p1
        !          9005:
        !          9006: 2000-01-26 23:31  millert
        !          9007:
        !          9008:        * find_path.c: Don't apply SECURE_PATH if user is example;
        !          9009:          jmknoble@pobox.com
        !          9010:
        !          9011: 2000-01-26 16:21  millert
        !          9012:
        !          9013:        * sudoers.cat, sudoers.man, sudoers.pod: Expanded docs on sudoers
        !          9014:          'defaults' options based on INSTALL file info.
        !          9015:
        !          9016: 2000-01-26 16:21  millert
        !          9017:
        !          9018:        * INSTALL: Fix some while lies
        !          9019:
        !          9020: 2000-01-24 10:48  millert
        !          9021:
        !          9022:        * Makefile.in: When making a bindist, link FAQ to TROUBLESHOOTING
        !          9023:          instead of copying.
        !          9024:
        !          9025: 2000-01-23 22:57  millert
        !          9026:
        !          9027:        * sudoers.cat, sudoers.man, sudoers.pod: Add netgroup caveat
        !          9028:
        !          9029: 2000-01-23 22:42  millert
        !          9030:
        !          9031:        * RUNSON: Last minute updates
        !          9032:
        !          9033: 2000-01-23 22:26  millert
        !          9034:
        !          9035:        * TROUBLESHOOTING: PAM entry
        !          9036:
        !          9037: 2000-01-23 22:23  millert
        !          9038:
        !          9039:        * auth/pam.c: correct a comment
        !          9040:
        !          9041: 2000-01-23 22:03  millert
        !          9042:
        !          9043:        * CHANGES, RUNSON: update for 1.6.2
        !          9044:
        !          9045: 2000-01-23 21:59  millert
        !          9046:
        !          9047:        * auth/pam.c: Better detection of PAM errors and fix custom prompts
        !          9048:          with PAM.  Based on patches from "Cloyce D. Spradling"
        !          9049:          <cloyce@headgear.org>
        !          9050:
        !          9051: 2000-01-20 11:15  millert
        !          9052:
        !          9053:        * snprintf.c: Cast ULONG_MAX to unsigned long long when comparing
        !          9054:          to an unsigned long long value.
        !          9055:
        !          9056: 2000-01-19 14:07  millert
        !          9057:
        !          9058:        * CHANGES, config.h.in, configure, configure.in, visudo.c: Fix
        !          9059:          sudoers locking in visudo.  We now lock the sudoers file itself,
        !          9060:          not the temp file (since locking the temp file can foul up
        !          9061:          editors).  The previous locking scheme didn't work because the fd
        !          9062:          was closed too early.
        !          9063:
        !          9064: 2000-01-19 13:37  millert
        !          9065:
        !          9066:        * configure, config.h.in, configure.in: Don't need test for
        !          9067:          ftruncate() any more.
        !          9068:
        !          9069: 2000-01-18 21:23  millert
        !          9070:
        !          9071:        * configure, configure.in: Add a test for the -Aa flag w/ HP-UX's
        !          9072:          cc.  Fixes compilation with the unbundled HP-UX cc.
        !          9073:
        !          9074: 2000-01-18 17:00  millert
        !          9075:
        !          9076:        * sudoers.cat, sudoers.man, sudoers.pod: "a a" -> "a"; Aaron
        !          9077:          Campbell <aaron@cs.dal.ca>
        !          9078:
        !          9079: 2000-01-17 18:46  millert
        !          9080:
        !          9081:        * LICENSE, Makefile.in, defaults.c, defaults.h, parse.c, parse.h,
        !          9082:          parse.yacc, sudo.c, sudo.h, sudoers.pod, testsudoers.c,
        !          9083:          tgetpass.c, version.h, visudo.c: update copyright year on changed
        !          9084:          files
        !          9085:
        !          9086: 2000-01-17 18:45  millert
        !          9087:
        !          9088:        * RUNSON: updates
        !          9089:
        !          9090: 2000-01-17 18:45  millert
        !          9091:
        !          9092:        * CHANGES: aix fix
        !          9093:
        !          9094: 2000-01-17 18:42  millert
        !          9095:
        !          9096:        * INSTALL: Crank version to 1.6.2
        !          9097:
        !          9098: 2000-01-17 18:11  millert
        !          9099:
        !          9100:        * configure: Crank version to 1.6.2
        !          9101:
        !          9102: 2000-01-17 17:46  millert
        !          9103:
        !          9104:        * sudo.c: When using rlimit check for RLIM_INFINITY When computing
        !          9105:          the value of maxfd, use min(getdtablesize(), RLIMIT_NOFILE)
        !          9106:
        !          9107: 2000-01-17 12:32  millert
        !          9108:
        !          9109:        * CHANGES: recent changes
        !          9110:
        !          9111: 2000-01-17 12:28  millert
        !          9112:
        !          9113:        * BUGS, Makefile.in, README, configure.in, sudo.cat, sudo.man,
        !          9114:          sudoers.cat, sudoers.man, version.h, visudo.cat, visudo.man:
        !          9115:          Crank version to 1.6.2
        !          9116:
        !          9117: 2000-01-17 12:25  millert
        !          9118:
        !          9119:        * INSTALL, defaults.c, defaults.h, sudo.c, sudo.h, sudoers.pod: Add
        !          9120:          'shell_noargs' runtime option back in.  We have to defer checking
        !          9121:          until after the sudoers file has been parsed but since there are
        !          9122:          now other options that operate that way this one can too.  Based
        !          9123:          on a patch from bguillory@email.com.
        !          9124:
        !          9125: 2000-01-16 23:05  millert
        !          9126:
        !          9127:        * defaults.c, defaults.h, parse.c, sudo.c, sudo.h: Add "listpw" and
        !          9128:          "verifypw" options.
        !          9129:
        !          9130: 2000-01-16 22:57  millert
        !          9131:
        !          9132:        * sudoers.cat, sudoers.man, sudoers.pod: o Fix some typos/omissions
        !          9133:          o Add section on verifypw and listpw o Define how NOPASSWD
        !          9134:          interacts with the -v and -l flags
        !          9135:
        !          9136: 2000-01-14 12:39  millert
        !          9137:
        !          9138:        * configure, configure.in: For HP-UX cc, add -Aa to CPPFLAGS.  For
        !          9139:          HP-UX always add -D_HPUX_SOURCE to CPPFLAGS.
        !          9140:
        !          9141: 2000-01-14 12:29  millert
        !          9142:
        !          9143:        * defaults.c, defaults.h: In struct sudo_defs_types, move the union
        !          9144:          to the end and don't initialize the union member since that only
        !          9145:          works with an ANSI compiler.  We set the value of the union by
        !          9146:          hand in init_defaults() anyway.  This allows sudo to compile on a
        !          9147:          K&R compiler again.
        !          9148:
        !          9149: 2000-01-11 13:20  millert
        !          9150:
        !          9151:        * parse.c, parse.h, parse.yacc, testsudoers.c, visudo.c:
        !          9152:          netgr_matches needs to check shost as well as host since they may
        !          9153:          be different.
        !          9154:
        !          9155: 2000-01-11 13:17  millert
        !          9156:
        !          9157:        * tgetpass.c: End on \r as well as \n
        !          9158:
        !          9159: 2000-01-02 23:53  millert
        !          9160:
        !          9161:        * sudo.c: Update statbuf.st_mode based on SUDOERS_MODE when we are
        !          9162:          chaning from 0400 to whatever SUDOERS_MODE is (converting from
        !          9163:          the old sudoers mode).  Assumes that SUDOERS_MODE is less
        !          9164:          restrictive than 0400 which should always be the case.
        !          9165:
        !          9166: 2000-01-02 23:43  millert
        !          9167:
        !          9168:        * parse.c, parse.yacc, sudo.c, sudo.h: Make treatment of -l and -v
        !          9169:          sane wrt NOPASSWD flags.  Now allow -l w/o a passwd if there is
        !          9170:          *any* entry for the user on the host with a NOPASSWD flag.  For
        !          9171:          -v, only allow w/o a passwd if *all* entries for the user on the
        !          9172:          host w/ the specified runas user have the NOPASSWD flag set.
        !          9173:
        !          9174: 2000-01-02 23:26  millert
        !          9175:
        !          9176:        * Makefile.in: add check target
        !          9177:
        !          9178: 1999-12-16 13:02  millert
        !          9179:
        !          9180:        * visudo.c: Treat EOF at whatnow prompt like 'x' instead of
        !          9181:          looping.
        !          9182:
        !          9183: 1999-12-10 00:09  millert
        !          9184:
        !          9185:        * CHANGES: recent changes
        !          9186:
        !          9187: 1999-12-08 23:04  millert
        !          9188:
        !          9189:        * config.h.in, configure, configure.in, sudo.c: Add check for
        !          9190:          initgroups() since old SYSV lacks this.
        !          9191:
        !          9192: 1999-12-08 22:54  millert
        !          9193:
        !          9194:        * CHANGES, RUNSON, aclocal.m4, config.h.in, configure,
        !          9195:          configure.in, parse.c, testsudoers.c: o Kill HAVE_FNMATCH_H o
        !          9196:          Only define HAVE_FNMATCH if <fnmatch.h> exists.
        !          9197:
        !          9198: 1999-12-06 01:47  millert
        !          9199:
        !          9200:        * CHANGES, RUNSON, insults.h, auth/sudo_auth.c: Don't allow insults
        !          9201:          to be enabled if the insults[] array is empty.  Otherwise there
        !          9202:          would be division by zero.
        !          9203:
        !          9204: 1999-12-06 01:25  millert
        !          9205:
        !          9206:        * insults.h: Don't care about USE_INSULTS #define since the insult
        !          9207:          stuff may be overridden at runtime.
        !          9208:
        !          9209: 1999-12-06 01:23  millert
        !          9210:
        !          9211:        * auth/sudo_auth.c: Honor insults flag.
        !          9212:
        !          9213: 1999-12-05 19:14  millert
        !          9214:
        !          9215:        * CHANGES, parse.c: Don't ask the user for a password if the user
        !          9216:          is not allowed to run the command and the authenticate flag (in
        !          9217:          sudoers) is false.
        !          9218:
        !          9219: 1999-12-05 19:05  millert
        !          9220:
        !          9221:        * CHANGES, RUNSON, lex.yy.c, parse.lex: o Whenever we get a bare
        !          9222:          newline we change to the INITIAL state.  o Enter GOTRUNAS when we
        !          9223:          see Runas_Alias
        !          9224:
        !          9225:          This allows #uid to work in a RunasAlias.
        !          9226:
        !          9227: 1999-12-05 14:06  millert
        !          9228:
        !          9229:        * CHANGES, parse.yacc: fix parsing of runas lists: o oprunasuser
        !          9230:          and runaslist now return a value o in a runasspec, if a runaslist
        !          9231:          does not return TRUE, set runas_matches to   FALSE.  Normally, a
        !          9232:          runaslist only returns FALSE for explicitly denied   users.  o
        !          9233:          since runaslist does not modify the stack there is no need for a
        !          9234:          push/pop   in runasalias.
        !          9235:
        !          9236: 1999-12-04 21:54  millert
        !          9237:
        !          9238:        * check.c, sudo.c: Don't kill the user's tickets until after
        !          9239:          sudoers has been parsed since tty_tickets and ticket_dir could be
        !          9240:          set in sudoers.
        !          9241:
        !          9242: 1999-12-04 21:18  millert
        !          9243:
        !          9244:        * BUGS, CHANGES, Makefile.binary, Makefile.in, README, RUNSON,
        !          9245:          configure, configure.in, sudo.cat, sudo.man, sudoers.cat,
        !          9246:          sudoers.man, tgetpass.c, version.h, visudo.cat, visudo.man: crank
        !          9247:          version to 1.6
        !          9248:
        !          9249: 1999-12-04 21:18  millert
        !          9250:
        !          9251:        * testsudoers.c: add set_fqdn() stub
        !          9252:
        !          9253: 1999-12-02 15:31  millert
        !          9254:
        !          9255:        * INSTALL, defaults.c, defaults.h, sudo.c, sudo.h, sudoers.cat,
        !          9256:          sudoers.man, sudoers.pod, visudo.c: o Kill shell_noargs option,
        !          9257:          it cannot work since the command needs to   be set before sudoers
        !          9258:          is parsed.  o Fix the "set_home" sudoers option (only worked at
        !          9259:          compile time).  o Fix "fqdn" sudoers option.  We now set
        !          9260:          host/shost via set_fqdn which   gets called when the "fqdn"
        !          9261:          option is set in sudoers.  o Move the openlog() to
        !          9262:          store_syslogfac() so this gets overridden   correctly from the
        !          9263:          sudoers file.
        !          9264:
        !          9265: 1999-12-02 15:21  millert
        !          9266:
        !          9267:        * auth/securid.c: SecurID support should compile now.
        !          9268:
        !          9269: 1999-11-28 20:56  millert
        !          9270:
        !          9271:        * sudo.pod, visudo.pod, sudo.cat, sudo.man, sudoers.man,
        !          9272:          visudo.man, sudoers.cat, visudo.cat: fix some syntactic goofs
        !          9273:
        !          9274: 1999-11-28 18:51  millert
        !          9275:
        !          9276:        * sudo.html, sudoers.html, Makefile.in, visudo.html: No longer need
        !          9277:          the .html files as they are generated automatically on the web
        !          9278:          site.
        !          9279:
        !          9280: 1999-11-28 18:49  millert
        !          9281:
        !          9282:        * CHANGES, LICENSE: kill characters that made wml unhappy
        !          9283:
        !          9284: 1999-11-28 18:34  millert
        !          9285:
        !          9286:        * HISTORY: typo
        !          9287:
        !          9288: 1999-11-25 12:05  millert
        !          9289:
        !          9290:        * README: majordomo@cs.colorado.edu -> majordomo@courtesan.com
        !          9291:
        !          9292: 1999-11-24 19:43  millert
        !          9293:
        !          9294:        * Makefile.in, configure: Wrap script execution w/ /bin/sh for the
        !          9295:          benefit of ctm
        !          9296:
        !          9297: 1999-11-23 22:52  millert
        !          9298:
        !          9299:        * sudo.c: Make the -s flag be exclusive too.  Also reorder the
        !          9300:          flags in the exclusive usage message so they are alphabetical.
        !          9301:
        !          9302: 1999-11-23 13:27  millert
        !          9303:
        !          9304:        * auth/pam.c: make pam errors other than PAM_PERM_DENIED fatal
        !          9305:
        !          9306: 1999-11-23 13:07  millert
        !          9307:
        !          9308:        * auth/API: fix typo
        !          9309:
        !          9310: 1999-11-23 13:07  millert
        !          9311:
        !          9312:        * INSTALL: make it clear that /etc/pam.d/sudo is required on linux
        !          9313:
        !          9314: 1999-11-23 13:06  millert
        !          9315:
        !          9316:        * auth/pam.c: fix a warning on redhat and spew an error if
        !          9317:          pam_authenticate() returns an error other than AUTH_SUCCESS or
        !          9318:          PAM_PERM_DENIED
        !          9319:
        !          9320: 1999-11-23 00:43  millert
        !          9321:
        !          9322:        * sudo.cat, sudo.html, sudo.man, sudo.pod: Be very clear that the
        !          9323:          password required is the user's not root's
        !          9324:
        !          9325: 1999-11-19 21:04  millert
        !          9326:
        !          9327:        * Makefile.in: add sample.syslog.conf to DISTFILES and BINFILES
        !          9328:
        !          9329: 1999-11-18 19:13  millert
        !          9330:
        !          9331:        * RUNSON: updates from Brian Jackson + some formatting
        !          9332:
        !          9333: 1999-11-17 21:39  millert
        !          9334:
        !          9335:        * INSTALL.binary, Makefile.binary, README, RUNSON: o One RUNSon
        !          9336:          update o Changes for automating real binary releases
        !          9337:
        !          9338: 1999-11-17 21:38  millert
        !          9339:
        !          9340:        * Makefile.in: Add bindist target
        !          9341:
        !          9342: 1999-11-16 16:26  millert
        !          9343:
        !          9344:        * TROUBLESHOOTING: talk about run-time options in addition to
        !          9345:          compile-time options
        !          9346:
        !          9347: 1999-11-16 01:16  millert
        !          9348:
        !          9349:        * CHANGES: fix typos
        !          9350:
        !          9351: 1999-11-16 01:09  millert
        !          9352:
        !          9353:        * sudo.c: need sys/time.h if HAVE_SETRLIMIT
        !          9354:
        !          9355: 1999-11-16 00:42  millert
        !          9356:
        !          9357:        * PORTING, README, RUNSON, sudo.c, sudo.cat, sudo.html, sudo.man,
        !          9358:          sudo.pod, visudo.cat, visudo.html, visudo.man, visudo.pod: get
        !          9359:          rid of references to sudo-bugs.  Now mention the web site or the
        !          9360:          sudo@ alias
        !          9361:
        !          9362: 1999-11-16 00:35  millert
        !          9363:
        !          9364:        * sudoers.html: repair pod2html damage
        !          9365:
        !          9366: 1999-11-16 00:28  millert
        !          9367:
        !          9368:        * RUNSON, TODO: Update for 1.6 release
        !          9369:
        !          9370: 1999-11-16 00:23  millert
        !          9371:
        !          9372:        * sudoers.cat, sudoers.html, sudoers.man, sudoers.pod: Add warning
        !          9373:          about using ALL in a command context.
        !          9374:
        !          9375: 1999-11-09 15:12  millert
        !          9376:
        !          9377:        * visudo.c: Call yyrestart() on a parse error to reset the lexer
        !          9378:          state.
        !          9379:
        !          9380: 1999-11-09 15:06  millert
        !          9381:
        !          9382:        * parse.lex, lex.yy.c: Don't need YY_FLUSH_BUFFER after all Move
        !          9383:          yyrestart() into visudo.c since it might not get called in yywrap
        !          9384:          if we get a parse error (and we only reread the file on error
        !          9385:          anyway).
        !          9386:
        !          9387: 1999-11-09 14:32  millert
        !          9388:
        !          9389:        * parse.lex, lex.yy.c: Call YY_FLUSH_BUFFER macro in yywrap() to
        !          9390:          clean up any buffers that might still exist.  Call yyrestart()
        !          9391:          instead of using the deprecated YY_NEW_FILE macro.
        !          9392:
        !          9393: 1999-11-09 12:13  millert
        !          9394:
        !          9395:        * lex.yy.c, parse.lex: flex doesn't need %N table size declarations
        !          9396:
        !          9397: 1999-11-08 19:00  millert
        !          9398:
        !          9399:        * sudoers.cat, sudoers.html, sudoers.man, sudoers.pod: Mention what
        !          9400:          characters need to be escaped in names.
        !          9401:
        !          9402: 1999-11-08 18:59  millert
        !          9403:
        !          9404:        * configure: regen
        !          9405:
        !          9406: 1999-11-08 18:59  millert
        !          9407:
        !          9408:        * INSTALL: clarify Mac OS X entry
        !          9409:
        !          9410: 1999-11-08 18:59  millert
        !          9411:
        !          9412:        * RUNSON: update
        !          9413:
        !          9414: 1999-11-08 17:45  millert
        !          9415:
        !          9416:        * configure.in: o Use AC_MSG_ERROR throughout o Check syslog
        !          9417:          configure options for danity
        !          9418:
        !          9419: 1999-11-05 17:11  millert
        !          9420:
        !          9421:        * defaults.c: Fix printing of type T_MODE in dump_defaults()
        !          9422:
        !          9423: 1999-11-05 12:00  millert
        !          9424:
        !          9425:        * strcasecmp.c: missing sys/types.h
        !          9426:
        !          9427: 1999-11-05 00:42  millert
        !          9428:
        !          9429:        * INSTALL: Break out options that may be overridden at run time
        !          9430:          into their own section.  Add a not about Max OS X and correct
        !          9431:          some lies.
        !          9432:
        !          9433: 1999-11-04 14:01  millert
        !          9434:
        !          9435:        * CHANGES, config.h.in, configure, configure.in, sudo.c: o Now use
        !          9436:          getrlimit to find the highest fd when closing all non-std fd's o
        !          9437:          Turn off core dumps via setrlimit for the sake of paranoia
        !          9438:
        !          9439: 1999-11-04 13:57  millert
        !          9440:
        !          9441:        * RUNSON: updates
        !          9442:
        !          9443: 1999-11-01 10:59  millert
        !          9444:
        !          9445:        * CHANGES: updates
        !          9446:
        !          9447: 1999-11-01 10:58  millert
        !          9448:
        !          9449:        * tgetpass.c: When read()'ing, do a single character at a time to
        !          9450:          be sure we don't go oast the newline.
        !          9451:
        !          9452: 1999-11-01 10:43  millert
        !          9453:
        !          9454:        * sudo.c: For the sudo_root option, check against user_uid, not
        !          9455:          getuid() since at this point, ruid == euid == 0.
        !          9456:
        !          9457: 1999-10-31 23:14  millert
        !          9458:
        !          9459:        * RUNSON: some updates
        !          9460:
        !          9461: 1999-10-31 23:14  millert
        !          9462:
        !          9463:        * logging.h: Fix compilation problem when --with-logging=file was
        !          9464:          specified.  This means that syslog is now required to build sudo
        !          9465:          but that should not be a problem.  If it is it can be fixed
        !          9466:          trivially with a configure check for syslog() or syslog.h.
        !          9467:
        !          9468: 1999-10-31 23:00  millert
        !          9469:
        !          9470:        * tgetpass.c: Make this work again for things like "sudo echo hi |
        !          9471:          more" where the tty gets put into character at a time mode.  We
        !          9472:          read until we read end of line or we run out of space (similar to
        !          9473:          fgets(3)).
        !          9474:
        !          9475: 1999-10-20 11:23  millert
        !          9476:
        !          9477:        * sudoers.cat, sudoers.html, sudoers.man, sudoers.pod: change ital
        !          9478:          to bold
        !          9479:
        !          9480: 1999-10-20 11:23  millert
        !          9481:
        !          9482:        * RUNSON: update
        !          9483:
        !          9484: 1999-10-16 13:56  millert
        !          9485:
        !          9486:        * defaults.c: Error out if syslog parameters are given without a
        !          9487:          value.  For Ultrix or 4.2BSD "syslog" is allowed without a value
        !          9488:          since there are no facilities in the 4.2BSD syslog.
        !          9489:
        !          9490: 1999-10-15 16:37  millert
        !          9491:
        !          9492:        * defaults.c: Ignore the syslog facility for systems w/ old syslog
        !          9493:          like Ultrix.
        !          9494:
        !          9495: 1999-10-15 12:51  millert
        !          9496:
        !          9497:        * TROUBLESHOOTING: people with "." early in their path can have
        !          9498:          problems running sudo from the build dir ;-)
        !          9499:
        !          9500: 1999-10-13 00:18  millert
        !          9501:
        !          9502:        * sudo.man, sudo.pod, sudo.cat, sudo.html: Remove -r realm option
        !          9503:
        !          9504: 1999-10-12 22:34  millert
        !          9505:
        !          9506:        * configure, configure.in, sudo.c, auth/kerb5.c, auth/sudo_auth.c,
        !          9507:          auth/sudo_auth.h: New krb5 code from Frank Cusack
        !          9508:          <fcusack@iconnet.net>.
        !          9509:
        !          9510: 1999-10-12 22:33  millert
        !          9511:
        !          9512:        * CHANGES: update to reality
        !          9513:
        !          9514: 1999-10-11 20:53  millert
        !          9515:
        !          9516:        * auth/fwtk.c: include <auth.h> to get function prototypes.
        !          9517:
        !          9518: 1999-10-11 20:05  millert
        !          9519:
        !          9520:        * sudo.cat, sudo.html, sudo.man, sudo.pod: document -L flag
        !          9521:
        !          9522: 1999-10-11 19:42  millert
        !          9523:
        !          9524:        * sudo.c: in set_perms(), always call setuid(0) before changing the
        !          9525:          ruid/euid so we always know it will succeed.
        !          9526:
        !          9527: 1999-10-11 12:24  millert
        !          9528:
        !          9529:        * defaults.h: #undef T_FOO to avoid conflicts with system defines
        !          9530:          (like on ULTRIX).
        !          9531:
        !          9532: 1999-10-11 11:55  millert
        !          9533:
        !          9534:        * TODO, sample.sudoers, sudoers.cat, sudoers.html, sudoers.man,
        !          9535:          sudoers.pod: Docuement "Defaults" lines in /etc/sudoers.  Still
        !          9536:          needs some fleshing out but this is a start.
        !          9537:
        !          9538: 1999-10-10 17:21  millert
        !          9539:
        !          9540:        * defaults.c: use strtol, not strtoul since not everyone has not
        !          9541:          strtoul
        !          9542:
        !          9543: 1999-10-10 15:01  millert
        !          9544:
        !          9545:        * lex.yy.c, parse.lex: last {WORD} rule should only apply in the
        !          9546:          INITIAL state
        !          9547:
        !          9548: 1999-10-10 14:38  millert
        !          9549:
        !          9550:        * lex.yy.c, parse.lex: o Add support for escaped characters in the
        !          9551:          WORD macro o Modify fill() to squash escape chars
        !          9552:
        !          9553: 1999-10-10 13:56  millert
        !          9554:
        !          9555:        * defaults.c, defaults.h: o Add T_PATH flag to allow simple sanity
        !          9556:          checks for default values that   are supposed to be pathnames.  o
        !          9557:          Fix a duplicate free when visudo finds an error.
        !          9558:
        !          9559: 1999-10-09 01:01  millert
        !          9560:
        !          9561:        * defaults.c, defaults.h, logging.c: mail_if_foo -> mail_foo
        !          9562:
        !          9563: 1999-10-07 21:12  millert
        !          9564:
        !          9565:        * compat.h, defaults.c, defaults.h, sudo.c, tgetpass.c: o Add
        !          9566:          requiretty option o Move O_NOCTTY to compat.h
        !          9567:
        !          9568: 1999-10-07 21:12  millert
        !          9569:
        !          9570:        * logging.c: The exit() in log_error() was mistakenly removed in a
        !          9571:          previous version.  Put it back...
        !          9572:
        !          9573: 1999-10-07 17:20  millert
        !          9574:
        !          9575:        * INSTALL, TODO, check.c, config.h.in, configure, configure.in,
        !          9576:          defaults.c, defaults.h, find_path.c, getspwuid.c, lex.yy.c,
        !          9577:          logging.c, parse.yacc, sudo.c, auth/aix_auth.c, auth/fwtk.c,
        !          9578:          auth/pam.c, auth/rfc1938.c, auth/sia.c, auth/sudo_auth.c: o
        !          9579:          Change defaults stuff to put the value right in the struct.  o
        !          9580:          Implement mailer_flags o Store syslog stuff both in int and
        !          9581:          string form.  Setting the string   form magically updates the int
        !          9582:          version.  o Add boolean attribute to strings where it makes sense
        !          9583:          to say !foo
        !          9584:
        !          9585: 1999-10-07 17:13  millert
        !          9586:
        !          9587:        * tgetpass.c: add O_NOCTTY when opening /dev/tty just in case
        !          9588:
        !          9589: 1999-10-06 00:48  millert
        !          9590:
        !          9591:        * auth/API: cleanup function no longer takes a status arg
        !          9592:
        !          9593: 1999-10-06 00:48  millert
        !          9594:
        !          9595:        * INSTALL: the the
        !          9596:
        !          9597: 1999-09-15 05:15  millert
        !          9598:
        !          9599:        * TODO, config.h.in, configure, configure.in, logging.c: Use
        !          9600:          strftime() instead of ctime() if it is available.
        !          9601:
        !          9602: 1999-09-14 12:58  millert
        !          9603:
        !          9604:        * defaults.c: fix copyright date
        !          9605:
        !          9606: 1999-09-14 12:57  millert
        !          9607:
        !          9608:        * RUNSON: update ReliantUNIX entry
        !          9609:
        !          9610: 1999-09-14 12:56  millert
        !          9611:
        !          9612:        * defaults.c, defaults.h, logging.c: add log_year option
        !          9613:
        !          9614: 1999-09-14 04:01  millert
        !          9615:
        !          9616:        * configure, configure.in: add --without-sendmail to help output
        !          9617:
        !          9618: 1999-09-14 03:42  millert
        !          9619:
        !          9620:        * configure, configure.in: enforce an otctal arg for
        !          9621:          --with-suoders-mode
        !          9622:
        !          9623: 1999-09-08 04:06  millert
        !          9624:
        !          9625:        * BUGS, INSTALL, Makefile.in, TODO, aclocal.m4, check.c,
        !          9626:          config.h.in, configure, configure.in, defaults.c, defaults.h,
        !          9627:          find_path.c, lex.yy.c, logging.c, parse.h, parse.lex, parse.yacc,
        !          9628:          sudo.c, sudo.h, sudo.tab.h, testsudoers.c, version.c, visudo.c,
        !          9629:          auth/aix_auth.c, auth/fwtk.c, auth/kerb5.c, auth/pam.c,
        !          9630:          auth/rfc1938.c, auth/sia.c, auth/sudo_auth.c: Add support for
        !          9631:          "Defaults" line in sudoers to make configuration variables
        !          9632:          changable at runtime (and on a global, per-host and per-user
        !          9633:          basis).  Both the names and the internal representation are still
        !          9634:          subject to change.  It was necessary to make sudo_user.runas but
        !          9635:          a char ** instead of a char * since this value can be changed by
        !          9636:          a Defaults line.  There is a similar (but more complicated) issue
        !          9637:          with sudo_user.prompt but it is handled differently at the
        !          9638:          moment.
        !          9639:
        !          9640:          Add a "-L" flag to list the name of options with their
        !          9641:          descriptions.  This may only be temporary.
        !          9642:
        !          9643:          Move some prototypes to parse.h
        !          9644:
        !          9645:          Be much less restrictive on what is allowed for a username.
        !          9646:
        !          9647: 1999-09-08 04:01  millert
        !          9648:
        !          9649:        * sample.syslog.conf: Add more info
        !          9650:
        !          9651: 1999-09-04 03:09  millert
        !          9652:
        !          9653:        * fnmatch.3, fnmatch.c, getcwd.c, lsearch.c, snprintf.c,
        !          9654:          strcasecmp.c, LICENSE: UCB has dropped the advertising clause
        !          9655:          from their license.
        !          9656:
        !          9657: 1999-08-31 05:39  millert
        !          9658:
        !          9659:        * auth/sudo_auth.h: move dce_verofy proto to correct section
        !          9660:
        !          9661: 1999-08-31 05:39  millert
        !          9662:
        !          9663:        * auth/dce.c: remove XXX
        !          9664:
        !          9665: 1999-08-28 06:00  millert
        !          9666:
        !          9667:        * emul/fnmatch.h: Add fnmatch() prototype
        !          9668:
        !          9669: 1999-08-28 06:00  millert
        !          9670:
        !          9671:        * fnmatch.c, parse.c, testsudoers.c: Move inclusion of
        !          9672:          emul/fnmatch.h to be after sudo.h for __P
        !          9673:
        !          9674: 1999-08-28 05:59  millert
        !          9675:
        !          9676:        * sudo.h: add strcasecmp proto
        !          9677:
        !          9678: 1999-08-28 05:50  millert
        !          9679:
        !          9680:        * auth/sudo_auth.c: add check for case where there are no auth
        !          9681:          methods
        !          9682:
        !          9683: 1999-08-28 05:36  millert
        !          9684:
        !          9685:        * configure, configure.in: Define _XOPEN_EXTENDED_SOURCE on AIX and
        !          9686:          __USE_FIXED_PROTOTYPES__ on SunOS4 w/ gcc
        !          9687:
        !          9688: 1999-08-28 05:24  millert
        !          9689:
        !          9690:        * getspwuid.c, lex.yy.c, parse.lex, parse.yacc: include strings.h
        !          9691:          everywhere we include string.h
        !          9692:
        !          9693: 1999-08-28 05:22  millert
        !          9694:
        !          9695:        * version.c: nicer output when showing auth methods
        !          9696:
        !          9697: 1999-08-28 05:00  millert
        !          9698:
        !          9699:        * version.c: Add support for SEND_MAIL_WHEN_NO_HOST
        !          9700:
        !          9701: 1999-08-28 04:49  millert
        !          9702:
        !          9703:        * config.h.in, configure.in, configure: Add _GNU_SOURCE for Linux
        !          9704:
        !          9705: 1999-08-28 04:22  millert
        !          9706:
        !          9707:        * parse.lex, lex.yy.c: fix definition of OCTECT
        !          9708:
        !          9709: 1999-08-28 04:10  millert
        !          9710:
        !          9711:        * configure, configure.in: aix_auth.o not authenticate.o
        !          9712:
        !          9713: 1999-08-27 17:02  millert
        !          9714:
        !          9715:        * sudo.c: Only block SIGINT, SIGQUIT, SIGTSTP (which can be
        !          9716:          generated from the keyboard).  Since we run with ruid/euid == 0
        !          9717:          the user can't really signal us in nasty ways.
        !          9718:
        !          9719: 1999-08-27 17:01  millert
        !          9720:
        !          9721:        * visudo.c: Don't need to worry about catching too many signals
        !          9722:          since we do locking on the tmp file.  If a lockfile is really
        !          9723:          stale, it will be detected and overwritten.
        !          9724:
        !          9725: 1999-08-27 16:09  millert
        !          9726:
        !          9727:        * INSTALL, Makefile.in: include auth/API in tarball
        !          9728:
        !          9729: 1999-08-27 16:09  millert
        !          9730:
        !          9731:        * auth/sudo_auth.c: move memset() of plaintext pw outside of verify
        !          9732:          loop and only do the memset if we are *not* in standalone mode.
        !          9733:
        !          9734: 1999-08-27 13:46  millert
        !          9735:
        !          9736:        * auth/: sudo_auth.c, sudo_auth.h: DCE is not a standalone method
        !          9737:
        !          9738: 1999-08-27 11:53  millert
        !          9739:
        !          9740:        * sudo.c: fix --enable-noargs-shell
        !          9741:
        !          9742: 1999-08-27 11:06  millert
        !          9743:
        !          9744:        * snprintf.c: "#ifdef __STDC__" not "#if __STDC__" (I missed one)
        !          9745:
        !          9746: 1999-08-27 10:54  millert
        !          9747:
        !          9748:        * auth/: fwtk.c, sia.c: _cleanup() function returns an int.
        !          9749:
        !          9750: 1999-08-27 10:50  millert
        !          9751:
        !          9752:        * auth/dce.c: there were still some return(0)'s hanging around,
        !          9753:          make them AUTH_FAILURE
        !          9754:
        !          9755: 1999-08-27 10:39  millert
        !          9756:
        !          9757:        * parse.c: typo in comment
        !          9758:
        !          9759: 1999-08-27 10:03  millert
        !          9760:
        !          9761:        * version.c: add missing semicolon
        !          9762:
        !          9763: 1999-08-27 08:31  millert
        !          9764:
        !          9765:        * auth/sudo_auth.h: missing backslash
        !          9766:
        !          9767: 1999-08-26 17:24  millert
        !          9768:
        !          9769:        * CHANGES, config.h.in, configure, configure.in: Kill
        !          9770:          _XOPEN_EXTENDED_SOURCE -- causes problems on some OSes
        !          9771:
        !          9772: 1999-08-26 09:21  millert
        !          9773:
        !          9774:        * Makefile.in: add parse.h to HDRS
        !          9775:
        !          9776: 1999-08-26 09:16  millert
        !          9777:
        !          9778:        * Makefile.in, configure, configure.in: Kill VISUDO_LIBS and
        !          9779:          VISUDO_LDFLAGS.  Add LIBS, NET_LIBS, and LDFLAGS.  Common libs go
        !          9780:          in LIBS, commong ld flags go in LDFLAGS and network libs like
        !          9781:          -lsocket, -lnsl go in NET_LIBS.  This allows testsudoers to build
        !          9782:          on Solaris and is a bit cleaner in general.
        !          9783:
        !          9784: 1999-08-26 06:56  millert
        !          9785:
        !          9786:        * UPGRADE: mention ptmp -> sudoers.tmp
        !          9787:
        !          9788: 1999-08-26 06:12  millert
        !          9789:
        !          9790:        * configure.in, configure, config.h.in: Define
        !          9791:          _XOPEN_SOURCE_EXTENDED not _XOPEN_SOURCE
        !          9792:
        !          9793: 1999-08-26 05:37  millert
        !          9794:
        !          9795:        * RUNSON: add 2 reports
        !          9796:
        !          9797: 1999-08-26 05:20  millert
        !          9798:
        !          9799:        * auth/kerb5.c: Minor changes, mostly cosmetic.
        !          9800:          verify_krb_v5_tgt() changed to return a value  more like a system
        !          9801:          function
        !          9802:
        !          9803: 1999-08-26 05:19  millert
        !          9804:
        !          9805:        * auth/dce.c: Add an XXX
        !          9806:
        !          9807: 1999-08-26 05:19  millert
        !          9808:
        !          9809:        * TODO: more things todo!
        !          9810:
        !          9811: 1999-08-26 05:18  millert
        !          9812:
        !          9813:        * sample.sudoers: update based on what is in the man page
        !          9814:
        !          9815: 1999-08-26 05:10  millert
        !          9816:
        !          9817:        * parse.yacc: minor change to first line printed in -l mode
        !          9818:
        !          9819: 1999-08-26 05:10  millert
        !          9820:
        !          9821:        * sudo.cat, sudo.html, sudo.man, sudo.pod: rename "ENVIRONMENT
        !          9822:          VARIABLES" section to "ENVIRONMENT" to be more standard and add
        !          9823:          "EXAMPLES" section
        !          9824:
        !          9825: 1999-08-26 05:08  millert
        !          9826:
        !          9827:        * visudo.cat, visudo.html, visudo.man, visudo.pod: rename
        !          9828:          "ENVIRONMENT VARIABLES" section to "ENVIRONMENT" to be more
        !          9829:          standard
        !          9830:
        !          9831: 1999-08-26 05:06  millert
        !          9832:
        !          9833:        * logging.c, parse.c, sudo.h: add FLAG_NO_CHECK
        !          9834:
        !          9835: 1999-08-26 05:05  millert
        !          9836:
        !          9837:        * parse.lex, lex.yy.c: make an OCTET really be limited to 0-255
        !          9838:
        !          9839: 1999-08-26 05:04  millert
        !          9840:
        !          9841:        * UPGRADE: mention timestamp changes
        !          9842:
        !          9843: 1999-08-26 05:04  millert
        !          9844:
        !          9845:        * PORTING: cosmetic cleanup
        !          9846:
        !          9847: 1999-08-26 05:00  millert
        !          9848:
        !          9849:        * sudoers.cat, sudoers.html, sudoers.man, sudoers.pod: new
        !          9850:          sudoers(8) man page
        !          9851:
        !          9852: 1999-08-24 13:45  millert
        !          9853:
        !          9854:        * version.c: Update comments about syslog name tables
        !          9855:
        !          9856: 1999-08-24 13:37  millert
        !          9857:
        !          9858:        * CHANGES, LICENSE, Makefile.in, configure, strcasecmp.c,
        !          9859:          configure.in, parse.yacc: include strcasecmp() for those without
        !          9860:          it
        !          9861:
        !          9862: 1999-08-24 12:43  millert
        !          9863:
        !          9864:        * sample.sudoers: Use the : operator some more and fix a typo
        !          9865:
        !          9866: 1999-08-24 12:43  millert
        !          9867:
        !          9868:        * HISTORY: update the history of sudo
        !          9869:
        !          9870: 1999-08-24 12:42  millert
        !          9871:
        !          9872:        * parse.c, parse.lex, testsudoers.c: CIDR-style netmask support
        !          9873:
        !          9874: 1999-08-24 12:41  millert
        !          9875:
        !          9876:        * CHANGES: recent changes
        !          9877:
        !          9878: 1999-08-24 12:40  millert
        !          9879:
        !          9880:        * sudo.tab.h: these should be generated with byacc, not bison
        !          9881:
        !          9882: 1999-08-24 12:40  millert
        !          9883:
        !          9884:        * lex.yy.c: regen
        !          9885:
        !          9886: 1999-08-24 11:58  millert
        !          9887:
        !          9888:        * parse.h, parse.yacc, sudo.tab.h: In "sudo -l" mode, the type of
        !          9889:          the stored (expanded) alias was not stored with the contents.
        !          9890:          This could lead to incorrect output if the sudoers file had
        !          9891:          different alias types with the same name.  Normal parsing (ie:
        !          9892:          not in '-l' mode) is unaffected.
        !          9893:
        !          9894: 1999-08-23 12:47  millert
        !          9895:
        !          9896:        * configure, configure.in: define _XOPEN_SOURCE to get at crypt()
        !          9897:          proto on some systems
        !          9898:
        !          9899: 1999-08-22 13:10  millert
        !          9900:
        !          9901:        * snprintf.c: fix comment
        !          9902:
        !          9903: 1999-08-22 13:09  millert
        !          9904:
        !          9905:        * tgetpass.c: don't need limits.h
        !          9906:
        !          9907: 1999-08-22 07:36  millert
        !          9908:
        !          9909:        * snprintf.c: kill bogus reference to vfprintf
        !          9910:
        !          9911: 1999-08-22 07:26  millert
        !          9912:
        !          9913:        * sample.sudoers, sudoers: better examples
        !          9914:
        !          9915: 1999-08-22 07:23  millert
        !          9916:
        !          9917:        * snprintf.c: Add some const in the K&R defs.  This is safe since
        !          9918:          we define const away if the compiler doesn't grok it.
        !          9919:
        !          9920: 1999-08-22 07:22  millert
        !          9921:
        !          9922:        * aclocal.m4, configure: Better test for working long long support.
        !          9923:          Ultrix compiler supports basic long long but not all operations
        !          9924:          on them.
        !          9925:
        !          9926: 1999-08-22 05:59  millert
        !          9927:
        !          9928:        * aclocal.m4, config.h.in, configure, getspwuid.c, snprintf.c,
        !          9929:          sudo.c, auth/secureware.c: Add check for LONG_IS_QUAD #undef
        !          9930:          MAXINT before including hpsecurity.h to silence an HP-UX warning
        !          9931:          Check for U?LONG_LONG_MAX in snprintf.c and use LONG_IS_QUAD
        !          9932:
        !          9933: 1999-08-21 15:00  millert
        !          9934:
        !          9935:        * LICENSE, aclocal.m4, config.h.in, configure, configure.in,
        !          9936:          snprintf.c: UCB-derived snprintf + asprintf support.  Supports
        !          9937:          quads if the compiler does.  No floating point yet, perhaps
        !          9938:          later...
        !          9939:
        !          9940: 1999-08-20 16:37  millert
        !          9941:
        !          9942:        * check.c, find_path.c, goodpath.c, logging.c, parse.c, sudo.c,
        !          9943:          auth/API, auth/sudo_auth.c, auth/sudo_auth.h: Run most of the
        !          9944:          code as root, not the invoking user.  It doesn't really gain us
        !          9945:          anything to run as the user since an attacker can just have an
        !          9946:          setuid(0) in their egg.  Running as root solves potential
        !          9947:          problems wrt signalling.
        !          9948:
        !          9949: 1999-08-19 13:45  millert
        !          9950:
        !          9951:        * logging.c, sudo.c: Don't wait for child to finish in log_error(),
        !          9952:          let the signal handler get it if we are still running, else let
        !          9953:          init reap it for us.  The extra time it takes to wait lets the
        !          9954:          user know that mail is being sent.
        !          9955:
        !          9956:          Install SIGCHLD handler in main() and for POSIX signals, block
        !          9957:          everything *except* SIGCHLD.
        !          9958:
        !          9959: 1999-08-19 12:30  millert
        !          9960:
        !          9961:        * logging.c, parse.c, parse.yacc, sudo.c, configure, sudo.h,
        !          9962:          INSTALL, config.h.in, configure.in: sudoers_lookup() now returns
        !          9963:          a bitmap instead of an int.  This makes it possible to express
        !          9964:          things like "failed to validate because user not listed for this
        !          9965:          host".  Some thigns that were previously VALIDATE_FOO are now
        !          9966:          FLAG_FOO.  This may change later on.
        !          9967:
        !          9968:          Reorganized code in log_auth() and sudo.c to deal with above
        !          9969:          changes.
        !          9970:
        !          9971:          Safer versions of push/pushcp with in the do { ... } while (0)
        !          9972:          style
        !          9973:
        !          9974:          parse.yacc now saves info on the stack to allow parse.c to
        !          9975:          determine if a user was listed, but not for the host he/she tried
        !          9976:          to run on.
        !          9977:
        !          9978:          Added --with-mail-if-no-host option
        !          9979:
        !          9980: 1999-08-17 11:29  millert
        !          9981:
        !          9982:        * parse.yacc, sudo.h, visudo.c, visudo.cat, visudo.html,
        !          9983:          visudo.man, visudo.pod: o NewArgv and NewArgc don't need to be
        !          9984:          externally visible.  o If pedantic > 1, it is a parse error.  o
        !          9985:          Add -s (strict) option to visudo which sets pedantic to 2.
        !          9986:
        !          9987: 1999-08-17 11:26  millert
        !          9988:
        !          9989:        * HISTORY, INSTALL: Just have sudo-bugs contact info in one place
        !          9990:
        !          9991: 1999-08-17 11:20  millert
        !          9992:
        !          9993:        * sudo.cat, sudo.html, sudo.man, sudo.pod: Add BUGS section
        !          9994:
        !          9995: 1999-08-17 10:29  millert
        !          9996:
        !          9997:        * configure, configure.in, Makefile.in: Add testsudoers to default
        !          9998:          build target if --with-devel Don't clean generated parser files
        !          9999:          unless "distclean".
        !          10000:
        !          10001: 1999-08-17 08:47  millert
        !          10002:
        !          10003:        * parse.yacc: In pedantic mode we need to save *all* the aliases,
        !          10004:          not just those that match, or we get spurious warnings.
        !          10005:
        !          10006: 1999-08-17 05:32  millert
        !          10007:
        !          10008:        * TROUBLESHOOTING: reference samples.sylog.conf
        !          10009:
        !          10010: 1999-08-14 11:50  millert
        !          10011:
        !          10012:        * sample.syslog.conf: Sample entries for syslog.conf
        !          10013:
        !          10014: 1999-08-14 11:40  millert
        !          10015:
        !          10016:        * CHANGES: recent changes
        !          10017:
        !          10018: 1999-08-14 11:36  millert
        !          10019:
        !          10020:        * auth/: API, afs.c, aix_auth.c, dce.c, fwtk.c, kerb4.c, kerb5.c,
        !          10021:          pam.c, passwd.c, rfc1938.c, secureware.c, securid.c, sia.c,
        !          10022:          sudo_auth.c, sudo_auth.h: In struct sudo_auth, turn need_root and
        !          10023:          configured into flags and add a flag to specify an auth method is
        !          10024:          running alone (the only one).  Pass auth methods their sudo_auth
        !          10025:          pointer, not the data pointer.  This allows us to get at the
        !          10026:          flags and tell if we are the only auth method.  That, in turn,
        !          10027:          allows the method to be able to decide what should/should not be
        !          10028:          a fatal error.  Currently only rfc1938 uses it this way, which
        !          10029:          allows us to kill the OTP_ONLY define and te hackery that went
        !          10030:          with it.  With access to the sudo_auth struct, methods can also
        !          10031:          get at a string holding their cannonical name (useful in error
        !          10032:          messages).
        !          10033:
        !          10034: 1999-08-14 11:34  millert
        !          10035:
        !          10036:        * Makefile.in, INSTALL, README, config.h.in, configure,
        !          10037:          configure.in, getspwuid.c, lex.yy.c, parse.lex, parse.yacc,
        !          10038:          sudo.tab.h: o --with-otp deprecated, use --without-passwd instead
        !          10039:          o real dependencies in the Makefile o --with-devel option to
        !          10040:          enable yacc, lex, and -Wall o style -- "foo -> bar" becomes
        !          10041:          "foo->bar" o ALL goes back to being a token, not a string but
        !          10042:          don't leak memory o rename hsotspec -> host in parse.yacc
        !          10043:
        !          10044: 1999-08-12 12:26  millert
        !          10045:
        !          10046:        * BUGS, CHANGES: recent changes
        !          10047:
        !          10048: 1999-08-12 12:24  millert
        !          10049:
        !          10050:        * configure, configure.in, interfaces.c, snprintf.c, sudo.c,
        !          10051:          sudo.h, auth/sudo_auth.c: o Digital UNIX needs to check for
        !          10052:          *snprintf() before -ldb is added to LIBS since -ldb includes a
        !          10053:          bogus snprintf().  o Add forward refs for struct mbuf and struct
        !          10054:          rtentry for Digital UNIX.  o Reorder some functions in snprintf.c
        !          10055:          to fix -Wall o Add missing includes to fix more -Wall
        !          10056:
        !          10057: 1999-08-12 10:37  millert
        !          10058:
        !          10059:        * INSTALL, check.c, config.h.in, configure, configure.in,
        !          10060:          parse.yacc, testsudoers.c, version.c, visudo.c, auth/sudo_auth.c:
        !          10061:          o Add a "pedentic" flag to the parser.  This makes sudo warn in
        !          10062:          cases where an alias may be used before it is defined.  Only
        !          10063:          turned on for visudo and testsudoers.  o Add
        !          10064:          --disable-authentication option that makes sudo not require
        !          10065:          authentication by default.  The PASSWD tag can be used to require
        !          10066:          authentication for an entry.  We no longer overload
        !          10067:          --without-passwd.
        !          10068:
        !          10069: 1999-08-12 10:29  millert
        !          10070:
        !          10071:        * lex.yy.c, parse.lex: Break 'WORD' regexp def into HOSTNAME and
        !          10072:          USERNAME.  These days a username can contain just about anything
        !          10073:          so be very permissive.  Also drop the unused \. punctuation.
        !          10074:
        !          10075: 1999-08-09 18:25  millert
        !          10076:
        !          10077:        * parse.yacc: o add a 'val' element to aliasinfo struct and move ->
        !          10078:          parse.h o find_alias() now returns an aliasinfo * instead of
        !          10079:          boolean o add_alias() now takes a value parameter to store in the
        !          10080:          aliasinfo.val o The cmnd, hostspec, runasuser, and user rules now
        !          10081:          return: 1) positive match 0) negative match (due to '!') -1) no
        !          10082:          match This means setting $$ explicitly in all cases, which I
        !          10083:          should have done in the first place.  It also means that we
        !          10084:          always store a value that is != -1 and when we see a '!' we can
        !          10085:          set *_matches to !rv if rv != -1.  The upshot of all of this is
        !          10086:          that '!' now works the way it should in lists and some of the
        !          10087:          rules are more uniform and sensible.
        !          10088:
        !          10089: 1999-08-09 18:17  millert
        !          10090:
        !          10091:        * Makefile.in: add parse.h dependency
        !          10092:
        !          10093: 1999-08-09 18:17  millert
        !          10094:
        !          10095:        * parse.h: kill unused *_matched macros
        !          10096:
        !          10097: 1999-08-09 10:35  millert
        !          10098:
        !          10099:        * parse.yacc: Allow a list of users as the first thing in a user
        !          10100:          spec, not just a single entry.  This makes things more uniform,
        !          10101:          though it does allow you to write user specs that are hard to
        !          10102:          read.
        !          10103:
        !          10104: 1999-08-09 10:08  millert
        !          10105:
        !          10106:        * configure: regen
        !          10107:
        !          10108: 1999-08-09 10:08  millert
        !          10109:
        !          10110:        * configure.in: fix check for crypt() in libufc
        !          10111:
        !          10112: 1999-08-07 14:03  millert
        !          10113:
        !          10114:        * README: sudo-users list now exists
        !          10115:
        !          10116: 1999-08-07 07:46  millert
        !          10117:
        !          10118:        * INSTALL, PORTING, README, TODO, TROUBLESHOOTING: Update to
        !          10119:          reality.
        !          10120:
        !          10121: 1999-08-07 05:59  millert
        !          10122:
        !          10123:        * CHANGES, Makefile.in, TODO, TROUBLESHOOTING, check.c, compat.h,
        !          10124:          config.h.in, configure.in, logging.c, sudo.h, version.c,
        !          10125:          visudo.c, configure, fileops.c: o Move lock_file() and touch()
        !          10126:          into fileops.c so visudo can use them o Visudo now locks the
        !          10127:          sudoers temp file instead of bailing when the temp file already
        !          10128:          exists.  This fixes the problem of stale temp files but it does
        !          10129:          *require* that you not try to put the temp file in a
        !          10130:          world-writable directory.  This shoud not be an issue as the temp
        !          10131:          file should live in the same dir as sudoers.  o Visudo now only
        !          10132:          installs the temp file as sudoers if it changed.
        !          10133:
        !          10134: 1999-08-06 09:49  millert
        !          10135:
        !          10136:        * logging.c: add fcntl locking
        !          10137:
        !          10138: 1999-08-06 09:33  millert
        !          10139:
        !          10140:        * configure, config.h.in, configure.in, logging.c: Lock the log
        !          10141:          file.
        !          10142:
        !          10143: 1999-08-06 05:36  millert
        !          10144:
        !          10145:        * Makefile.in, TROUBLESHOOTING, parse.c, pathnames.h.in, sudo.c,
        !          10146:          visudo.c, visudo.cat, visudo.html, visudo.man, visudo.pod: o
        !          10147:          /etc/stmp -> /etc/sudoers.tmp since solaris uses stmp as shadow
        !          10148:          temp file o _PATH_SUDO_SUDOERS -> _PATH_SUDOERS and
        !          10149:          _PATH_SUDO_STMP -> _PATH_SUDOERS_TMP
        !          10150:
        !          10151: 1999-08-05 17:38  millert
        !          10152:
        !          10153:        * INSTALL, check.c, config.h.in, configure, configure.in,
        !          10154:          version.c: o Kill *_MESSAGE and replace with NO_LECTURE o Add
        !          10155:          more things to root sudo -V config reporting
        !          10156:
        !          10157: 1999-08-05 10:56  millert
        !          10158:
        !          10159:        * configure, configure.in: aix_auth.o not authenticate.o
        !          10160:
        !          10161: 1999-08-05 10:48  millert
        !          10162:
        !          10163:        * config.h.in: Add --with-goodpri and --with-badpri configure
        !          10164:          options to specify the syslog priority to use.
        !          10165:
        !          10166: 1999-08-05 10:30  millert
        !          10167:
        !          10168:        * INSTALL, configure.in, logging.h, configure: Add --with-goodpri
        !          10169:          and --with-badpri configure options to specify the syslog
        !          10170:          priority to use.
        !          10171:
        !          10172: 1999-08-05 10:25  millert
        !          10173:
        !          10174:        * compat.h: kill crufty AIX stuff
        !          10175:
        !          10176: 1999-08-05 06:55  millert
        !          10177:
        !          10178:        * Makefile.in: Sigh, some versions of make (like Solaris's) don't
        !          10179:          deal with $< like I would expect.  Both GNU and BSD makes get
        !          10180:          this right but...  So, we just expand $< inline at the cost of
        !          10181:          some ugliness.
        !          10182:
        !          10183: 1999-08-05 06:52  millert
        !          10184:
        !          10185:        * version.c: If the invoking user is root, sudo will now print
        !          10186:          configure info in -V mode.  Currently just prints logging info,
        !          10187:          to be expanded later.
        !          10188:
        !          10189: 1999-08-05 06:51  millert
        !          10190:
        !          10191:        * logging.c, logging.h, sudo.c, sudo.h: o new defines for syslog
        !          10192:          facility and priority o use new print_version() functino for -V
        !          10193:          mode
        !          10194:
        !          10195: 1999-08-05 06:49  millert
        !          10196:
        !          10197:        * check.c: Don't need version.c
        !          10198:
        !          10199: 1999-08-05 06:21  millert
        !          10200:
        !          10201:        * configure, configure.in, aclocal.m4, config.h.in: Add check for
        !          10202:          syslog facilities and priorities tables in syslog.h
        !          10203:
        !          10204: 1999-08-05 05:23  millert
        !          10205:
        !          10206:        * Makefile.in: o authenticate -> aix_auth o add version.c
        !          10207:
        !          10208: 1999-08-05 05:21  millert
        !          10209:
        !          10210:        * auth/sudo_auth.c: Missed a prompt -> user_prompt conversion
        !          10211:
        !          10212: 1999-08-04 13:32  millert
        !          10213:
        !          10214:        * TODO: sudo should lock its logfile
        !          10215:
        !          10216: 1999-08-04 13:28  millert
        !          10217:
        !          10218:        * parse.yacc: o Add '!' correctly when expanding Aliases.  o Add
        !          10219:          shortcut macros for append() to make things more readable.  o The
        !          10220:          separator in append() is now a string instead of a char.  o In
        !          10221:          append(), only prepend the separator if the last char is not a
        !          10222:          '!'.    This is a hack but it greatly simplifies '!' handling.  o
        !          10223:          In -l mode, Runas lists and NOPASSWD/PASSWD tags are now
        !          10224:          inherited   across entries in a list (matches current behavior).
        !          10225:          o Fix formatting in -l mode such that items in a list are
        !          10226:          separated by   a space.  Greatlt improves readability.  o Space
        !          10227:          for name field in struct aliasinfo is now allocated dyanically
        !          10228:          instead of using a (big) buffer.  o In add_alias(), only search
        !          10229:          the list once (lsearch instead of lfind + lsearch)
        !          10230:
        !          10231: 1999-08-04 11:31  millert
        !          10232:
        !          10233:        * lex.yy.c, sudo.tab.h: regen
        !          10234:
        !          10235: 1999-08-04 10:54  millert
        !          10236:
        !          10237:        * configure, configure.in: Solais pam doesn't require anye xtra
        !          10238:          setup
        !          10239:
        !          10240: 1999-08-04 05:35  millert
        !          10241:
        !          10242:        * parse.yacc: o Simpler '!' support now that the lexer deals with
        !          10243:          multiple !'s for us.  o In the case of opFOO, have FOO give a
        !          10244:          boolean return value and set   foo_matches in opFOO, not FOO.  o
        !          10245:          Treat 'ALL' as a string since it gets fill()'d in
        !          10246:          parse.lex--fixes a   small memory leak.  In the long run it may
        !          10247:          be better to just fix parse.lex   and make ALL back into a token.
        !          10248:          However, having it be a string is useful   since it can be
        !          10249:          easily passed back to the parent rule if we so desire.
        !          10250:
        !          10251: 1999-08-04 03:54  millert
        !          10252:
        !          10253:        * parse.lex: o Remove some unnecessary backslashes o collapse
        !          10254:          multiple !'s by using !+ and checking if yyleng is even or odd.
        !          10255:          this allows us to simplify ! handling in parse.yacc
        !          10256:
        !          10257: 1999-08-04 03:53  millert
        !          10258:
        !          10259:        * sudo.c: -u flag was being ignored
        !          10260:
        !          10261: 1999-08-01 13:04  millert
        !          10262:
        !          10263:        * Makefile.in: correct fix
        !          10264:
        !          10265: 1999-08-01 12:37  millert
        !          10266:
        !          10267:        * Makefile.in: work around pod2man stupididy
        !          10268:
        !          10269: 1999-08-01 12:35  millert
        !          10270:
        !          10271:        * Makefile.in: correct dependencies for .cat
        !          10272:
        !          10273: 1999-08-01 12:26  millert
        !          10274:
        !          10275:        * sudo.cat, sudo.man, visudo.cat, visudo.man: regen
        !          10276:
        !          10277: 1999-08-01 12:25  millert
        !          10278:
        !          10279:        * sudo.pod, visudo.pod: Add copyright Update to reality
        !          10280:
        !          10281: 1999-08-01 11:42  millert
        !          10282:
        !          10283:        * parse.c, sudo.c, sudo.h: rename validate() to the more
        !          10284:          descriptive sudoers_lookup()
        !          10285:
        !          10286: 1999-08-01 06:49  millert
        !          10287:
        !          10288:        * auth/aix_auth.c: use tgetpass
        !          10289:
        !          10290: 1999-07-31 12:32  millert
        !          10291:
        !          10292:        * CHANGES: updates
        !          10293:
        !          10294: 1999-07-31 12:31  millert
        !          10295:
        !          10296:        * HISTORY, INSTALL, Makefile.in, README, RUNSON, TROUBLESHOOTING,
        !          10297:          configure, configure.in, sudo.c: Sudo, not CU Sudo
        !          10298:
        !          10299: 1999-07-31 12:19  millert
        !          10300:
        !          10301:        * Makefile.in, alloc.c, check.c, compat.h, config.h.in,
        !          10302:          find_path.c, getspwuid.c, goodpath.c, ins_2001.h, ins_classic.h,
        !          10303:          ins_csops.h, ins_goons.h, insults.h, interfaces.c, interfaces.h,
        !          10304:          lex.yy.c, logging.c, logging.h, parse.c, parse.h, parse.lex,
        !          10305:          parse.yacc, pathnames.h.in, putenv.c, strerror.c, sudo.c, sudo.h,
        !          10306:          sudo_setenv.c, testsudoers.c, tgetpass.c, utime.c, version.h,
        !          10307:          visudo.c, auth/afs.c, auth/aix_auth.c, auth/dce.c, auth/fwtk.c,
        !          10308:          auth/kerb4.c, auth/kerb5.c, auth/pam.c, auth/passwd.c,
        !          10309:          auth/rfc1938.c, auth/secureware.c, auth/securid.c, auth/sia.c,
        !          10310:          auth/sudo_auth.c, auth/sudo_auth.h, emul/search.h, emul/utime.h,
        !          10311:          LICENSE: add 4th term to license similar to term 5 in the apache
        !          10312:          license
        !          10313:
        !          10314: 1999-07-31 12:02  millert
        !          10315:
        !          10316:        * LICENSE, aclocal.m4, check.c, configure.in, insults.h, logging.c,
        !          10317:          sudo.c, sudo.h, auth/rfc1938.c: there was a 1995 release too
        !          10318:
        !          10319: 1999-07-28 05:24  millert
        !          10320:
        !          10321:        * CHANGES: updates
        !          10322:
        !          10323: 1999-07-28 05:21  millert
        !          10324:
        !          10325:        * check.c: Use dirs instead of files for timestamp.  This allows
        !          10326:          tty and non-tty schemes to coexist reasonably.  Note, however,
        !          10327:          that when you update a tty ticket, the mtime on the user dir gets
        !          10328:          updated as well.
        !          10329:
        !          10330: 1999-07-28 05:17  millert
        !          10331:
        !          10332:        * configure.in, configure: Fix getprpwnam() checking on SCO.  Need
        !          10333:          to link with "-lprot -lx" when linking test program, not just
        !          10334:          -lprot.  Also add check for getspnam().  The SCO docs indicate
        !          10335:          that /etc/shadow can be used but this may be a lie.
        !          10336:
        !          10337: 1999-07-24 03:35  millert
        !          10338:
        !          10339:        * auth/API: first cut at auth API description
        !          10340:
        !          10341: 1999-07-22 15:48  millert
        !          10342:
        !          10343:        * auth/: fwtk.c, kerb4.c, kerb5.c, pam.c, rfc1938.c, secureware.c,
        !          10344:          securid.c, sudo_auth.c, sudo_auth.h: auth API change.  There is
        !          10345:          now an init method that gets run before the main loop.  This
        !          10346:          allows auth routines to differentiate between initialization that
        !          10347:          happens once vs. setup that needs to run each time through the
        !          10348:          loop.
        !          10349:
        !          10350: 1999-07-22 12:23  millert
        !          10351:
        !          10352:        * logging.c, auth/kerb5.c: use easprintf() and evasprintf()
        !          10353:
        !          10354: 1999-07-22 12:22  millert
        !          10355:
        !          10356:        * alloc.c, sudo.h: add easprintf() and evasprintf(), error checking
        !          10357:          versions of asprintf() and  vasprintf()
        !          10358:
        !          10359: 1999-07-22 09:14  millert
        !          10360:
        !          10361:        * TODO: remove 2 items.  One done, one won't do.
        !          10362:
        !          10363: 1999-07-22 09:10  millert
        !          10364:
        !          10365:        * sudo.man, visudo.man, sudo.cat, sudo.html, sudoers.html,
        !          10366:          visudo.cat, visudo.html, configure, lex.yy.c: regen
        !          10367:
        !          10368: 1999-07-22 09:06  millert
        !          10369:
        !          10370:        * CHANGES: new changes
        !          10371:
        !          10372: 1999-07-22 09:01  millert
        !          10373:
        !          10374:        * sudo.pod: o Document -K flag and update meaning of -k flag.  o
        !          10375:          BSD-style copyright o Document clearing of BIND resolver
        !          10376:          environment variables o Clarify bit about shared libs o suggest
        !          10377:          rc files create /tmp/.odus if your OS gives away files
        !          10378:
        !          10379: 1999-07-22 08:59  millert
        !          10380:
        !          10381:        * visudo.pod: BSD license
        !          10382:
        !          10383: 1999-07-22 08:58  millert
        !          10384:
        !          10385:        * tgetpass.c: o BSD copyright o no need to block signals, we now do
        !          10386:          that in main() o cosmetic changes
        !          10387:
        !          10388: 1999-07-22 08:57  millert
        !          10389:
        !          10390:        * testsudoers.c, visudo.c: o BSD-style copyright o Use "struct
        !          10391:          sudo_user" instead of old globals.  o some cometic cleanup
        !          10392:
        !          10393: 1999-07-22 08:56  millert
        !          10394:
        !          10395:        * sudo_setenv.c, version.h: BSD-style copyright
        !          10396:
        !          10397: 1999-07-22 08:56  millert
        !          10398:
        !          10399:        * sudo.h: o BSD copyright o logging and parser bits moved to their
        !          10400:          own .h files o new "struct sudo_user" to encapsulate many of the
        !          10401:          old globals.
        !          10402:
        !          10403: 1999-07-22 08:55  millert
        !          10404:
        !          10405:        * sudo.c: o no longer contains sudo 1.1/1.2 code o BSD copyright o
        !          10406:          use new logging routines o simplified flow of control o BIND
        !          10407:          resolver additions to badenv_table
        !          10408:
        !          10409: 1999-07-22 08:53  millert
        !          10410:
        !          10411:        * strerror.c: BSD-style copyright
        !          10412:
        !          10413: 1999-07-22 08:53  millert
        !          10414:
        !          10415:        * snprintf.c: Now compiles on more K&R compilers
        !          10416:
        !          10417: 1999-07-22 08:52  millert
        !          10418:
        !          10419:        * putenv.c: BSD-style copyright, cosmetic changes
        !          10420:
        !          10421: 1999-07-22 08:51  millert
        !          10422:
        !          10423:        * parse.c, parse.yacc, parse.h, parse.lex: BSD-style copyright.
        !          10424:          Move parser-specific defines and structs into parse.h + other
        !          10425:          cosmetic changes
        !          10426:
        !          10427: 1999-07-22 08:51  millert
        !          10428:
        !          10429:        * logging.h: defines for logging routines
        !          10430:
        !          10431: 1999-07-22 08:49  millert
        !          10432:
        !          10433:        * ins_2001.h, ins_classic.h, ins_csops.h, ins_goons.h, insults.h,
        !          10434:          interfaces.h, pathnames.h.in: BSD-style copyright
        !          10435:
        !          10436: 1999-07-22 08:48  millert
        !          10437:
        !          10438:        * find_path.c, getspwuid.c, goodpath.c, interfaces.c: BSD-style
        !          10439:          copyright, cosmetic changes
        !          10440:
        !          10441: 1999-07-22 08:46  millert
        !          10442:
        !          10443:        * configure.in: o tgetpass.c is no longer optional o kill DCE_OBJS,
        !          10444:          add AUTH_OBJS o kill --disable-tgetpass o add --without-passwd o
        !          10445:          changes to fill in AUTH_OBJS for new auth api o check for
        !          10446:          strerror(), v?snprintf() and v?asprintf() o replace
        !          10447:          --with-AuthSRV with --with-fwtk
        !          10448:
        !          10449: 1999-07-22 08:43  millert
        !          10450:
        !          10451:        * config.h.in: BSD-style copyright.  Remove USE_GETPASS and
        !          10452:          HAVE_UTIME_NULL.  Add HAVE_FWTK, HAVE_STRERROR, HAVE_SNPRINTF,
        !          10453:          HAVE_VSNPRINTF, HAVE_ASPRINTF, HAVE_VASPRINTF, WITHOUT_PASSWD and
        !          10454:          NO_PASSWD
        !          10455:
        !          10456: 1999-07-22 08:42  millert
        !          10457:
        !          10458:        * compat.h: BSD-style copyright; Add S_IFLNK and MIN/MAX id they
        !          10459:          are missing.
        !          10460:
        !          10461: 1999-07-22 08:39  millert
        !          10462:
        !          10463:        * alloc.c: BSD-style copyright
        !          10464:
        !          10465: 1999-07-22 08:38  millert
        !          10466:
        !          10467:        * TROUBLESHOOTING: no more --with-getpass
        !          10468:
        !          10469: 1999-07-22 08:34  millert
        !          10470:
        !          10471:        * TODO: Take out things I've done...
        !          10472:
        !          10473: 1999-07-22 08:34  millert
        !          10474:
        !          10475:        * README: Refer to LICENSE
        !          10476:
        !          10477: 1999-07-22 08:34  millert
        !          10478:
        !          10479:        * PORTING: --with-getpass no longer exists
        !          10480:
        !          10481: 1999-07-22 08:33  millert
        !          10482:
        !          10483:        * Makefile.in: BSD-style copyright.  Update to reflect reality wrt
        !          10484:          new files and new auth modules.
        !          10485:
        !          10486: 1999-07-22 08:32  millert
        !          10487:
        !          10488:        * INSTALL: Remove --with-AuthSRV and --disable-tgetpass.  Add
        !          10489:          --with-fwtk and --without-passwd.
        !          10490:
        !          10491: 1999-07-22 08:31  millert
        !          10492:
        !          10493:        * HISTORY: Update history a bit
        !          10494:
        !          10495: 1999-07-22 08:29  millert
        !          10496:
        !          10497:        * COPYING, LICENSE: Now distributed under a BSD-style license
        !          10498:
        !          10499: 1999-07-22 08:28  millert
        !          10500:
        !          10501:        * auth/sudo_auth.c: o BSD-style copyright o Add support for
        !          10502:          NO_PASSWD/WITHOUT_PASSWD options.  o skey/opie replaced by
        !          10503:          rfc1938 code o new struct sudo_user global
        !          10504:
        !          10505: 1999-07-22 08:25  millert
        !          10506:
        !          10507:        * auth/: pam.c, sia.c: BSD-style copyright and use new log
        !          10508:          functions
        !          10509:
        !          10510: 1999-07-22 08:24  millert
        !          10511:
        !          10512:        * auth/kerb5.c: o BSD-style copyright o Use new log functiongs o
        !          10513:          Use asprintf() and snprintf() where sensible.
        !          10514:
        !          10515: 1999-07-22 08:19  millert
        !          10516:
        !          10517:        * check.c: Rewrote all the old sudo 1.1/1.2 code.  Timestamp
        !          10518:          handling is now done more reasonably--better sanity checks and
        !          10519:          tty-based stamps are now done as files in a directory with the
        !          10520:          same name as the invoking user, eg. /var/run/sudo/millert/ttyp1.
        !          10521:          It is not currently possible to mix tty and non-tty based ticket
        !          10522:          schemes but this may change in the future (it requires sudo to
        !          10523:          use a directory instead of a file in the non-tty case).  Also,
        !          10524:          ``sudo -k'' now sets the ticket back to the epoch and ``sudo -K''
        !          10525:          really deletes the file.  That way you don't get the lecture
        !          10526:          again just because you killed your ticket in .logout.  BSD-style
        !          10527:          copyright now.
        !          10528:
        !          10529: 1999-07-22 08:13  millert
        !          10530:
        !          10531:        * logging.c: o rewritten logging routines.  log_error() now takes
        !          10532:          printf-style varargs    and log_auth() for the return value of
        !          10533:          validate().  o BSD-style copyright
        !          10534:
        !          10535: 1999-07-22 07:04  millert
        !          10536:
        !          10537:        * auth.c, check_sia.c, dce_pwent.c, secureware.c: superceded by new
        !          10538:          auth API
        !          10539:
        !          10540: 1999-07-22 07:02  millert
        !          10541:
        !          10542:        * auth/fwtk.c: Use snprintf() where it makes sense and add a
        !          10543:          BSD-style copyright
        !          10544:
        !          10545: 1999-07-22 07:00  millert
        !          10546:
        !          10547:        * auth/: afs.c, aix_auth.c, dce.c, passwd.c, rfc1938.c,
        !          10548:          secureware.c, securid.c, sudo_auth.h, kerb4.c: BSD-style
        !          10549:          copyright
        !          10550:
        !          10551: 1999-07-22 06:57  millert
        !          10552:
        !          10553:        * emul/utime.h, utime.c: BSD-style copyright
        !          10554:
        !          10555: 1999-07-22 06:57  millert
        !          10556:
        !          10557:        * emul/search.h: this has been rewritten so use my BSD-style
        !          10558:          copyright
        !          10559:
        !          10560: 1999-07-15 11:21  millert
        !          10561:
        !          10562:        * snprintf.c: include malloc.h if no stdlib.h
        !          10563:
        !          10564: 1999-07-15 10:21  millert
        !          10565:
        !          10566:        * snprintf.c: KTH snprintf()/asprintf() for systems w/o them
        !          10567:
        !          10568: 1999-07-15 10:20  millert
        !          10569:
        !          10570:        * strerror.c: strerror() for systems w/o it
        !          10571:
        !          10572: 1999-07-12 06:53  millert
        !          10573:
        !          10574:        * visudo.c: stylistic changes
        !          10575:
        !          10576: 1999-07-12 06:25  millert
        !          10577:
        !          10578:        * parse.c, parse.lex, parse.yacc: Add contribution info in the main
        !          10579:          comment
        !          10580:
        !          10581: 1999-07-11 16:10  millert
        !          10582:
        !          10583:        * auth/pam.c: remove missed ref to PAM_nullpw
        !          10584:
        !          10585: 1999-07-11 16:10  millert
        !          10586:
        !          10587:        * auth/sudo_auth.h: pasto
        !          10588:
        !          10589: 1999-07-11 15:19  millert
        !          10590:
        !          10591:        * auth/kerb5.c: more or less complete now--still untested
        !          10592:
        !          10593: 1999-07-11 15:09  millert
        !          10594:
        !          10595:        * auth/: afs.c, pam.c: don't use user_name macro, it will go away
        !          10596:
        !          10597: 1999-07-11 14:42  millert
        !          10598:
        !          10599:        * auth/: opie.c, rfc1938.c, sudo_auth.h, skey.c: combine skey/opie
        !          10600:          code into rfc1938.c
        !          10601:
        !          10602: 1999-07-11 07:22  millert
        !          10603:
        !          10604:        * auth/: dce.c, sudo_auth.h: DCE authentication method; basically
        !          10605:          unchanged from dce_pwent.c
        !          10606:
        !          10607: 1999-07-11 06:44  millert
        !          10608:
        !          10609:        * auth/: aix_auth.c, sudo_auth.h: AIX authenticate() support.
        !          10610:          Could probably be much better
        !          10611:
        !          10612: 1999-07-11 06:43  millert
        !          10613:
        !          10614:        * auth/sia.c: Fix an uninitialized variable and some cleanup.  Now
        !          10615:          works (tested)
        !          10616:
        !          10617: 1999-07-11 05:37  millert
        !          10618:
        !          10619:        * auth/: sia.c, sudo_auth.h: SIA support for digital unix
        !          10620:
        !          10621: 1999-07-11 05:33  millert
        !          10622:
        !          10623:        * auth/pam.c: don't use prompt global, it will go away
        !          10624:
        !          10625: 1999-07-11 05:32  millert
        !          10626:
        !          10627:        * auth/secureware.c: correct copyright years
        !          10628:
        !          10629: 1999-07-10 20:32  millert
        !          10630:
        !          10631:        * auth/: afs.c, fwtk.c, kerb4.c, sudo_auth.h, kerb5.c, opie.c,
        !          10632:          pam.c, passwd.c, secureware.c, securid.c, skey.c, sudo_auth.c:
        !          10633:          New authentication API and methods
        !          10634:
        !          10635: 1999-07-08 06:46  millert
        !          10636:
        !          10637:        * parse.yacc: only save an entry if user_matches && host_matches,
        !          10638:          even if the stack is empty (fix for previous commit)
        !          10639:
        !          10640: 1999-07-08 06:35  millert
        !          10641:
        !          10642:        * parse.yacc: 1) Always save an entry on the stack if it is empty.
        !          10643:          This fixes the -l and -v flags that were broken by earlier parser
        !          10644:          changes.
        !          10645:
        !          10646:          2) In a Runas list, don't negate FALSE -> TRUE since that would
        !          10647:          make !foo match any time the user specified a runas user (via -u)
        !          10648:          other than foo.
        !          10649:
        !          10650: 1999-07-08 05:45  millert
        !          10651:
        !          10652:        * testsudoers.c: interfaces and num_interfaces are now auto, not
        !          10653:          extern
        !          10654:
        !          10655: 1999-07-07 14:09  millert
        !          10656:
        !          10657:        * auth.c: use a static global to keep stae about empty passwords
        !          10658:
        !          10659: 1999-07-07 14:08  millert
        !          10660:
        !          10661:        * check_sia.c: make PASSWORD_NOT_CORRECT logging consistent with
        !          10662:          other modules
        !          10663:
        !          10664: 1999-07-05 16:53  millert
        !          10665:
        !          10666:        * auth.c: PAM prompt code was wrong, looks like we have to kludge
        !          10667:          it after all.
        !          10668:
        !          10669: 1999-07-05 16:35  millert
        !          10670:
        !          10671:        * auth.c: In the PAM code, when a user hits return at the first
        !          10672:          password prompt, exit without a warning just like the normal auth
        !          10673:          code
        !          10674:
        !          10675: 1999-07-05 16:15  millert
        !          10676:
        !          10677:        * configure, configure.in: kludge around cross-compiler false
        !          10678:          positives
        !          10679:
        !          10680: 1999-07-05 16:14  millert
        !          10681:
        !          10682:        * auth.c, check.c, check_sia.c, logging.c, sudo.h, tgetpass.c: New
        !          10683:          (correct) PAM code Tgetpass now takes an echo flag for use with
        !          10684:          PAM_PROMPT_ECHO_ON Block SIGINT and SIGTSTP during auth remove a
        !          10685:          useless umask setting Change error from BAD_ALLOCATION ->
        !          10686:          BAD_AUTH_INIT (for use with sia/PAM) Some cosmetic changes to
        !          10687:          auth.c for consistency
        !          10688:
        !          10689: 1999-07-05 16:11  millert
        !          10690:
        !          10691:        * sudo.c: Some -Wall and kill some trailing spaces
        !          10692:
        !          10693: 1999-07-05 16:10  millert
        !          10694:
        !          10695:        * configure.in: define -D__EXTENSIONS__ for solaris so we get
        !          10696:          crypt() proto
        !          10697:
        !          10698: 1999-06-22 09:42  millert
        !          10699:
        !          10700:        * RUNSON: add Dynix 4.4.4
        !          10701:
        !          10702: 1999-06-22 09:30  millert
        !          10703:
        !          10704:        * INSTALL, config.h.in, configure.in, configure: for kerberos V <
        !          10705:          version, fall back on old kerb4 auth code
        !          10706:
        !          10707: 1999-06-22 06:41  millert
        !          10708:
        !          10709:        * INSTALL: clarify some things
        !          10710:
        !          10711: 1999-06-22 06:38  millert
        !          10712:
        !          10713:        * UPGRADE, sudoers.cat, sudoers.man, sudoers.pod: typos
        !          10714:
        !          10715: 1999-06-14 19:47  millert
        !          10716:
        !          10717:        * sudo.c: mention why DONT_LEAK_PATH_INFO is not the default
        !          10718:
        !          10719: 1999-06-03 12:34  millert
        !          10720:
        !          10721:        * tgetpass.c: Fix open(2) return value checking, was NULL for
        !          10722:          fopen, should be -1 for open
        !          10723:
        !          10724: 1999-06-03 12:06  millert
        !          10725:
        !          10726:        * configure: regen
        !          10727:
        !          10728: 1999-06-03 12:06  millert
        !          10729:
        !          10730:        * configure.in: better wording for solaris pam notice
        !          10731:
        !          10732: 1999-06-03 11:52  millert
        !          10733:
        !          10734:        * CHANGES: document recent changes
        !          10735:
        !          10736: 1999-06-03 11:52  millert
        !          10737:
        !          10738:        * TROUBLESHOOTING: Update shadow password section
        !          10739:
        !          10740: 1999-06-03 11:51  millert
        !          10741:
        !          10742:        * auth.c: move authentication code from check.c to auth.c
        !          10743:
        !          10744: 1999-06-03 11:51  millert
        !          10745:
        !          10746:        * Makefile.in, check.c, sudo.h: move authentication code to auth.c
        !          10747:
        !          10748: 1999-05-16 21:36  millert
        !          10749:
        !          10750:        * Makefile.in, check.c, check_sia.c, compat.h, find_path.c,
        !          10751:          getspwuid.c, goodpath.c, interfaces.c, interfaces.h, lex.yy.c,
        !          10752:          logging.c, parse.c, parse.lex, parse.yacc, secureware.c, sudo.c,
        !          10753:          sudo.h, sudo_setenv.c, testsudoers.c, tgetpass.c, visudo.c: Move
        !          10754:          interface-related defines to interfaces.h so we don't have to
        !          10755:          include <netinet/in.h> everywhere.
        !          10756:
        !          10757: 1999-05-14 12:30  millert
        !          10758:
        !          10759:        * CHANGES, INSTALL, TODO, check.c, compat.h, getspwuid.c,
        !          10760:          logging.c, parse.yacc, sudo.c, tgetpass.c:  o Replace _PASSWD_LEN
        !          10761:          braindeath with our own SUDO_MAX_PASS.
        !          10762:             It turns out the old DES crypt does the right thing with
        !          10763:          passwords
        !          10764:             longert than 8 characters.
        !          10765:           o Fix common typo (necesary -> necessary)
        !          10766:           o Update TODO list
        !          10767:
        !          10768: 1999-05-03 12:00  millert
        !          10769:
        !          10770:        * sudo.c: set $LOGNAME when we set $USER
        !          10771:
        !          10772: 1999-04-27 00:00  millert
        !          10773:
        !          10774:        * INSTALL: add comment about digital unix and interfaces.c warning
        !          10775:          with gcc
        !          10776:
        !          10777: 1999-04-15 01:12  millert
        !          10778:
        !          10779:        * sample.sudoers: use modern paths and give examples for some of
        !          10780:          the new parser features
        !          10781:
        !          10782: 1999-04-10 13:03  millert
        !          10783:
        !          10784:        * parse.c: fix comment
        !          10785:
        !          10786: 1999-04-10 00:49  millert
        !          10787:
        !          10788:        * alloc.c, check.c, check_sia.c, dce_pwent.c, find_path.c,
        !          10789:          getspwuid.c, goodpath.c, interfaces.c, lex.yy.c, logging.c,
        !          10790:          parse.c, parse.lex, parse.yacc, putenv.c, secureware.c, sudo.c,
        !          10791:          sudo_setenv.c, testsudoers.c, tgetpass.c, utime.c, visudo.c:
        !          10792:          Function names should be flush with the start of the line so they
        !          10793:          can be found trivially in an editor and with grep
        !          10794:
        !          10795: 1999-04-10 00:40  millert
        !          10796:
        !          10797:        * find_path.c, interfaces.c, lex.yy.c, parse.c, parse.lex,
        !          10798:          parse.yacc, sudo.c, testsudoers.c, tgetpass.c, visudo.c: free(3)
        !          10799:          is already void, no need to cast it
        !          10800:
        !          10801: 1999-04-10 00:37  millert
        !          10802:
        !          10803:        * logging.c, sudo.c, sudo.h: catch case where cmnd_safe is not set
        !          10804:          (this should not be possible)
        !          10805:
        !          10806: 1999-04-10 00:10  millert
        !          10807:
        !          10808:        * CHANGES, logging.c, parse.c, parse.yacc, sudo.c, sudo.h,
        !          10809:          testsudoers.c, visudo.c: Stash the "safe" path (ie: the one
        !          10810:          listed in sudoers) to the command instead of stashing the struct
        !          10811:          stat.  Should be safer.
        !          10812:
        !          10813: 1999-04-08 19:56  millert
        !          10814:
        !          10815:        * INSTALL, Makefile.in, UPGRADE: notes on updating from an earlier
        !          10816:          release
        !          10817:
        !          10818: 1999-04-07 20:20  millert
        !          10819:
        !          10820:        * CHANGES: updated
        !          10821:
        !          10822: 1999-04-07 19:18  millert
        !          10823:
        !          10824:        * parse.yacc, sudo.tab.h, sudoers.cat, sudoers.html, sudoers.man,
        !          10825:          sudoers.pod: You can now specifiy a host list instead of just a
        !          10826:          host or alias.  Ie: user = host1,host2,ALIAS,!host3 my_command
        !          10827:          now works.
        !          10828:
        !          10829: 1999-04-07 02:59  millert
        !          10830:
        !          10831:        * testsudoers.c: Quiet -Wall
        !          10832:
        !          10833: 1999-04-07 02:50  millert
        !          10834:
        !          10835:        * parse.yacc: Move the push from the beginning of cmndspec to the
        !          10836:          end.  This means we no longer have to do a push at the end of
        !          10837:          privilege, just reset some values.
        !          10838:
        !          10839: 1999-04-06 20:24  millert
        !          10840:
        !          10841:        * sudoers.cat, sudoers.html, sudoers.man, sudoers.pod: runas-lists
        !          10842:          and NOPASSWD/PASSWD modifiers are now sticky and you can use "!"
        !          10843:          most everywhere
        !          10844:
        !          10845: 1999-04-06 14:12  millert
        !          10846:
        !          10847:        * sudoers.pod: modernize paths and update su example based on
        !          10848:          sample.sudoers one
        !          10849:
        !          10850: 1999-04-06 14:06  millert
        !          10851:
        !          10852:        * sample.sudoers: New runas semantics
        !          10853:
        !          10854: 1999-04-06 13:54  millert
        !          10855:
        !          10856:        * CHANGES, Makefile.in, alloc.c, config.h.in, configure,
        !          10857:          configure.in, strdup.c, sudo.h: In estrdup(), do the malloc
        !          10858:          ourselves so we don't need to rely on the system strdup(3) which
        !          10859:          may or may not exist.  There is now no need to provide strdup()
        !          10860:          for those w/o it.  Also, the prototype for estrdup() was wrong,
        !          10861:          it returns char * and its param is const.
        !          10862:
        !          10863: 1999-04-06 13:40  millert
        !          10864:
        !          10865:        * getcwd.c: $Sudo tag
        !          10866:
        !          10867: 1999-04-06 13:20  millert
        !          10868:
        !          10869:        * check.c: buf should be prompt; Michael Robokoff
        !          10870:          <mrobo@networkcs.com>
        !          10871:
        !          10872: 1999-04-06 01:40  millert
        !          10873:
        !          10874:        * CHANGES, TODO, parse.yacc: It is now possible to use the '!'
        !          10875:          operator in a runas list as well as in a Cmnd_Alias, Host_Alias
        !          10876:          and User_Alias.
        !          10877:
        !          10878: 1999-04-06 01:38  millert
        !          10879:
        !          10880:        * logging.c, sudo.h: Kill GLOBAL_NO_SPW_ENT (not used) and crank
        !          10881:          GLOBAL_PROBLEM
        !          10882:
        !          10883: 1999-04-06 01:08  millert
        !          10884:
        !          10885:        * sudo.h: Definitions of *_matched were wrong--user top, not top-2
        !          10886:          as subscript.
        !          10887:
        !          10888: 1999-04-06 01:00  millert
        !          10889:
        !          10890:        * logging.c, parse.c, parse.yacc, sudo.c, sudo.h: Add
        !          10891:          VALIDATE_NOT_OK_NOPASS for when user is not allowed to run a
        !          10892:          command but the NOPASSWD flag was set.  Make runasspec,
        !          10893:          runaslist, runasuser, and nopasswd typeless in parse.yacc Add
        !          10894:          support for '!' in the runas list Fix double printing of '%' and
        !          10895:          '+' for groups and netgroups respectively Add *_matched macros
        !          10896:          (no need for local stack variable).  Should only be used directly
        !          10897:          after a pop (since top must be >= 2).
        !          10898:
        !          10899: 1999-04-05 23:25  millert
        !          10900:
        !          10901:        * aclocal.m4, configure.in: Add copyright, somewhat silly
        !          10902:
        !          10903: 1999-04-05 16:57  millert
        !          10904:
        !          10905:        * BUGS, INSTALL, Makefile.in, README, alloc.c, check.c,
        !          10906:          check_sia.c, compat.h, config.h.in, configure, configure.in,
        !          10907:          dce_pwent.c, find_path.c, getspwuid.c, goodpath.c, ins_2001.h,
        !          10908:          ins_classic.h, ins_csops.h, ins_goons.h, insults.h, interfaces.c,
        !          10909:          lex.yy.c, logging.c, parse.c, parse.lex, parse.yacc,
        !          10910:          pathnames.h.in, putenv.c, secureware.c, strdup.c, sudo.c,
        !          10911:          sudo.cat, sudo.h, sudo.man, sudo_setenv.c, sudoers.cat,
        !          10912:          sudoers.man, testsudoers.c, tgetpass.c, utime.c, version.h,
        !          10913:          visudo.c, visudo.cat, visudo.man, emul/utime.h: Crank version to
        !          10914:          1.6 and combine copyright statements
        !          10915:
        !          10916: 1999-04-05 16:30  millert
        !          10917:
        !          10918:        * sample.sudoers: Use ! not ^ to do negation
        !          10919:
        !          10920: 1999-04-05 16:29  millert
        !          10921:
        !          10922:        * lex.yy.c: regen
        !          10923:
        !          10924: 1999-04-05 16:28  millert
        !          10925:
        !          10926:        * parse.yacc, parse.lex: Make runas and NOPASSWD tags persistent
        !          10927:          across entris in a command list.  Add a PASSWD tag to reverse
        !          10928:          NOPASSWD.  When you override a runas or *PASSWD tag the value
        !          10929:          given becomes the new default for the rest of the command list.
        !          10930:
        !          10931: 1999-04-02 16:03  millert
        !          10932:
        !          10933:        * CHANGES, RUNSON: update for 1.5.9
        !          10934:
        !          10935: 1999-04-02 16:02  millert
        !          10936:
        !          10937:        * visudo.c: Shift return value of system(3) by 8 to get real exit
        !          10938:          value and if it is not 1 or 0 print the retval along with the
        !          10939:          error message.
        !          10940:
        !          10941: 1999-03-30 16:45  millert
        !          10942:
        !          10943:        * Makefile.in: testsudoers needs LIBOBJS too
        !          10944:
        !          10945: 1999-03-30 12:17  millert
        !          10946:
        !          10947:        * parse.c, parse.yacc: Fix another parser bug.  For a sudoers entry
        !          10948:          like this:     millert      ALL=/bin/ls,(daemon) !/bin/ls sudo
        !          10949:          would not allow millert to run ls as root.
        !          10950:
        !          10951: 1999-03-30 01:08  millert
        !          10952:
        !          10953:        * CHANGES: new change
        !          10954:
        !          10955: 1999-03-30 01:03  millert
        !          10956:
        !          10957:        * parse.yacc: Save entries that match a ! command on the matching
        !          10958:          stack too
        !          10959:
        !          10960: 1999-03-30 01:01  millert
        !          10961:
        !          10962:        * sudo.c: Make sudo's usage info better when mutually exclusive
        !          10963:          args are given and don't rely on argument order to detect this;
        !          10964:          nick@zeta.org.au
        !          10965:
        !          10966: 1999-03-29 15:03  millert
        !          10967:
        !          10968:        * CHANGES, Makefile.in, RUNSON: updates from CU
        !          10969:
        !          10970: 1999-03-28 23:38  millert
        !          10971:
        !          10972:        * Makefile.in: use gzip
        !          10973:
        !          10974: 1999-03-28 23:31  millert
        !          10975:
        !          10976:        * parse.yacc: Fix off by one error introduced in *alloc changes
        !          10977:
        !          10978: 1999-03-28 23:05  millert
        !          10979:
        !          10980:        * BUGS, CHANGES, INSTALL, Makefile.in, README, alloc.c, check.c,
        !          10981:          check_sia.c, compat.h, config.h.in, configure, configure.in,
        !          10982:          dce_pwent.c, find_path.c, getspwuid.c, goodpath.c, ins_2001.h,
        !          10983:          ins_classic.h, ins_csops.h, ins_goons.h, insults.h, interfaces.c,
        !          10984:          lex.yy.c, logging.c, parse.c, parse.lex, parse.yacc,
        !          10985:          pathnames.h.in, putenv.c, secureware.c, strdup.c, sudo.c,
        !          10986:          sudo.cat, sudo.h, sudo.man, sudo_setenv.c, sudoers.cat,
        !          10987:          sudoers.man, testsudoers.c, tgetpass.c, utime.c, version.h,
        !          10988:          visudo.c, visudo.cat, visudo.html, visudo.man, visudo.pod,
        !          10989:          emul/utime.h: ++version
        !          10990:
        !          10991: 1999-03-28 21:59  millert
        !          10992:
        !          10993:        * Makefile.in, check.c, find_path.c, getspwuid.c, goodpath.c,
        !          10994:          interfaces.c, lex.yy.c, logging.c, parse.c, parse.lex,
        !          10995:          parse.yacc, putenv.c, secureware.c, strdup.c, sudo.c, sudo.h,
        !          10996:          sudo_setenv.c, testsudoers.c, utime.c, visudo.c: Use
        !          10997:          emalloc/erealloc/estrdup
        !          10998:
        !          10999: 1999-03-28 20:29  millert
        !          11000:
        !          11001:        * alloc.c: error checking memory allocation routines
        !          11002:
        !          11003: 1999-03-28 19:23  millert
        !          11004:
        !          11005:        * parse.yacc: Still not right, this fixes it for real
        !          11006:
        !          11007: 1999-03-28 19:08  millert
        !          11008:
        !          11009:        * parse.yacc: Fix for previous commit
        !          11010:
        !          11011: 1999-03-28 19:05  millert
        !          11012:
        !          11013:        * CHANGES, INSTALL, parse.yacc: Fix a parser bug that was exposed
        !          11014:          when mixing different runas specs and ! commands.  For example:
        !          11015:          millert          ALL=(daemon) /usr/bin/whoami,!/bin/ls would
        !          11016:          allow millert to run whoami as root as well as daemon when it
        !          11017:          should just allow daemon.  The problem was that comma-separated
        !          11018:          commands in a list shared the same entry on the matching stack.
        !          11019:          Now they get their own entry iff there is a full match.  It may
        !          11020:          be better to just make the runas spec persistent across all
        !          11021:          commands in a list like the user and host entries of the matching
        !          11022:          stack.  However, since that is a fairly major change it should
        !          11023:          gets its own minor rev increase.
        !          11024:
        !          11025: 1999-03-28 13:50  millert
        !          11026:
        !          11027:        * check.c, config.h.in: Simplify PAM code and fix a PAM-related
        !          11028:          warning on Linux
        !          11029:
        !          11030: 1999-03-26 13:17  millert
        !          11031:
        !          11032:        * CHANGES: updates
        !          11033:
        !          11034: 1999-03-26 13:12  millert
        !          11035:
        !          11036:        * sample.sudoers: better su entry
        !          11037:
        !          11038: 1999-03-26 13:10  millert
        !          11039:
        !          11040:        * configure: regen
        !          11041:
        !          11042: 1999-03-26 13:09  millert
        !          11043:
        !          11044:        * check.c, configure.in: new pam code that works on solaris, should
        !          11045:          work on linux too; aelberg@home.com
        !          11046:
        !          11047: 1999-03-19 14:44  millert
        !          11048:
        !          11049:        * RUNSON: more entries
        !          11050:
        !          11051: 1999-03-19 14:43  millert
        !          11052:
        !          11053:        * config.h.in: only include strings.h if there is no string.h
        !          11054:
        !          11055: 1999-03-17 15:25  millert
        !          11056:
        !          11057:        * config.guess: Sinix is now being called ReliantUNIX;
        !          11058:          bjjackso@us.oracle.com
        !          11059:
        !          11060: 1999-03-13 13:37  millert
        !          11061:
        !          11062:        * sudo.c: shost must be set before log functions are called #ifdef
        !          11063:          HOST_IN_LOG
        !          11064:
        !          11065: 1999-03-07 18:34  millert
        !          11066:
        !          11067:        * CHANGES, lex.yy.c, parse.lex: Fix a bug wrt quoting characters in
        !          11068:          command args.  Stop processing an arg when you hit a backslash so
        !          11069:          the quoted-character detection can catch it.
        !          11070:
        !          11071: 1999-02-26 01:19  millert
        !          11072:
        !          11073:        * interfaces.c: include sys/time.h; aparently AIX needs it.
        !          11074:          ppz@cdu.elektra.ru
        !          11075:
        !          11076: 1999-02-23 19:43  millert
        !          11077:
        !          11078:        * configure, configure.in: add missing case statement so
        !          11079:          --without-sendmail works
        !          11080:
        !          11081: 1999-02-22 21:51  millert
        !          11082:
        !          11083:        * CHANGES: more
        !          11084:
        !          11085: 1999-02-22 15:10  millert
        !          11086:
        !          11087:        * configure, configure.in: only search for -lsun in irix <= 4.x
        !          11088:
        !          11089: 1999-02-22 15:01  millert
        !          11090:
        !          11091:        * configure, configure.in: back out last configure.in change now
        !          11092:          that I've hacked autoconf to fix the real problem and add a
        !          11093:          missing newline
        !          11094:
        !          11095: 1999-02-22 14:32  millert
        !          11096:
        !          11097:        * CHANGES: updated
        !          11098:
        !          11099: 1999-02-22 14:05  millert
        !          11100:
        !          11101:        * getcwd.c: add def of dirfd() for those without it
        !          11102:
        !          11103: 1999-02-22 10:58  millert
        !          11104:
        !          11105:        * configure.in, configure: When falling back to checking for
        !          11106:          socket() when linking with "-lsocket -lnsl" check for main()
        !          11107:          instead since autoconf has already cached the results of checking
        !          11108:          for socket() in -lsocket.  This is really an autoconf bug as it
        !          11109:          should use the extra libs as part of the cache variable name.
        !          11110:
        !          11111: 1999-02-22 10:47  millert
        !          11112:
        !          11113:        * configure.in: typo
        !          11114:
        !          11115: 1999-02-21 15:18  millert
        !          11116:
        !          11117:        * configure.in: fix occurrence of $with_timeout that should be
        !          11118:          $with_password_timeout;
        !          11119:          Michael.Neef@neuroinformatik.ruhr-uni-bochum.de
        !          11120:
        !          11121: 1999-02-17 11:40  millert
        !          11122:
        !          11123:        * sudo.cat, sudo.html, sudo.man, sudo.pod: fix grammar;
        !          11124:          espie@openbsd.org
        !          11125:
        !          11126: 1999-02-11 01:41  millert
        !          11127:
        !          11128:        * parse.yacc, sudo.c, testsudoers.c: add cast for strdup in places
        !          11129:          it does not have it
        !          11130:
        !          11131: 1999-02-09 13:11  millert
        !          11132:
        !          11133:        * configure, configure.in: define for_BSD_TYPES irix
        !          11134:
        !          11135: 1999-02-06 19:47  millert
        !          11136:
        !          11137:        * Makefile.in, sudo.cat, sudo.html, sudo.man, sudo.pod: Make it
        !          11138:          clear that it is the user's password, not root's, that we want.
        !          11139:
        !          11140: 1999-02-06 19:43  millert
        !          11141:
        !          11142:        * check.c, sudo.h: If the user enters an empty password and really
        !          11143:          has no password, accept the empty password they entered.
        !          11144:          Perviously, they could enter anything *but* an empty password.
        !          11145:          Also, add GETPASS macro that calls either tgetpass() or getpass()
        !          11146:          depending on how sudo was configured.  Problem noted by
        !          11147:          jdg@maths.qmw.ac.uk
        !          11148:
        !          11149: 1999-02-02 23:32  millert
        !          11150:
        !          11151:        * Makefile.in, check.c, check_sia.c, compat.h, config.h.in,
        !          11152:          dce_pwent.c, find_path.c, getspwuid.c, goodpath.c, ins_2001.h,
        !          11153:          ins_classic.h, ins_csops.h, ins_goons.h, insults.h, interfaces.c,
        !          11154:          logging.c, parse.c, parse.lex, parse.yacc, pathnames.h.in,
        !          11155:          putenv.c, secureware.c, strdup.c, sudo.c, sudo.h, sudo_setenv.c,
        !          11156:          testsudoers.c, tgetpass.c, utime.c, version.h, visudo.c,
        !          11157:          emul/utime.h: add explicate copyright
        !          11158:
        !          11159: 1999-02-02 23:16  millert
        !          11160:
        !          11161:        * CHANGES: mention -lsocket, -lnsl configure changes
        !          11162:
        !          11163: 1999-02-02 17:54  millert
        !          11164:
        !          11165:        * sudo.c: Don't clobber errno after calling check_sudoers().
        !          11166:
        !          11167: 1999-01-31 19:46  millert
        !          11168:
        !          11169:        * configure.in, configure: When linking with both -lsocket and
        !          11170:          -lnsl be sure to do so in that order.  Also, when we can't find
        !          11171:          socket() or inet_addr() and have to try linking with both libs,
        !          11172:          issue a warning.
        !          11173:
        !          11174: 1999-01-31 19:45  millert
        !          11175:
        !          11176:        * sudo.cat, sudo.man, sudo.pod: clarify bad timestamp and fmt
        !          11177:
        !          11178: 1999-01-23 12:18  millert
        !          11179:
        !          11180:        * INSTALL, RUNSON: be clear that pam is linux-only and add a RUNSON
        !          11181:          entry
        !          11182:
        !          11183: 1999-01-22 13:13  millert
        !          11184:
        !          11185:        * configure, CHANGES, INSTALL, configure.in: fix and correctly
        !          11186:          document --with-umask; problem noted by adap@adap.org
        !          11187:
        !          11188: 1999-01-19 20:38  millert
        !          11189:
        !          11190:        * configure.in, configure: only use /usr/{man,catman}/local to
        !          11191:          store man pages if suer didn't override prefix or mandir
        !          11192:
        !          11193: 1999-01-19 20:24  millert
        !          11194:
        !          11195:        * configure, INSTALL, configure.in: fix typo, make --with-SecurID
        !          11196:          take an arg
        !          11197:
        !          11198: 1999-01-18 21:53  millert
        !          11199:
        !          11200:        * RUNSON: updates from users
        !          11201:
        !          11202: 1999-01-18 21:04  millert
        !          11203:
        !          11204:        * CHANGES, INSTALL, check.c, configure, configure.in: FWTK
        !          11205:          'authsrv' support from Kevin Kadow <kadow@MSG.NET>
        !          11206:
        !          11207: 1999-01-18 20:00  millert
        !          11208:
        !          11209:        * configure, configure.in: better fix for the problem of unresolved
        !          11210:          symbols in -lnsl or -lsocket
        !          11211:
        !          11212: 1999-01-18 19:39  millert
        !          11213:
        !          11214:        * configure, configure.in: when checking for functions in -lnsl and
        !          11215:          -lsocket link with both of them to avoid unresolved symbols on
        !          11216:          some weirdo systems
        !          11217:
        !          11218: 1999-01-17 20:49  millert
        !          11219:
        !          11220:        * BUGS, CHANGES, RUNSON, TODO: old changes that didn't make it into
        !          11221:          RCS before the RCS->CVS switch
        !          11222:
        !          11223: 1999-01-17 18:16  millert
        !          11224:
        !          11225:        * Makefile.in, check.c, check_sia.c, compat.h, config.h.in,
        !          11226:          configure.in, dce_pwent.c, find_path.c, getspwuid.c, goodpath.c,
        !          11227:          ins_2001.h, ins_classic.h, ins_csops.h, ins_goons.h, insults.h,
        !          11228:          interfaces.c, lex.yy.c, logging.c, lsearch.c, parse.c, parse.lex,
        !          11229:          parse.yacc, pathnames.h.in, putenv.c, secureware.c, strdup.c,
        !          11230:          sudo.c, sudo.pod, sudo_setenv.c, sudoers.pod, testsudoers.c,
        !          11231:          tgetpass.c, utime.c, visudo.c, visudo.pod, emul/search.h,
        !          11232:          emul/utime.h: add sudo tags
        !          11233:
        !          11234: 1999-01-17 17:53  millert
        !          11235:
        !          11236:        * version.h, sudo.h: testing Sudo tag
        !          11237:
        !          11238: 1999-01-17 17:40  millert
        !          11239:
        !          11240:        * BUGS, INSTALL, Makefile.in, README, check.c, check_sia.c,
        !          11241:          compat.h, config.h.in, configure, configure.in, dce_pwent.c,
        !          11242:          find_path.c, getspwuid.c, goodpath.c, ins_2001.h, ins_classic.h,
        !          11243:          ins_csops.h, ins_goons.h, insults.h, interfaces.c, lex.yy.c,
        !          11244:          logging.c, parse.c, parse.lex, parse.yacc, pathnames.h.in,
        !          11245:          putenv.c, secureware.c, strdup.c, sudo.c, sudo.cat, sudo.h,
        !          11246:          sudo.man, sudo_setenv.c, sudoers.cat, sudoers.man, testsudoers.c,
        !          11247:          tgetpass.c, utime.c, version.h, visudo.c, visudo.cat, visudo.man,
        !          11248:          emul/utime.h: crank version and regen files
        !          11249:
        !          11250: 1999-01-17 17:27  millert
        !          11251:
        !          11252:        * Makefile.in: kill rcs goop in update_version and fix now that
        !          11253:          version is a const
        !          11254:
        !          11255: 1999-01-17 17:08  millert
        !          11256:
        !          11257:        * INSTALL, check.c, config.h.in, configure, configure.in,
        !          11258:          logging.c, sudo.c, sudo.h, sudo.pod: kerb5 support from
        !          11259:          fcusack@iconnet.net
        !          11260:
        !          11261: 1999-01-17 16:45  millert
        !          11262:
        !          11263:        * realpath.c, sudo_realpath.c: we no longer use realpath
        !          11264:
        !          11265: 1999-01-17 16:44  millert
        !          11266:
        !          11267:        * qualify.c: replaced by find_path.c
        !          11268:
        !          11269: 1999-01-17 16:43  millert
        !          11270:
        !          11271:        * options.h: all options are now configure flags
        !          11272:
        !          11273: 1999-01-17 16:42  millert
        !          11274:
        !          11275:        * lex.yy.c: regen
        !          11276:
        !          11277: 1999-01-17 16:41  millert
        !          11278:
        !          11279:        * getwd.c: superceded by getcwd.c
        !          11280:
        !          11281: 1999-01-17 16:36  millert
        !          11282:
        !          11283:        * getpass.c: superceded by tgetpass.c
        !          11284:
        !          11285: 1999-01-17 16:36  millert
        !          11286:
        !          11287:        * SUPPORTED: superceded by RUNSON
        !          11288:
        !          11289: 1999-01-17 16:33  millert
        !          11290:
        !          11291:        * OPTIONS: No longer used now that we have configure options for
        !          11292:          everything.
        !          11293:
        !          11294: 1999-01-17 16:32  millert
        !          11295:
        !          11296:        * configure: regen based on configure.in
        !          11297:
        !          11298: 1999-01-17 16:31  millert
        !          11299:
        !          11300:        * sudo.man, sudoers.man, visudo.man, sudo.cat, sudo.html,
        !          11301:          sudoers.cat, visudo.cat, sudoers.html, visudo.html: regen based
        !          11302:          on sudo.pod, sudoers.pod, and visudo.pod
        !          11303:
        !          11304: 1998-12-11 12:16  millert
        !          11305:
        !          11306:        * check.c: fix tty tickets in remove_timestamp (didn't use ':')
        !          11307:
        !          11308: 1998-12-07 16:16  millert
        !          11309:
        !          11310:        * interfaces.c: close sock when we are done with it
        !          11311:
        !          11312: 1998-11-27 19:37  millert
        !          11313:
        !          11314:        * parse.yacc: never say "error on line -1"
        !          11315:
        !          11316: 1998-11-23 23:38  millert
        !          11317:
        !          11318:        * configure.in: check for -lnsl before -lsocket
        !          11319:
        !          11320: 1998-11-23 23:29  millert
        !          11321:
        !          11322:        * configure.in: quote '[', ']' used in ranges correctly
        !          11323:
        !          11324: 1998-11-21 17:54  millert
        !          11325:
        !          11326:        * config.h.in: add missing NO_ROOT_SUDO noted by drno@tsd.edu
        !          11327:
        !          11328: 1998-11-20 18:33  millert
        !          11329:
        !          11330:        * version.h: 1.5.7
        !          11331:
        !          11332: 1998-11-20 18:33  millert
        !          11333:
        !          11334:        * INSTALL: more info for 1.5.7
        !          11335:
        !          11336: 1998-11-20 18:30  millert
        !          11337:
        !          11338:        * README: update for 1.5.7
        !          11339:
        !          11340: 1998-11-20 14:26  millert
        !          11341:
        !          11342:        * parse.yacc: make increases of cm_list_size and ga_list_size be
        !          11343:          similar to increases of stacksize (ie: >= not > in initial
        !          11344:          compare).
        !          11345:
        !          11346: 1998-11-20 14:22  millert
        !          11347:
        !          11348:        * parse.yacc: when we get a syntax error, report it for the
        !          11349:          previous line since that's generally where the error occurred.
        !          11350:
        !          11351: 1998-11-18 15:31  millert
        !          11352:
        !          11353:        * config.h.in, configure.in, interfaces.c: add back check for
        !          11354:          sys/sockio.h but only use it if SIOCGIFCONF is not defined
        !          11355:
        !          11356: 1998-11-18 15:25  millert
        !          11357:
        !          11358:        * config.h.in: define BSD_COMP for svr4
        !          11359:
        !          11360: 1998-11-17 23:16  millert
        !          11361:
        !          11362:        * check.c, check_sia.c, find_path.c, getcwd.c, getspwuid.c,
        !          11363:          goodpath.c, interfaces.c, logging.c, lsearch.c, parse.c,
        !          11364:          parse.lex, parse.yacc, putenv.c, secureware.c, strdup.c, sudo.c,
        !          11365:          sudo_setenv.c, testsudoers.c, tgetpass.c, utime.c, visudo.c: more
        !          11366:          -Wall
        !          11367:
        !          11368: 1998-11-17 23:10  millert
        !          11369:
        !          11370:        * configure.in: kill check for sockio,h
        !          11371:
        !          11372: 1998-11-17 23:10  millert
        !          11373:
        !          11374:        * config.h.in: no more HAVE_SYS_SOCKIO_H
        !          11375:
        !          11376: 1998-11-17 22:51  millert
        !          11377:
        !          11378:        * check.c, check_sia.c, find_path.c, getcwd.c, getspwuid.c,
        !          11379:          goodpath.c, interfaces.c, logging.c, lsearch.c, parse.c,
        !          11380:          parse.lex, parse.yacc, putenv.c, secureware.c, strdup.c, sudo.c,
        !          11381:          sudo_setenv.c, testsudoers.c, tgetpass.c, utime.c, visudo.c:
        !          11382:          -Wall
        !          11383:
        !          11384: 1998-11-16 17:38  millert
        !          11385:
        !          11386:        * sudo.c: add missing inform_user()
        !          11387:
        !          11388: 1998-11-13 19:21  millert
        !          11389:
        !          11390:        * find_path.c: return NOT_FOUND if given fully qualified path and
        !          11391:          it does not exist previously it would perror(ENOENT) which
        !          11392:          bypasses the option to not leak path info
        !          11393:
        !          11394: 1998-11-13 19:20  millert
        !          11395:
        !          11396:        * configure.in: for kerb5, check for -lkerb4, fall back on -lkrb
        !          11397:          for kerb, check for -ldes
        !          11398:
        !          11399: 1998-11-13 14:19  millert
        !          11400:
        !          11401:        * INSTALL: tty tickets are user:tty now
        !          11402:
        !          11403: 1998-11-13 14:10  millert
        !          11404:
        !          11405:        * check.c: when using tty tickets make it user:tty not user.tty as
        !          11406:          a username could have a '.' in it
        !          11407:
        !          11408: 1998-11-09 19:15  millert
        !          11409:
        !          11410:        * sudo.c: add "ignoring foo found in ." for auth successful case
        !          11411:
        !          11412: 1998-11-09 17:57  millert
        !          11413:
        !          11414:        * sudo.c: add missing printf param
        !          11415:
        !          11416: 1998-11-08 15:56  millert
        !          11417:
        !          11418:        * INSTALL, config.h.in, configure.in, find_path.c, sudo.c, sudo.h:
        !          11419:          go back to printing "command not found" unless
        !          11420:          --disable-path-info specified.  Also, tell user when we ignore
        !          11421:          '.' in their path and it would have been used but for
        !          11422:          --with-ignore-dot.
        !          11423:
        !          11424: 1998-11-08 13:51  millert
        !          11425:
        !          11426:        * check.c, sudo.c: Only one space after a colon, not two, in
        !          11427:          printf's
        !          11428:
        !          11429: 1998-11-05 12:59  millert
        !          11430:
        !          11431:        * sudo.pod: document setting $USER
        !          11432:
        !          11433: 1998-11-04 22:24  millert
        !          11434:
        !          11435:        * check.c: fix bugs with prompt expansion
        !          11436:
        !          11437: 1998-11-04 21:21  millert
        !          11438:
        !          11439:        * sudo.c: set $USER for root too
        !          11440:
        !          11441: 1998-11-04 17:13  millert
        !          11442:
        !          11443:        * getspwuid.c: typo
        !          11444:
        !          11445: 1998-11-04 17:07  millert
        !          11446:
        !          11447:        * configure.in: HP-UX's iscomsec is in -lsec, not libc
        !          11448:
        !          11449: 1998-11-03 22:24  millert
        !          11450:
        !          11451:        * configure.in: remove some entries in the OS case statement that
        !          11452:          did nothing
        !          11453:
        !          11454: 1998-11-03 22:19  millert
        !          11455:
        !          11456:        * TROUBLESHOOTING: add "cd" section and flush out syslog section
        !          11457:
        !          11458: 1998-11-03 20:51  millert
        !          11459:
        !          11460:        * Makefile.in: no more sudo-lex.yy.c
        !          11461:
        !          11462: 1998-11-03 20:50  millert
        !          11463:
        !          11464:        * check_sia.c: add custom prompt support
        !          11465:
        !          11466: 1998-11-03 20:40  millert
        !          11467:
        !          11468:        * sudo.c: kill perror("malloc") since we already have a good error
        !          11469:          messages pw_ent -> pw for brevity set $USER if -u specified
        !          11470:
        !          11471: 1998-11-03 20:39  millert
        !          11472:
        !          11473:        * parse.c: kill perror("malloc") since we already have a good error
        !          11474:          messages pw_ent -> pw for brevity when checking if %group
        !          11475:          matches, look up user in password file so that %groups works in a
        !          11476:          RunAs spec.
        !          11477:
        !          11478: 1998-11-03 20:39  millert
        !          11479:
        !          11480:        * logging.c, parse.yacc: kill perror("malloc") since we already
        !          11481:          have a good error messages
        !          11482:
        !          11483: 1998-11-03 20:38  millert
        !          11484:
        !          11485:        * check.c, getspwuid.c, interfaces.c, testsudoers.c: kill
        !          11486:          perror("malloc") since we already have a good error messages
        !          11487:          pw_ent -> pw for brevity
        !          11488:
        !          11489: 1998-11-03 15:03  millert
        !          11490:
        !          11491:        * tgetpass.c: the prompt is expanded before tgetpass is called
        !          11492:
        !          11493: 1998-11-03 15:03  millert
        !          11494:
        !          11495:        * sudo.h: tgetpass now has the same args as getpass again
        !          11496:
        !          11497: 1998-11-03 15:02  millert
        !          11498:
        !          11499:        * getspwuid.c: add iscomsec, issecure support
        !          11500:
        !          11501: 1998-11-03 15:02  millert
        !          11502:
        !          11503:        * check.c: we now expand any %h or %u in the prompt before passing
        !          11504:          to tgetpass
        !          11505:
        !          11506: 1998-11-03 14:58  millert
        !          11507:
        !          11508:        * configure.in: add check for syslog(3) in -lsocket, -lnsl, -linet
        !          11509:
        !          11510: 1998-11-03 14:56  millert
        !          11511:
        !          11512:        * config.h.in: add HAVE_ISCOMSEC and HAVE_ISSECURE
        !          11513:
        !          11514: 1998-11-03 14:55  millert
        !          11515:
        !          11516:        * configure.in: add check for iscomsec in HP-UX
        !          11517:
        !          11518: 1998-11-03 14:51  millert
        !          11519:
        !          11520:        * configure.in: check for issecure if we have getpwanam on SunOS
        !          11521:          some options are incompatible with DUNIX SIA check for dispcrypt
        !          11522:          on DUNIX
        !          11523:
        !          11524: 1998-10-25 15:21  millert
        !          11525:
        !          11526:        * config.h.in: add HAVE_DISPCRYPT
        !          11527:
        !          11528: 1998-10-25 15:21  millert
        !          11529:
        !          11530:        * secureware.c: add back support for non-dispcrypt based checking
        !          11531:          for older DUNIX
        !          11532:
        !          11533: 1998-10-25 00:51  millert
        !          11534:
        !          11535:        * INSTALL: sia changes
        !          11536:
        !          11537: 1998-10-25 00:48  millert
        !          11538:
        !          11539:        * configure.in: SIA becomes the default on Digital UNIX now havbe
        !          11540:          --disable-sia to turn it off...
        !          11541:
        !          11542: 1998-10-24 23:52  millert
        !          11543:
        !          11544:        * check.c: move local includes after system ones
        !          11545:
        !          11546: 1998-10-24 19:28  millert
        !          11547:
        !          11548:        * check.c, check_sia.c, sudo.h: add pass_warn() which prints out
        !          11549:          INCORRECT_PASSWORD or an insult to stderr
        !          11550:
        !          11551: 1998-10-24 19:07  millert
        !          11552:
        !          11553:        * check_sia.c: fix while loop in sia_attempt_auth() that checks the
        !          11554:          password.  Only the first iteration was working.
        !          11555:
        !          11556: 1998-10-21 21:00  millert
        !          11557:
        !          11558:        * aclocal.m4: don't trust UID_MAX or MAXUID
        !          11559:
        !          11560: 1998-10-21 20:35  millert
        !          11561:
        !          11562:        * configure.in: fix two pastos
        !          11563:
        !          11564: 1998-10-21 20:30  millert
        !          11565:
        !          11566:        * configure.in: fix typo
        !          11567:
        !          11568: 1998-10-21 20:19  millert
        !          11569:
        !          11570:        * getspwuid.c, secureware.c: init crypt_type to INT_MAX since it is
        !          11571:          legal to be negative in DUNX 5.0
        !          11572:
        !          11573: 1998-10-21 20:15  millert
        !          11574:
        !          11575:        * configure.in: for secureware on dunix, use -lsecurity -ldb -laud
        !          11576:          -lm but check for -ldb since DUNX < 4.0 lacks it
        !          11577:
        !          11578: 1998-10-21 19:50  millert
        !          11579:
        !          11580:        * check.c, compat.h, config.h.in, configure.in, getspwuid.c,
        !          11581:          secureware.c, sudo.c, tgetpass.c: getprpwuid is broken in HP-UX
        !          11582:          10.20 at least (it sleeps for 2 minutes if the shadow files don't
        !          11583:          exist).
        !          11584:
        !          11585: 1998-10-20 17:22  millert
        !          11586:
        !          11587:        * INSTALL: updated --with-editor blurb
        !          11588:
        !          11589: 1998-10-20 17:21  millert
        !          11590:
        !          11591:        * TROUBLESHOOTING: tell how to put sudoers in a different dir
        !          11592:
        !          11593: 1998-10-20 16:22  millert
        !          11594:
        !          11595:        * configure.in: add missing quotes around $with_editor
        !          11596:
        !          11597: 1998-10-20 14:00  millert
        !          11598:
        !          11599:        * configure.in: typo in --with-editor bits
        !          11600:
        !          11601: 1998-10-20 01:24  millert
        !          11602:
        !          11603:        * INSTALL: I don't expect it to work on Solaris
        !          11604:
        !          11605: 1998-10-20 01:24  millert
        !          11606:
        !          11607:        * check.c: add back security/pam_misc.h
        !          11608:
        !          11609: 1998-10-19 17:13  millert
        !          11610:
        !          11611:        * INSTALL: remove dunix note since configure checks for this now
        !          11612:
        !          11613: 1998-10-19 16:30  millert
        !          11614:
        !          11615:        * configure.in: add check for broken dunix prot.h (4.0 < 4.0D is
        !          11616:          bad)
        !          11617:
        !          11618: 1998-10-19 14:32  millert
        !          11619:
        !          11620:        * getspwuid.c, secureware.c, tgetpass.c: new dunix shadow code, use
        !          11621:          dispcrypt(3)
        !          11622:
        !          11623: 1998-10-19 14:32  millert
        !          11624:
        !          11625:        * config.h.in: add HAVE_INITPRIVS
        !          11626:
        !          11627: 1998-10-19 14:31  millert
        !          11628:
        !          11629:        * sudo.c: call initprivs() if we have it for getprpwuid later on
        !          11630:
        !          11631: 1998-10-19 14:30  millert
        !          11632:
        !          11633:        * Makefile.in: clean pathnames.h too
        !          11634:
        !          11635: 1998-10-19 14:28  millert
        !          11636:
        !          11637:        * configure.in: quote "Sorry, try again." with [] since it has a
        !          11638:          comma in it set LIBS when we add stuff to SUDO_LIBS set
        !          11639:          SECUREWARE when we find getprpwuid() so we can check for
        !          11640:          bigcrypt, set_auth_parameters, and initprivs later.
        !          11641:
        !          11642: 1998-10-19 13:48  millert
        !          11643:
        !          11644:        * INSTALL: update Digital UNIX note about acl.h
        !          11645:
        !          11646: 1998-10-18 20:26  millert
        !          11647:
        !          11648:        * INSTALL: add --with-sia --without-root-sudo ->
        !          11649:          --disable-root-sudo some reordering
        !          11650:
        !          11651: 1998-10-18 20:22  millert
        !          11652:
        !          11653:        * secureware.c: add whitespace
        !          11654:
        !          11655: 1998-10-18 20:22  millert
        !          11656:
        !          11657:        * Makefile.in, check.c, config.h.in, configure.in, logging.c,
        !          11658:          sudo.h: add SIA support
        !          11659:
        !          11660: 1998-10-18 20:21  millert
        !          11661:
        !          11662:        * check_sia.c: Initial revision
        !          11663:
        !          11664: 1998-10-18 19:42  millert
        !          11665:
        !          11666:        * configure.in: when checking for -lsocket, -lnsl, and -linet,
        !          11667:          check for the specific functions we need from them.
        !          11668:
        !          11669: 1998-10-18 19:10  millert
        !          11670:
        !          11671:        * config.h.in, sudo.h: move Syslog_* defs into sudo.h
        !          11672:
        !          11673: 1998-10-18 18:15  millert
        !          11674:
        !          11675:        * sudo.h, Makefile.in: added check_secureware
        !          11676:
        !          11677: 1998-10-18 18:12  millert
        !          11678:
        !          11679:        * configure.in: finished adding AC_MSG_CHECKING and AC_MSG_RESULT
        !          11680:          bits
        !          11681:
        !          11682: 1998-10-18 18:00  millert
        !          11683:
        !          11684:        * insults.h: don't define CLASSIC_INSULTS and CSOPS_INSULTS if no
        !          11685:          other sets defined.  configure now does that for us
        !          11686:
        !          11687: 1998-10-18 17:45  millert
        !          11688:
        !          11689:        * configure.in: move some --with options around change a bunch of
        !          11690:          echo's to AC_MSG_CHECKING, AC_MSG_RESULT pairs
        !          11691:
        !          11692: 1998-10-18 01:09  millert
        !          11693:
        !          11694:        * configure.in: change $with_foo-bar -> $with_foo_bar kill extra "
        !          11695:          that caused a syntax error add some echo verbage
        !          11696:
        !          11697: 1998-10-17 18:08  millert
        !          11698:
        !          11699:        * check.c: moved SecureWare stuff into secureware.c
        !          11700:
        !          11701: 1998-10-17 18:07  millert
        !          11702:
        !          11703:        * secureware.c: Initial revision
        !          11704:
        !          11705: 1998-10-17 17:02  millert
        !          11706:
        !          11707:        * INSTALL: update url to solaris gcc bins
        !          11708:
        !          11709: 1998-10-17 16:39  millert
        !          11710:
        !          11711:        * INSTALL: change option formatter and flesh out someentries
        !          11712:
        !          11713: 1998-10-17 16:18  millert
        !          11714:
        !          11715:        * sudo.pod, visudo.pod, TROUBLESHOOTING: environmental variable ->
        !          11716:          environment variable
        !          11717:
        !          11718: 1998-10-17 16:01  millert
        !          11719:
        !          11720:        * BUGS: everything is now done via configure
        !          11721:
        !          11722: 1998-10-17 16:00  millert
        !          11723:
        !          11724:        * README: prev rev was 1.5.6
        !          11725:
        !          11726: 1998-10-17 00:33  millert
        !          11727:
        !          11728:        * Makefile.in: passing SUDOERS_MODE, SUDOERS_UID, SUDOERS_GID
        !          11729:          correctly
        !          11730:
        !          11731: 1998-10-17 00:32  millert
        !          11732:
        !          11733:        * config.h.in: SUDOERS_MODE, SUDOERS_UID, SUDOERS_GID now come from
        !          11734:          the Makefile
        !          11735:
        !          11736: 1998-10-17 00:31  millert
        !          11737:
        !          11738:        * Makefile.in: merge OSDEFS and OPTIONS into DEFS get sudoers_uid,
        !          11739:          sudoers_gid, sudoers_mode from configure
        !          11740:
        !          11741: 1998-10-17 00:30  millert
        !          11742:
        !          11743:        * configure.in: SUDOERS_MODE, SUDOERS_UID, and SUDOERS_GID now get
        !          11744:          substituted into the Makefile, not config.h
        !          11745:
        !          11746: 1998-10-17 00:30  millert
        !          11747:
        !          11748:        * INSTALL: document all --with/--enable options
        !          11749:
        !          11750: 1998-10-15 02:25  millert
        !          11751:
        !          11752:        * insults.h: options.h is no more
        !          11753:
        !          11754: 1998-10-15 02:25  millert
        !          11755:
        !          11756:        * config.h.in: assimilated options.h
        !          11757:
        !          11758: 1998-10-15 02:24  millert
        !          11759:
        !          11760:        * configure.in: moved options from options.h to configure
        !          11761:
        !          11762: 1998-10-15 01:41  millert
        !          11763:
        !          11764:        * check.c, find_path.c, getspwuid.c, goodpath.c, interfaces.c,
        !          11765:          logging.c, parse.c, parse.lex, parse.yacc, sudo.c, sudo.pod,
        !          11766:          sudo_setenv.c, visudo.c: no more options.h
        !          11767:
        !          11768: 1998-10-15 01:39  millert
        !          11769:
        !          11770:        * INSTALL, Makefile.in, PORTING, TROUBLESHOOTING: remove references
        !          11771:          to options.h
        !          11772:
        !          11773: 1998-10-15 01:32  millert
        !          11774:
        !          11775:        * interfaces.c, dce_pwent.c, sudo.c: kill sys/time.h
        !          11776:
        !          11777: 1998-10-15 00:10  millert
        !          11778:
        !          11779:        * tgetpass.c: if select return < -1 still prompt for pw
        !          11780:
        !          11781: 1998-10-15 00:03  millert
        !          11782:
        !          11783:        * options.h: convert LOGGING, LOGFAC, MAXLOGFILELEN,
        !          11784:          IGNORE_DOT_PATH into configure options
        !          11785:
        !          11786: 1998-10-14 23:57  millert
        !          11787:
        !          11788:        * parse.c: FAST_MATCH is no longer an optino
        !          11789:
        !          11790: 1998-10-14 23:52  millert
        !          11791:
        !          11792:        * check.c: remove_timestamp() if timestamp is preposterous
        !          11793:
        !          11794: 1998-10-14 23:36  millert
        !          11795:
        !          11796:        * options.h: convert more options to --with/--enable
        !          11797:
        !          11798: 1998-10-14 23:36  millert
        !          11799:
        !          11800:        * INSTALL, aclocal.m4: logfile -> logpath
        !          11801:
        !          11802: 1998-10-14 23:31  millert
        !          11803:
        !          11804:        * configure.in: convert more options into --with and --enable
        !          11805:
        !          11806: 1998-10-14 23:28  millert
        !          11807:
        !          11808:        * tgetpass.c: catch EINTR in select and restart
        !          11809:
        !          11810: 1998-10-14 23:15  millert
        !          11811:
        !          11812:        * logging.c: sys/errno -> errno
        !          11813:
        !          11814: 1998-09-24 11:40  millert
        !          11815:
        !          11816:        * sudo.c: UMASK -> SUDO_UMASK.
        !          11817:
        !          11818: 1998-09-24 11:36  millert
        !          11819:
        !          11820:        * check.c, logging.c: time.h, not sys/time.h
        !          11821:
        !          11822: 1998-09-21 19:52  millert
        !          11823:
        !          11824:        * logging.c: MAILER -> _PATH_SENDMAIL
        !          11825:
        !          11826: 1998-09-21 00:06  millert
        !          11827:
        !          11828:        * INSTALL, configure.in: no more --with-C2, now it is
        !          11829:          --disable-shadow
        !          11830:
        !          11831: 1998-09-21 00:00  millert
        !          11832:
        !          11833:        * aclocal.m4, check.c, compat.h, config.h.in, configure.in,
        !          11834:          getspwuid.c, sudo.c, tgetpass.c: new shadow password scheme.
        !          11835:          Always include shadow support if the platform supports it and the
        !          11836:          user did not disable it via configure
        !          11837:
        !          11838: 1998-09-20 19:48  millert
        !          11839:
        !          11840:        * configure.in: --with-getpass -> --{enable,disable}-tgetpass
        !          11841:
        !          11842: 1998-09-20 19:16  millert
        !          11843:
        !          11844:        * Makefile.in: pathnames.h -> pathnames.h.in
        !          11845:
        !          11846: 1998-09-20 19:14  millert
        !          11847:
        !          11848:        * check.c: fix version string
        !          11849:
        !          11850: 1998-09-20 19:12  millert
        !          11851:
        !          11852:        * check.c: move pam_conv to be static to auth function remove
        !          11853:          pam_misc.h (solaris doesn't have one)
        !          11854:
        !          11855: 1998-09-20 19:10  millert
        !          11856:
        !          11857:        * aclocal.m4: _CONFIG_PATH_* -> _PATH_* or _PATH_SUDO_* kill
        !          11858:          SUDO_PROG_PWD
        !          11859:
        !          11860: 1998-09-20 19:10  millert
        !          11861:
        !          11862:        * configure.in: munge pathnames.h.in -> pathnames.h kill
        !          11863:          SUDO_PROG_PWD
        !          11864:
        !          11865: 1998-09-20 19:10  millert
        !          11866:
        !          11867:        * pathnames.h.in: convert to pathnames.h.in
        !          11868:
        !          11869: 1998-09-18 20:20  millert
        !          11870:
        !          11871:        * configure.in: fix typo in sysv4 matching case /.
        !          11872:
        !          11873: 1998-09-18 01:29  millert
        !          11874:
        !          11875:        * check.c: pam stuff needs to run as root, not user, for shadow
        !          11876:          passwords
        !          11877:
        !          11878: 1998-09-17 12:26  millert
        !          11879:
        !          11880:        * Makefile.in, emul/utime.h, check.c, compat.h, config.h.in,
        !          11881:          dce_pwent.c, find_path.c, getspwuid.c, goodpath.c, ins_2001.h,
        !          11882:          ins_classic.h, ins_csops.h, ins_goons.h, insults.h, interfaces.c,
        !          11883:          logging.c, options.h, parse.c, parse.lex, parse.yacc,
        !          11884:          pathnames.h.in, putenv.c, strdup.c, sudo.c, sudo.h,
        !          11885:          sudo_setenv.c, testsudoers.c, tgetpass.c, utime.c, visudo.c,
        !          11886:          BUGS, INSTALL, README, configure.in: updated version
        !          11887:
        !          11888: 1998-09-17 12:13  millert
        !          11889:
        !          11890:        * check.c: user version.h for long message
        !          11891:
        !          11892: 1998-09-17 11:53  millert
        !          11893:
        !          11894:        * check.c: this is version 1.5.6
        !          11895:
        !          11896: 1998-09-16 13:42  millert
        !          11897:
        !          11898:        * Makefile.in: remove errant backslash
        !          11899:
        !          11900: 1998-09-14 22:25  millert
        !          11901:
        !          11902:        * options.h, parse.yacc, pathnames.h.in: fix version string
        !          11903:
        !          11904: 1998-09-14 22:02  millert
        !          11905:
        !          11906:        * BUGS, CHANGES, TODO: updtaed for 1.5.6
        !          11907:
        !          11908: 1998-09-14 22:02  millert
        !          11909:
        !          11910:        * RUNSON: updated for 1.5.6
        !          11911:
        !          11912: 1998-09-14 11:48  millert
        !          11913:
        !          11914:        * interfaces.c: kill unused localhost_mask var copy if name to
        !          11915:          ifr_tmp after we zero it
        !          11916:
        !          11917: 1998-09-13 15:50  millert
        !          11918:
        !          11919:        * INSTALL: Better description of new vs. old sudoers modes fix some
        !          11920:          typos better description of /usr/ucb/cc gotchas on slowaris
        !          11921:
        !          11922: 1998-09-13 15:49  millert
        !          11923:
        !          11924:        * Makefile.in: add sample.pam
        !          11925:
        !          11926: 1998-09-13 15:32  millert
        !          11927:
        !          11928:        * sudo.c: set NewArgv[0] to user_shell, not basename(user_shell)
        !          11929:
        !          11930: 1998-09-12 11:10  millert
        !          11931:
        !          11932:        * README: mention TROUBLESHOOTING more fix some typos
        !          11933:
        !          11934: 1998-09-11 20:30  millert
        !          11935:
        !          11936:        * configure.in: move --enable/--disable to be after --with
        !          11937:
        !          11938: 1998-09-11 20:30  millert
        !          11939:
        !          11940:        * INSTALL: document --enable/--disable
        !          11941:
        !          11942: 1998-09-11 20:26  millert
        !          11943:
        !          11944:        * INSTALL: document --with-pam
        !          11945:
        !          11946: 1998-09-11 19:47  millert
        !          11947:
        !          11948:        * configure.in: Add message for pam users
        !          11949:
        !          11950: 1998-09-11 19:27  millert
        !          11951:
        !          11952:        * sample.pam: Initial revision
        !          11953:
        !          11954: 1998-09-11 19:23  millert
        !          11955:
        !          11956:        * config.h.in: fix HAVE_PAM
        !          11957:
        !          11958: 1998-09-11 19:19  millert
        !          11959:
        !          11960:        * check.c, config.h.in, configure.in: pam support, from Gary Calvin
        !          11961:          <GCalvin@kenwoodusa.com>
        !          11962:
        !          11963: 1998-09-10 18:51  millert
        !          11964:
        !          11965:        * config.h.in: add HOST_IN_LOG and WRAP_LOG
        !          11966:
        !          11967: 1998-09-10 18:51  millert
        !          11968:
        !          11969:        * logging.c: add WRAP_LOG and HOST_IN_LOG
        !          11970:
        !          11971: 1998-09-10 18:37  millert
        !          11972:
        !          11973:        * configure.in: add --enable-log-host and --enable-log-wrap
        !          11974:
        !          11975: 1998-09-10 18:32  millert
        !          11976:
        !          11977:        * aclocal.m4: use AC_DEFINE_UNQUOTED for --with-logfile and
        !          11978:          --with-timedir
        !          11979:
        !          11980: 1998-09-08 20:45  millert
        !          11981:
        !          11982:        * compat.h: add howmany macro
        !          11983:
        !          11984: 1998-09-08 20:43  millert
        !          11985:
        !          11986:        * tgetpass.c: include sys/param.h to get howmany macro
        !          11987:
        !          11988: 1998-09-07 20:42  millert
        !          11989:
        !          11990:        * OPTIONS, options.h, parse.yacc, sudo.c, testsudoers.c, visudo.c:
        !          11991:          add RUNAS_DEFAULT
        !          11992:
        !          11993: 1998-09-07 12:51  millert
        !          11994:
        !          11995:        * fnmatch.c: bring in stdio.h for NULL
        !          11996:
        !          11997: 1998-09-07 12:50  millert
        !          11998:
        !          11999:        * aclocal.m4: allow /bin/{ksh,bach} and /usr/bin/{ksh,bash} as sh
        !          12000:
        !          12001: 1998-09-07 12:43  millert
        !          12002:
        !          12003:        * sudo.c: use HAVE_SET_AUTH_PARAMETERS
        !          12004:
        !          12005: 1998-09-07 12:42  millert
        !          12006:
        !          12007:        * config.h.in: add HAVE_SET_AUTH_PARAMETERS
        !          12008:
        !          12009: 1998-09-07 12:41  millert
        !          12010:
        !          12011:        * configure.in: add *-*-hiuxmpp* add test for set_auth_parameters()
        !          12012:          if secureware
        !          12013:
        !          12014: 1998-09-07 12:39  millert
        !          12015:
        !          12016:        * config.sub: add support for HI-UX/MPP SR220001 02-03 0 SR2201
        !          12017:
        !          12018: 1998-09-07 12:06  millert
        !          12019:
        !          12020:        * interfaces.c: initialize previfname
        !          12021:
        !          12022: 1998-09-07 11:51  millert
        !          12023:
        !          12024:        * interfaces.c: Don't use SIOCGIFADDR, we don't need it Use
        !          12025:          SIOCGIFFLAGS if we have it check ifr_flags against IFF_UP and
        !          12026:          IFF_LOOPBACK instead of kludging it
        !          12027:
        !          12028: 1998-09-07 11:49  millert
        !          12029:
        !          12030:        * configure.in: typo
        !          12031:
        !          12032: 1998-09-07 00:01  millert
        !          12033:
        !          12034:        * Makefile.in: don't need special build line for sudo.tab.o
        !          12035:
        !          12036: 1998-09-06 23:58  millert
        !          12037:
        !          12038:        * Makefile.in: don't clean sudo.tab.[ch]
        !          12039:
        !          12040: 1998-09-06 23:48  millert
        !          12041:
        !          12042:        * sudo.c: Sudo should prompt for a password before telling the user
        !          12043:          that a command could not be found.
        !          12044:
        !          12045: 1998-09-06 23:47  millert
        !          12046:
        !          12047:        * BUGS: for 1.5.6
        !          12048:
        !          12049: 1998-09-06 23:25  millert
        !          12050:
        !          12051:        * INSTALL, README: no longer require yacc
        !          12052:
        !          12053: 1998-09-06 23:19  millert
        !          12054:
        !          12055:        * Makefile.in: typo
        !          12056:
        !          12057: 1998-09-06 23:18  millert
        !          12058:
        !          12059:        * Makefile.in: y.tab -> sudo.tab include pre-yacc'd parse.yacc
        !          12060:
        !          12061: 1998-09-06 23:09  millert
        !          12062:
        !          12063:        * parse.lex: include sudo.tab.h, not y.tab.h don't break out of
        !          12064:          command args if you get a '='
        !          12065:
        !          12066: 1998-09-06 22:59  millert
        !          12067:
        !          12068:        * insults.h: fix version ,
        !          12069:
        !          12070: 1998-09-06 22:57  millert
        !          12071:
        !          12072:        * compat.h, ins_2001.h, ins_classic.h, ins_csops.h, ins_goons.h:
        !          12073:          fix version
        !          12074:
        !          12075: 1998-09-06 22:55  millert
        !          12076:
        !          12077:        * getcwd.c: getcwd(3) from OpenBSD for those without it.
        !          12078:
        !          12079: 1998-09-06 22:51  millert
        !          12080:
        !          12081:        * sudo.h: HAVE_GETWD -> HAVE_GETCWD
        !          12082:
        !          12083: 1998-09-06 22:49  millert
        !          12084:
        !          12085:        * configure.in: pretend sunos doesn't have getcwd(3) since it opens
        !          12086:          a pipe to getpwd!
        !          12087:
        !          12088: 1998-09-06 22:41  millert
        !          12089:
        !          12090:        * parse.c: use NAMLEN() macro
        !          12091:
        !          12092: 1998-09-06 22:34  millert
        !          12093:
        !          12094:        * fnmatch.c: remove duplicate include of string.h
        !          12095:
        !          12096: 1998-09-06 22:28  millert
        !          12097:
        !          12098:        * configure.in: call SUDO_TYPE_DEV_T and SUDO_TYPE_INO_T
        !          12099:
        !          12100: 1998-09-06 22:28  millert
        !          12101:
        !          12102:        * aclocal.m4: add SUDO_TYPE_DEV_T and SUDO_TYPE_INO_T
        !          12103:
        !          12104: 1998-09-06 22:28  millert
        !          12105:
        !          12106:        * config.h.in: add dev_t and ino_t
        !          12107:
        !          12108: 1998-07-28 12:44  millert
        !          12109:
        !          12110:        * check.c: fix OTP_ONLY for opie
        !          12111:
        !          12112: 1998-06-24 12:22  millert
        !          12113:
        !          12114:        * testsudoers.c, tgetpass.c: include stdlib.h for malloc proto
        !          12115:
        !          12116: 1998-05-19 00:10  millert
        !          12117:
        !          12118:        * Makefile.in: make update_version saner
        !          12119:
        !          12120: 1998-05-18 23:32  millert
        !          12121:
        !          12122:        * config.h.in: add HAVE_WAITPID, HAVE_WAIT3, and sudo_waitpid()
        !          12123:
        !          12124: 1998-05-18 23:32  millert
        !          12125:
        !          12126:        * configure.in: check for waitpid and wait3 or no waitpid
        !          12127:
        !          12128: 1998-05-18 23:31  millert
        !          12129:
        !          12130:        * logging.c: used waitpid or wait3 if we have 'em
        !          12131:
        !          12132: 1998-05-02 14:16  millert
        !          12133:
        !          12134:        * visudo.c: fix some fprintf args, ariel@oz.engr.sgi.com (Ariel
        !          12135:          Faigon)
        !          12136:
        !          12137: 1998-04-27 20:09  millert
        !          12138:
        !          12139:        * configure.in: don't need to explicately mention -lsocket -lnsl
        !          12140:          for sequent
        !          12141:
        !          12142: 1998-04-25 01:56  millert
        !          12143:
        !          12144:        * configure.in: dynix should not link with -linet
        !          12145:
        !          12146: 1998-04-10 15:32  millert
        !          12147:
        !          12148:        * INSTALL: mention that HP-UX doesn't ship with yacc
        !          12149:
        !          12150: 1998-04-06 22:35  millert
        !          12151:
        !          12152:        * check.c: ignore kerberos if we can't get the local realm
        !          12153:
        !          12154: 1998-04-05 23:37  millert
        !          12155:
        !          12156:        * configure.in, BUGS, INSTALL, README: ++version
        !          12157:
        !          12158: 1998-04-05 23:36  millert
        !          12159:
        !          12160:        * version.h: ++
        !          12161:
        !          12162: 1998-04-05 23:35  millert
        !          12163:
        !          12164:        * Makefile.in, emul/utime.h, check.c, config.h.in, dce_pwent.c,
        !          12165:          find_path.c, getspwuid.c, getcwd.c, goodpath.c, interfaces.c,
        !          12166:          logging.c, parse.c, parse.lex, putenv.c, strdup.c, sudo.c,
        !          12167:          sudo.h, sudo_setenv.c, testsudoers.c, tgetpass.c, utime.c,
        !          12168:          visudo.c: updated version
        !          12169:
        !          12170: 1998-04-05 23:34  millert
        !          12171:
        !          12172:        * check.c, sudo.h: fix version
        !          12173:
        !          12174: 1998-04-05 23:33  millert
        !          12175:
        !          12176:        * getcwd.c: don't use popen/pclose.  Do it inline.
        !          12177:
        !          12178: 1998-04-05 23:25  millert
        !          12179:
        !          12180:        * lsearch.c: add rcsid
        !          12181:
        !          12182: 1998-04-05 23:21  millert
        !          12183:
        !          12184:        * sudo.c: typo
        !          12185:
        !          12186: 1998-04-05 23:17  millert
        !          12187:
        !          12188:        * sudo.h, pathnames.h.in, compat.h, options.h, ins_2001.h,
        !          12189:          insults.h, ins_classic.h, ins_goons.h, ins_csops.h, parse.yacc,
        !          12190:          check.c: updated version
        !          12191:
        !          12192: 1998-04-05 23:15  millert
        !          12193:
        !          12194:        * check.c, find_path.c, parse.c, sudo.c, testsudoers.c: MAX* + 1 ->
        !          12195:          MAX*
        !          12196:
        !          12197: 1998-04-05 23:14  millert
        !          12198:
        !          12199:        * Makefile.in: getwd.c -> getcwd.c
        !          12200:
        !          12201: 1998-04-05 22:49  millert
        !          12202:
        !          12203:        * config.h.in: kill HAVE_GETWD
        !          12204:
        !          12205: 1998-04-05 22:49  millert
        !          12206:
        !          12207:        * configure.in: getcwd, not getwd
        !          12208:
        !          12209: 1998-04-05 22:48  millert
        !          12210:
        !          12211:        * getcwd.c: use MAX* not MAX* + 1 always run pwd as using getwd()
        !          12212:          defeats the purpose
        !          12213:
        !          12214: 1998-03-31 00:15  millert
        !          12215:
        !          12216:        * OPTIONS, options.h: add STUB_LOAD_INTERFACES
        !          12217:
        !          12218: 1998-03-31 00:05  millert
        !          12219:
        !          12220:        * Makefile.in, check.c, emul/utime.h, compat.h, config.h.in,
        !          12221:          dce_pwent.c, find_path.c, getspwuid.c, getwd.c, goodpath.c,
        !          12222:          ins_2001.h, ins_classic.h, ins_csops.h, ins_goons.h, insults.h,
        !          12223:          interfaces.c, logging.c, options.h, parse.c, parse.lex,
        !          12224:          parse.yacc, pathnames.h.in, putenv.c, strdup.c, sudo.c, sudo.h,
        !          12225:          sudo_setenv.c, testsudoers.c, tgetpass.c, utime.c, visudo.c:
        !          12226:          updated version
        !          12227:
        !          12228: 1998-03-30 23:54  millert
        !          12229:
        !          12230:        * configure.in: support *-ccur-sysv4 and fix two typos
        !          12231:
        !          12232: 1998-03-27 19:52  millert
        !          12233:
        !          12234:        * configure.in: don't echo about with_logfile and with_timedir
        !          12235:
        !          12236: 1998-03-27 19:49  millert
        !          12237:
        !          12238:        * INSTALL: document --with-logfile and --with-timedir
        !          12239:
        !          12240: 1998-03-27 19:46  millert
        !          12241:
        !          12242:        * aclocal.m4: support --with-logfile and --with-timedir
        !          12243:
        !          12244: 1998-03-27 19:46  millert
        !          12245:
        !          12246:        * configure.in: Add --with-logfile and --with-timedir
        !          12247:
        !          12248: 1998-03-27 19:27  millert
        !          12249:
        !          12250:        * sudo.c: change size computation of NewArgv for UNICOS
        !          12251:
        !          12252: 1998-02-18 20:10  millert
        !          12253:
        !          12254:        * configure.in: treate -*-sysv4* like *-*-svr4
        !          12255:
        !          12256: 1998-02-18 18:19  millert
        !          12257:
        !          12258:        * configure.in: fix spacing for --with-authenticate help
        !          12259:
        !          12260: 1998-02-18 16:39  millert
        !          12261:
        !          12262:        * Makefile.in, check.c, emul/utime.h, compat.h, config.h.in,
        !          12263:          dce_pwent.c, find_path.c, getspwuid.c, getwd.c, goodpath.c,
        !          12264:          ins_2001.h, ins_classic.h, ins_csops.h, ins_goons.h, insults.h,
        !          12265:          interfaces.c, logging.c, options.h, parse.c, parse.lex,
        !          12266:          parse.yacc, pathnames.h.in, putenv.c, strdup.c, sudo.c, sudo.h,
        !          12267:          sudo_setenv.c, testsudoers.c, tgetpass.c, utime.c, visudo.c:
        !          12268:          updated version
        !          12269:
        !          12270: 1998-02-18 16:23  millert
        !          12271:
        !          12272:        * parse.yacc: fix off by one error in push macro
        !          12273:
        !          12274: 1998-02-17 01:15  millert
        !          12275:
        !          12276:        * configure.in: removed bogus alloca hack
        !          12277:
        !          12278: 1998-02-17 01:15  millert
        !          12279:
        !          12280:        * check.c: added AIX 4.x authenticate() support
        !          12281:
        !          12282: 1998-02-17 01:11  millert
        !          12283:
        !          12284:        * parse.yacc: include alloca.h if using bison and not gcc and it
        !          12285:          exists.  fixes an alloca problem on hpux 10.x
        !          12286:
        !          12287: 1998-02-17 00:39  millert
        !          12288:
        !          12289:        * INSTALL: mention --with-authenticate
        !          12290:
        !          12291: 1998-02-17 00:37  millert
        !          12292:
        !          12293:        * configure.in: added AIX authenticate() support
        !          12294:
        !          12295: 1998-02-17 00:22  millert
        !          12296:
        !          12297:        * config.h.in: add HAVE_AUTHENTICATE
        !          12298:
        !          12299: 1998-02-16 23:58  millert
        !          12300:
        !          12301:        * interfaces.c: dynamically size ifconf buffer
        !          12302:
        !          12303: 1998-02-16 23:56  millert
        !          12304:
        !          12305:        * configure.in: quote '[' and ']'
        !          12306:
        !          12307: 1998-02-16 21:42  millert
        !          12308:
        !          12309:        * Makefile.in, emul/utime.h, check.c, compat.h, config.h.in,
        !          12310:          dce_pwent.c, find_path.c, getspwuid.c, getwd.c, goodpath.c,
        !          12311:          ins_2001.h, ins_classic.h, ins_csops.h, ins_goons.h, insults.h,
        !          12312:          logging.c, options.h, parse.c, parse.lex, parse.yacc,
        !          12313:          pathnames.h.in, putenv.c, strdup.c, sudo.c, sudo.h,
        !          12314:          sudo_setenv.c, testsudoers.c, tgetpass.c, utime.c, visudo.c:
        !          12315:          updated version
        !          12316:
        !          12317: 1998-02-16 19:06  millert
        !          12318:
        !          12319:        * visudo.pod: add ERRORS section
        !          12320:
        !          12321: 1998-02-16 18:57  millert
        !          12322:
        !          12323:        * TROUBLESHOOTING: add busy stmp file explanation
        !          12324:
        !          12325: 1998-02-15 18:49  millert
        !          12326:
        !          12327:        * configure.in: the name of the cached var that signals whether or
        !          12328:          not you are cross compiling changed.  It is now
        !          12329:          ac_cv_prog_cc_cross
        !          12330:
        !          12331: 1998-02-11 16:26  millert
        !          12332:
        !          12333:        * INSTALL: mention glibc 2.07 is fixed wrt lsearch()\.
        !          12334:
        !          12335: 1998-02-06 21:55  millert
        !          12336:
        !          12337:        * sample.sudoers, sudoers.pod: better example of su but not root su
        !          12338:
        !          12339: 1998-02-06 15:49  millert
        !          12340:
        !          12341:        * Makefile.in, check.c, emul/utime.h, compat.h, config.h.in,
        !          12342:          dce_pwent.c, find_path.c, getspwuid.c, getwd.c, goodpath.c,
        !          12343:          ins_2001.h, ins_classic.h, ins_csops.h, ins_goons.h, insults.h,
        !          12344:          interfaces.c, logging.c, options.h, parse.c, parse.lex,
        !          12345:          parse.yacc, pathnames.h.in, putenv.c, strdup.c, sudo.c, sudo.h,
        !          12346:          sudo_setenv.c, testsudoers.c, tgetpass.c, utime.c, visudo.c:
        !          12347:          updated version
        !          12348:
        !          12349: 1998-02-06 15:48  millert
        !          12350:
        !          12351:        * Makefile.in: correct regexp for updating version
        !          12352:
        !          12353: 1998-02-06 14:05  millert
        !          12354:
        !          12355:        * tgetpass.c: remove bogus flush of stderr spew prompt before
        !          12356:          turning off echo.  Seems to fix a weird problem where if sudo
        !          12357:          complained about a bogus stamp file the user would sometimes not
        !          12358:          have a chance to enter a password
        !          12359:
        !          12360: 1998-02-06 14:05  millert
        !          12361:
        !          12362:        * check.c: fix bogus flush of stderr
        !          12363:
        !          12364: 1998-02-05 19:19  millert
        !          12365:
        !          12366:        * sudo.c: close fd's <=2 not <=3 and move that chunk of code up
        !          12367:
        !          12368: 1998-02-05 19:18  millert
        !          12369:
        !          12370:        * configure.in: support hpux1[0-9] not just hpux10
        !          12371:
        !          12372: 1998-01-30 14:59  millert
        !          12373:
        !          12374:        * parse.c: set sudoers_fp to nil after closing
        !          12375:
        !          12376: 1998-01-24 01:05  millert
        !          12377:
        !          12378:        * config.guess, config.sub: updated from autoconf 2.12
        !          12379:
        !          12380: 1998-01-24 00:50  millert
        !          12381:
        !          12382:        * configure.in: add *-*-svr4 rule
        !          12383:
        !          12384: 1998-01-22 22:53  millert
        !          12385:
        !          12386:        * tgetpass.c: fix select usage for high fd's (dynamically allocate
        !          12387:          readfds)
        !          12388:
        !          12389: 1998-01-22 22:49  millert
        !          12390:
        !          12391:        * check.c: kill extra whitespace
        !          12392:
        !          12393: 1998-01-22 19:28  millert
        !          12394:
        !          12395:        * sudo.c: do an initgroups() before running a command, unless the
        !          12396:          target user is root.
        !          12397:
        !          12398: 1998-01-22 12:22  millert
        !          12399:
        !          12400:        * TROUBLESHOOTING: tell people to use tabs, not spaces, in
        !          12401:          syslog.conf
        !          12402:
        !          12403: 1998-01-21 01:56  millert
        !          12404:
        !          12405:        * parse.lex, Makefile.in, config.h.in, getwd.c, strdup.c, putenv.c,
        !          12406:          emul/utime.h, testsudoers.c, utime.c, dce_pwent.c: updated
        !          12407:          version
        !          12408:
        !          12409: 1998-01-21 01:32  millert
        !          12410:
        !          12411:        * goodpath.c, sudo_setenv.c, interfaces.c, tgetpass.c, visudo.c:
        !          12412:          updated version
        !          12413:
        !          12414: 1998-01-21 01:29  millert
        !          12415:
        !          12416:        * sudo.h, pathnames.h.in, options.h, compat.h, insults.h,
        !          12417:          ins_2001.h, ins_classic.h, ins_goons.h, ins_csops.h, parse.yacc,
        !          12418:          check.c, getspwuid.c, find_path.c, logging.c, parse.c, sudo.c:
        !          12419:          updated version
        !          12420:
        !          12421: 1998-01-21 01:20  millert
        !          12422:
        !          12423:        * Makefile.in: more tweaks to update_version
        !          12424:
        !          12425: 1998-01-21 01:19  millert
        !          12426:
        !          12427:        * Makefile.in: fixed up update_version rule
        !          12428:
        !          12429: 1998-01-21 00:55  millert
        !          12430:
        !          12431:        * configure.in: ++version
        !          12432:
        !          12433: 1998-01-21 00:53  millert
        !          12434:
        !          12435:        * Makefile.in: removed supe of check.c
        !          12436:
        !          12437: 1998-01-21 00:51  millert
        !          12438:
        !          12439:        * INSTALL: ++version I missed
        !          12440:
        !          12441: 1998-01-21 00:51  millert
        !          12442:
        !          12443:        * RUNSON: updated
        !          12444:
        !          12445: 1998-01-21 00:48  millert
        !          12446:
        !          12447:        * Makefile.in, check.c, compat.h, config.h.in, dce_pwent.c,
        !          12448:          find_path.c, getspwuid.c, getwd.c, goodpath.c, ins_2001.h,
        !          12449:          ins_classic.h, ins_csops.h, ins_goons.h, insults.h, interfaces.c,
        !          12450:          logging.c, options.h, parse.c, parse.lex, parse.yacc,
        !          12451:          pathnames.h.in, putenv.c, strdup.c, sudo.c, sudo.h,
        !          12452:          sudo_setenv.c, testsudoers.c, tgetpass.c, utime.c, version.h,
        !          12453:          visudo.c, emul/utime.h, BUGS, INSTALL, README: updated version
        !          12454:
        !          12455: 1998-01-21 00:47  millert
        !          12456:
        !          12457:        * CHANGES: updated for 1.5.5
        !          12458:
        !          12459: 1998-01-21 00:35  millert
        !          12460:
        !          12461:        * Makefile.in: add rules to update version stuff in files so I
        !          12462:          don't need to do it by hand
        !          12463:
        !          12464: 1998-01-21 00:04  millert
        !          12465:
        !          12466:        * sudo.h: sudoers_fp is now extern
        !          12467:
        !          12468: 1998-01-21 00:03  millert
        !          12469:
        !          12470:        * sudo.c: in check_sudoers, cache the sudoers file handle in
        !          12471:          sudoers_fp so we don't have to open it again in the parse.  This
        !          12472:          may help with weird solaris problems where EAGAIN sometime
        !          12473:          occurrs.
        !          12474:
        !          12475: 1998-01-21 00:02  millert
        !          12476:
        !          12477:        * parse.c: sudoers file open is now done only in check_sudoers() so
        !          12478:          we just do a rewind() instead of an open.  May help people on
        !          12479:          solaris who were getting EAGAIN.
        !          12480:
        !          12481: 1998-01-16 11:43  millert
        !          12482:
        !          12483:        * INSTALL: mention that newer glibc is fixed
        !          12484:
        !          12485: 1998-01-13 12:58  millert
        !          12486:
        !          12487:        * sudo.c: newer irix uses _RLDN32_* envariables for 32-bit binaries
        !          12488:          so ignore _RLD* instead of _RLD_*
        !          12489:
        !          12490: 1998-01-13 10:32  millert
        !          12491:
        !          12492:        * parse.c: typo
        !          12493:
        !          12494: 1998-01-13 10:19  millert
        !          12495:
        !          12496:        * parse.c: fix that bug for real
        !          12497:
        !          12498: 1998-01-13 02:39  millert
        !          12499:
        !          12500:        * INSTALL: document Linux's libc6 brokenness.
        !          12501:
        !          12502: 1998-01-13 02:00  millert
        !          12503:
        !          12504:        * parse.yacc: -Wall
        !          12505:
        !          12506: 1998-01-13 01:22  millert
        !          12507:
        !          12508:        * RUNSON: updated
        !          12509:
        !          12510: 1998-01-13 00:50  millert
        !          12511:
        !          12512:        * TROUBLESHOOTING: remind people to HUP syslogd
        !          12513:
        !          12514: 1998-01-13 00:05  millert
        !          12515:
        !          12516:        * Makefile.in: add -O flag to tar
        !          12517:
        !          12518: 1998-01-13 00:00  millert
        !          12519:
        !          12520:        * TODO, RUNSON: updated
        !          12521:
        !          12522: 1998-01-12 23:59  millert
        !          12523:
        !          12524:        * sudo.pod: remove author's email addr.  people should mail
        !          12525:          sudo-bugs
        !          12526:
        !          12527: 1998-01-12 23:49  millert
        !          12528:
        !          12529:        * INSTALL: fix version
        !          12530:
        !          12531: 1998-01-12 23:48  millert
        !          12532:
        !          12533:        * README, check.c, compat.h, config.h.in, configure.in,
        !          12534:          dce_pwent.c, find_path.c, getspwuid.c, getwd.c, goodpath.c,
        !          12535:          ins_2001.h, ins_classic.h, ins_csops.h, ins_goons.h, insults.h,
        !          12536:          interfaces.c, logging.c, options.h, parse.c, parse.lex,
        !          12537:          parse.yacc, pathnames.h.in, putenv.c, strdup.c, sudo.c, sudo.h,
        !          12538:          sudo_setenv.c, testsudoers.c, tgetpass.c, utime.c, version.h,
        !          12539:          visudo.c: ++version
        !          12540:
        !          12541: 1998-01-12 23:44  millert
        !          12542:
        !          12543:        * RUNSON: updated
        !          12544:
        !          12545: 1998-01-12 23:42  millert
        !          12546:
        !          12547:        * INSTALL, Makefile.in: ++version
        !          12548:
        !          12549: 1998-01-12 23:41  millert
        !          12550:
        !          12551:        * CHANGES: updated fort 1.5.4
        !          12552:
        !          12553: 1998-01-12 23:41  millert
        !          12554:
        !          12555:        * check.c: exit(1) if user enters no passwd
        !          12556:
        !          12557: 1998-01-12 23:37  millert
        !          12558:
        !          12559:        * BUGS: ++version
        !          12560:
        !          12561: 1998-01-12 23:10  millert
        !          12562:
        !          12563:        * parse.c: commands can start with ./* not just /* -- fixes a
        !          12564:          serious security hole.
        !          12565:
        !          12566: 1997-12-21 18:17  millert
        !          12567:
        !          12568:        * sudo.c: Don't set the tty variable to NULL when we lack a tty,
        !          12569:          leave it as "unknown".
        !          12570:
        !          12571: 1997-11-23 13:29  millert
        !          12572:
        !          12573:        * sample.sudoers: fix usage of (username) in conjunction with , and
        !          12574:          !
        !          12575:
        !          12576: 1997-11-23 13:28  millert
        !          12577:
        !          12578:        * visudo.c: catch the case where the user is not in the passwd file
        !          12579:
        !          12580: 1997-11-23 13:24  millert
        !          12581:
        !          12582:        * tgetpass.c: use fileno(input) + 1 instead of getdtablesize() as
        !          12583:          the nfds arg to select(2)
        !          12584:
        !          12585: 1997-11-23 01:53  millert
        !          12586:
        !          12587:        * sudo.c: define tty global to an initial value to avoid dumping
        !          12588:          core in logging functions when passwd file is unavailable.
        !          12589:
        !          12590: 1997-11-23 01:51  millert
        !          12591:
        !          12592:        * sudo.c: do the set_perms(PERM_USER, sudo_mode) after we have
        !          12593:          gotten the passwd entry
        !          12594:
        !          12595: 1997-11-23 00:21  millert
        !          12596:
        !          12597:        * sudo.pod: talk about problem of ALL
        !          12598:
        !          12599: 1997-10-10 00:54  millert
        !          12600:
        !          12601:        * README: new web location
        !          12602:
        !          12603: 1997-10-10 00:54  millert
        !          12604:
        !          12605:        * INSTALL: fdesc bug is fixed in Open/Net BSD
        !          12606:
        !          12607: 1997-10-10 00:52  millert
        !          12608:
        !          12609:        * HISTORY: updates from Nieusma
        !          12610:
        !          12611: 1997-10-09 18:37  millert
        !          12612:
        !          12613:        * dce_pwent.c: move compat.h after the system includes
        !          12614:
        !          12615: 1997-08-06 14:58  millert
        !          12616:
        !          12617:        * logging.c: save errno from being clobbered by wait().  From Theo
        !          12618:
        !          12619: 1997-05-21 11:57  millert
        !          12620:
        !          12621:        * compat.h: fix an occurence of setresuid -> setreuid (typo)
        !          12622:
        !          12623: 1997-03-19 17:45  millert
        !          12624:
        !          12625:        * install-sh: check for path to strip
        !          12626:
        !          12627: 1997-01-15 19:05  millert
        !          12628:
        !          12629:        * logging.c: deal with maxfilelen < 0 case
        !          12630:
        !          12631: 1997-01-15 19:05  millert
        !          12632:
        !          12633:        * OPTIONS: fixed descriptin
        !          12634:
        !          12635: 1996-12-11 23:10  millert
        !          12636:
        !          12637:        * sudo.c: correct error message if mode/owner wrong and not
        !          12638:          statable by owner but is statable by root.
        !          12639:
        !          12640: 1996-11-23 02:18  millert
        !          12641:
        !          12642:        * config.guess, config.sub: autoconf 2.11
        !          12643:
        !          12644: 1996-11-16 14:42  millert
        !          12645:
        !          12646:        * CHANGES, RUNSON, TODO: sudo 1.5.3.
        !          12647:
        !          12648: 1996-11-14 15:08  millert
        !          12649:
        !          12650:        * sudo.h, parse.yacc: command_alias -> generic_alias
        !          12651:
        !          12652: 1996-11-13 22:50  millert
        !          12653:
        !          12654:        * sample.sudoers: added Runas_Alias example and fixed syntax errors
        !          12655:
        !          12656: 1996-11-13 22:50  millert
        !          12657:
        !          12658:        * OPTIONS, options.h: updated MAILSUBJECT
        !          12659:
        !          12660: 1996-11-13 22:49  millert
        !          12661:
        !          12662:        * logging.c: added %h expansion
        !          12663:
        !          12664: 1996-11-13 21:37  millert
        !          12665:
        !          12666:        * Makefile.in, check.c, compat.h, config.h.in, dce_pwent.c,
        !          12667:          find_path.c, getspwuid.c, getwd.c, goodpath.c, ins_2001.h,
        !          12668:          ins_classic.h, ins_csops.h, ins_goons.h, insults.h, interfaces.c,
        !          12669:          logging.c, options.h, parse.c, parse.lex, parse.yacc,
        !          12670:          pathnames.h.in, putenv.c, strdup.c, sudo.c, sudo.h,
        !          12671:          sudo_setenv.c, testsudoers.c, tgetpass.c, utime.c, version.h,
        !          12672:          visudo.c, INSTALL, README, configure.in: ++version
        !          12673:
        !          12674: 1996-11-13 20:01  millert
        !          12675:
        !          12676:        * emul/utime.h, BUGS: ++version
        !          12677:
        !          12678: 1996-11-13 19:45  millert
        !          12679:
        !          12680:        * sudoers.pod: document Runas_Alias
        !          12681:
        !          12682: 1996-11-13 19:22  millert
        !          12683:
        !          12684:        * visudo.pod: q (uid) -> Q
        !          12685:
        !          12686: 1996-11-13 19:21  millert
        !          12687:
        !          12688:        * visudo.c: buffer oflow checking q (uit) -> Q if yyparse() fails
        !          12689:          drop into whatnow
        !          12690:
        !          12691: 1996-11-13 19:05  millert
        !          12692:
        !          12693:        * parse.yacc: add size params to sprintf
        !          12694:
        !          12695: 1996-11-13 19:04  millert
        !          12696:
        !          12697:        * parse.lex: allow trailing space after '\\' but before '\n'
        !          12698:
        !          12699: 1996-11-13 19:04  millert
        !          12700:
        !          12701:        * find_path.c: off by one error in path size check
        !          12702:
        !          12703: 1996-11-13 19:03  millert
        !          12704:
        !          12705:        * check.c: sprintf paranoia
        !          12706:
        !          12707: 1996-11-12 11:59  millert
        !          12708:
        !          12709:        * parse.yacc: fixed more_aliases
        !          12710:
        !          12711: 1996-11-12 11:58  millert
        !          12712:
        !          12713:        * visudo.c: now warns if killed by signal ./
        !          12714:
        !          12715: 1996-11-11 10:49  millert
        !          12716:
        !          12717:        * parse.yacc: fix Runas_Alias stuff Alias's in runas list now get
        !          12718:          expanded (but it is gross)
        !          12719:
        !          12720: 1996-11-10 20:32  millert
        !          12721:
        !          12722:        * sudo.c: Can now deal with SUDOERS_UID == 0 and SUDOERS_MODE ==
        !          12723:          0400
        !          12724:
        !          12725: 1996-11-10 20:08  millert
        !          12726:
        !          12727:        * parse.yacc: add Runas_Alias support change FOO to FOO_ALIAS (ie:
        !          12728:          USER_ALIAS)
        !          12729:
        !          12730: 1996-11-10 20:02  millert
        !          12731:
        !          12732:        * parse.lex: Add Runas_Alias and simplify a rule.
        !          12733:
        !          12734: 1996-11-10 19:15  millert
        !          12735:
        !          12736:        * parse.yacc: always store User_Alias's since they can be used
        !          12737:          inside of a runas list.  Sigh.  Really need a Runas_Alias
        !          12738:          instead.
        !          12739:
        !          12740: 1996-10-30 18:04  millert
        !          12741:
        !          12742:        * visudo.c: deal with case where there is no sudoers file
        !          12743:
        !          12744: 1996-10-11 23:01  millert
        !          12745:
        !          12746:        * TROUBLESHOOTING: added one
        !          12747:
        !          12748: 1996-10-10 22:11  millert
        !          12749:
        !          12750:        * HISTORY, testsudoers.c: developement -> development
        !          12751:
        !          12752: 1996-10-10 22:08  millert
        !          12753:
        !          12754:        * INSTALL: added a note
        !          12755:
        !          12756: 1996-10-10 20:36  millert
        !          12757:
        !          12758:        * RUNSON: for 1.5.2
        !          12759:
        !          12760: 1996-10-10 20:36  millert
        !          12761:
        !          12762:        * CHANGES: updated
        !          12763:
        !          12764: 1996-10-10 00:56  millert
        !          12765:
        !          12766:        * PORTING: removed seteuid() notes
        !          12767:
        !          12768: 1996-10-09 13:37  millert
        !          12769:
        !          12770:        * compat.h: better seteuid() emulatino
        !          12771:
        !          12772: 1996-10-09 13:36  millert
        !          12773:
        !          12774:        * configure.in: added check for seteuid
        !          12775:
        !          12776: 1996-10-09 13:36  millert
        !          12777:
        !          12778:        * config.h.in: added HAVE_SETEUID
        !          12779:
        !          12780: 1996-10-08 19:22  millert
        !          12781:
        !          12782:        * configure.in: first stab at sequent support
        !          12783:
        !          12784: 1996-10-08 19:21  millert
        !          12785:
        !          12786:        * config.h.in: added HAVE_SYS_SELECT_H
        !          12787:
        !          12788: 1996-10-08 19:21  millert
        !          12789:
        !          12790:        * compat.h: sequent -> _SEQUENT_
        !          12791:
        !          12792: 1996-10-08 19:11  millert
        !          12793:
        !          12794:        * compat.h: added seteuid() macro for DYNIX
        !          12795:
        !          12796: 1996-10-08 18:54  millert
        !          12797:
        !          12798:        * tgetpass.c: _AIX -> HAVE_SYS_SELECT_H
        !          12799:
        !          12800: 1996-10-07 01:05  millert
        !          12801:
        !          12802:        * emul/utime.h, check.c, compat.h, dce_pwent.c, find_path.c,
        !          12803:          getspwuid.c, getwd.c, goodpath.c, ins_2001.h, ins_classic.h,
        !          12804:          ins_csops.h, ins_goons.h, insults.h, interfaces.c, options.h,
        !          12805:          pathnames.h.in, version.h, BUGS, INSTALL, Makefile.in, OPTIONS,
        !          12806:          README, config.h.in, logging.c, parse.c, parse.lex, parse.yacc,
        !          12807:          putenv.c, strdup.c, sudo_setenv.c, testsudoers.c, utime.c,
        !          12808:          visudo.c, tgetpass.c: ++version
        !          12809:
        !          12810: 1996-10-07 00:59  millert
        !          12811:
        !          12812:        * sudo.pod: added -H and SUDO_PS1
        !          12813:
        !          12814: 1996-10-07 00:55  millert
        !          12815:
        !          12816:        * configure.in: use SUDO_FUNC_FNMATCH
        !          12817:
        !          12818: 1996-10-07 00:54  millert
        !          12819:
        !          12820:        * aclocal.m4: added SUDO_FUNC_FNMATCH
        !          12821:
        !          12822: 1996-10-07 00:53  millert
        !          12823:
        !          12824:        * sudo.c: added -H flag
        !          12825:
        !          12826: 1996-10-07 00:53  millert
        !          12827:
        !          12828:        * sudo.h: added MODE_RESET_HOME /
        !          12829:
        !          12830: 1996-10-05 00:00  millert
        !          12831:
        !          12832:        * INSTALL: mention OPIE
        !          12833:
        !          12834: 1996-10-04 23:59  millert
        !          12835:
        !          12836:        * configure.in: added opie support
        !          12837:
        !          12838: 1996-10-04 23:59  millert
        !          12839:
        !          12840:        * check.c: added HAVE_OPIE and changed to *_OTP_*
        !          12841:
        !          12842: 1996-10-04 23:58  millert
        !          12843:
        !          12844:        * compat.h, config.h.in: added HAVE_OPIE
        !          12845:
        !          12846: 1996-10-04 23:58  millert
        !          12847:
        !          12848:        * OPTIONS, options.h: SKEY -> OTP
        !          12849:
        !          12850: 1996-10-03 23:27  millert
        !          12851:
        !          12852:        * check.c: moved fclose() in skey stuff.
        !          12853:
        !          12854: 1996-10-03 19:53  millert
        !          12855:
        !          12856:        * putenv.c: index -> strchr remove unnecesary stuff
        !          12857:
        !          12858: 1996-10-03 19:43  millert
        !          12859:
        !          12860:        * check.c: now call skeychallenge() to get challenge instead of
        !          12861:          making one up ourselves.  this way, we get extra goodies in the
        !          12862:          prompt.
        !          12863:
        !          12864: 1996-09-10 00:32  millert
        !          12865:
        !          12866:        * CHANGES: added one
        !          12867:
        !          12868: 1996-09-10 00:18  millert
        !          12869:
        !          12870:        * parse.lex: allow logins to start with a number (YUCK!)
        !          12871:
        !          12872: 1996-09-08 15:18  millert
        !          12873:
        !          12874:        * TROUBLESHOOTING: added soalris 2.5 vs 2.4 note
        !          12875:
        !          12876: 1996-09-08 15:15  millert
        !          12877:
        !          12878:        * configure.in: DUNIX doesn't need -lnsl
        !          12879:
        !          12880: 1996-09-07 20:22  millert
        !          12881:
        !          12882:        * CHANGES: [no log message]
        !          12883:
        !          12884: 1996-09-07 20:21  millert
        !          12885:
        !          12886:        * check.c, compat.h, config.h.in, dce_pwent.c, find_path.c,
        !          12887:          getspwuid.c, getwd.c, goodpath.c, ins_2001.h, ins_classic.h,
        !          12888:          ins_csops.h, ins_goons.h, insults.h, interfaces.c, logging.c,
        !          12889:          options.h, parse.c, parse.lex, parse.yacc, pathnames.h.in,
        !          12890:          putenv.c, strdup.c, sudo.c, sudo.h, sudo_setenv.c, testsudoers.c,
        !          12891:          tgetpass.c, utime.c, version.h, visudo.c: courtesan
        !          12892:
        !          12893: 1996-09-07 20:13  millert
        !          12894:
        !          12895:        * TROUBLESHOOTING, INSTALL, Makefile.in, PORTING, RUNSON, README:
        !          12896:          courtesan
        !          12897:
        !          12898: 1996-09-07 20:12  millert
        !          12899:
        !          12900:        * visudo.pod: [no log message]
        !          12901:
        !          12902: 1996-09-07 20:00  millert
        !          12903:
        !          12904:        * sudo.pod, visudo.pod: courtesan
        !          12905:
        !          12906: 1996-09-07 19:45  millert
        !          12907:
        !          12908:        * HISTORY: added courtesan ./
        !          12909:
        !          12910: 1996-09-06 00:12  millert
        !          12911:
        !          12912:        * sudo.c: added $SUDO_PROMPT support
        !          12913:
        !          12914: 1996-09-04 17:19  millert
        !          12915:
        !          12916:        * check.c: print long skey challemged to stderr, not stdout
        !          12917:
        !          12918: 1996-08-31 23:10  millert
        !          12919:
        !          12920:        * CHANGES: updated for 1.5.1
        !          12921:
        !          12922: 1996-08-31 23:07  millert
        !          12923:
        !          12924:        * emul/utime.h: ++version
        !          12925:
        !          12926: 1996-08-31 12:34  millert
        !          12927:
        !          12928:        * RUNSON: updated for 1.5.1
        !          12929:
        !          12930: 1996-08-30 10:49  millert
        !          12931:
        !          12932:        * check.c: use shost, not host for tgetpass
        !          12933:
        !          12934: 1996-08-30 00:21  millert
        !          12935:
        !          12936:        * OPTIONS, sudo.pod: documented %u and %h
        !          12937:
        !          12938: 1996-08-29 20:40  millert
        !          12939:
        !          12940:        * configure.in: fixed typo
        !          12941:
        !          12942: 1996-08-29 20:37  millert
        !          12943:
        !          12944:        * INSTALL, Makefile.in, README, check.c, compat.h, config.h.in,
        !          12945:          dce_pwent.c, find_path.c, getspwuid.c, getwd.c, goodpath.c,
        !          12946:          ins_2001.h, ins_classic.h, ins_csops.h, ins_goons.h, insults.h,
        !          12947:          interfaces.c, logging.c, options.h, parse.c, parse.lex,
        !          12948:          parse.yacc, pathnames.h.in, putenv.c, strdup.c, sudo.c, sudo.h,
        !          12949:          sudo_setenv.c, testsudoers.c, tgetpass.c, utime.c, version.h,
        !          12950:          visudo.c: ++version
        !          12951:
        !          12952: 1996-08-29 20:30  millert
        !          12953:
        !          12954:        * BUGS: ++version
        !          12955:
        !          12956: 1996-08-29 18:32  millert
        !          12957:
        !          12958:        * configure.in, Makefile.in, version.h: ++version
        !          12959:
        !          12960: 1996-08-29 17:58  millert
        !          12961:
        !          12962:        * sudo.h: new tgetpass() params
        !          12963:
        !          12964: 1996-08-29 17:58  millert
        !          12965:
        !          12966:        * check.c: pass use and host to tgetpass
        !          12967:
        !          12968: 1996-08-29 17:57  millert
        !          12969:
        !          12970:        * tgetpass.c: added %u and %h escapes
        !          12971:
        !          12972: 1996-08-29 16:56  millert
        !          12973:
        !          12974:        * OPTIONS, options.h, check.c: added NO_MESSAGE
        !          12975:
        !          12976: 1996-08-29 16:23  millert
        !          12977:
        !          12978:        * configure.in: added cray (unicos) support
        !          12979:
        !          12980: 1996-08-27 11:36  millert
        !          12981:
        !          12982:        * OPTIONS, options.h, sudo.c: added SHELL_SETS_HOME
        !          12983:
        !          12984: 1996-08-25 17:56  millert
        !          12985:
        !          12986:        * INSTALL: added note about "make install"
        !          12987:
        !          12988: 1996-08-25 17:50  millert
        !          12989:
        !          12990:        * parse.yacc: changed length/size params from int to size_t
        !          12991:
        !          12992: 1996-08-25 13:35  millert
        !          12993:
        !          12994:        * OPTIONS: now get CSOPS insults as well by default
        !          12995:
        !          12996: 1996-08-25 13:33  millert
        !          12997:
        !          12998:        * insults.h: use csops insults too by default
        !          12999:
        !          13000: 1996-08-25 13:31  millert
        !          13001:
        !          13002:        * INSTALL, Makefile.in, README, config.h.in, configure.in,
        !          13003:          version.h: version = 1.5
        !          13004:
        !          13005: 1996-08-25 13:27  millert
        !          13006:
        !          13007:        * sudo.c: added runas_homedir
        !          13008:
        !          13009: 1996-08-25 13:27  millert
        !          13010:
        !          13011:        * TODO: updated for 1.5
        !          13012:
        !          13013: 1996-08-25 13:23  millert
        !          13014:
        !          13015:        * RUNSON: updated for 1.5
        !          13016:
        !          13017: 1996-08-25 13:19  millert
        !          13018:
        !          13019:        * CHANGES: 1.5 release
        !          13020:
        !          13021: 1996-08-25 13:17  millert
        !          13022:
        !          13023:        * INSTALL: added "upgrading" notes
        !          13024:
        !          13025: 1996-08-22 14:00  millert
        !          13026:
        !          13027:        * visudo.c: now do chmod and chown after edit of temp file and
        !          13028:          before rename
        !          13029:
        !          13030: 1996-08-18 12:52  millert
        !          13031:
        !          13032:        * Makefile.in: ++version added INSTALL.configure
        !          13033:
        !          13034: 1996-08-18 12:52  millert
        !          13035:
        !          13036:        * version.h, configure.in: ++version
        !          13037:
        !          13038: 1996-08-18 12:51  millert
        !          13039:
        !          13040:        * TROUBLESHOOTING: [no log message]
        !          13041:
        !          13042: 1996-08-18 12:50  millert
        !          13043:
        !          13044:        * parse.yacc: added missing cast
        !          13045:
        !          13046: 1996-08-17 20:37  millert
        !          13047:
        !          13048:        * sudo.c: sets $HOME to pw_dir of runas user
        !          13049:
        !          13050: 1996-08-17 20:02  millert
        !          13051:
        !          13052:        * sudo.pod: document $HOME change
        !          13053:
        !          13054: 1996-08-17 19:43  millert
        !          13055:
        !          13056:        * sudo.pod: fixed up some wording
        !          13057:
        !          13058: 1996-08-17 19:25  millert
        !          13059:
        !          13060:        * check.c, dce_pwent.c, find_path.c, getspwuid.c, getwd.c,
        !          13061:          goodpath.c, interfaces.c, logging.c, parse.c, parse.lex,
        !          13062:          parse.yacc, putenv.c, strdup.c, sudo.c, sudo_setenv.c,
        !          13063:          testsudoers.c, tgetpass.c, utime.c, visudo.c: ++version
        !          13064:
        !          13065: 1996-08-17 19:19  millert
        !          13066:
        !          13067:        * emul/utime.h, compat.h, ins_2001.h, ins_classic.h, ins_csops.h,
        !          13068:          ins_goons.h, insults.h, options.h, pathnames.h.in, sudo.h:
        !          13069:          ++version
        !          13070:
        !          13071: 1996-08-17 19:18  millert
        !          13072:
        !          13073:        * sudo.h: name nad type changes
        !          13074:
        !          13075: 1996-08-17 19:17  millert
        !          13076:
        !          13077:        * testsudoers.c: now works with new sudo
        !          13078:
        !          13079: 1996-08-17 19:07  millert
        !          13080:
        !          13081:        * parse.yacc: fixed some XXX
        !          13082:
        !          13083: 1996-08-17 18:52  millert
        !          13084:
        !          13085:        * parse.yacc: some variable name changes + comment headers for
        !          13086:          functions.
        !          13087:
        !          13088: 1996-08-17 18:41  millert
        !          13089:
        !          13090:        * tgetpass.c: added extra paren's to make compilers happy
        !          13091:
        !          13092: 1996-08-17 18:34  millert
        !          13093:
        !          13094:        * sudo.c: [no log message]
        !          13095:
        !          13096: 1996-08-17 18:30  millert
        !          13097:
        !          13098:        * parse.c: now uses init_parser() if not in sudoers and tries
        !          13099:          "list" or "validate" scold but don't be nasty.
        !          13100:
        !          13101: 1996-08-17 18:29  millert
        !          13102:
        !          13103:        * TROUBLESHOOTING: now can use upper case login names
        !          13104:
        !          13105: 1996-08-17 18:29  millert
        !          13106:
        !          13107:        * visudo.c: now uses init_parser()
        !          13108:
        !          13109: 1996-08-17 18:28  millert
        !          13110:
        !          13111:        * PORTING: added info about PASSWORD_TIMEOUT
        !          13112:
        !          13113: 1996-08-17 18:28  millert
        !          13114:
        !          13115:        * INSTALL, README: updated
        !          13116:
        !          13117: 1996-08-17 18:28  millert
        !          13118:
        !          13119:        * INSTALL.configure: Initial revision
        !          13120:
        !          13121: 1996-08-17 18:27  millert
        !          13122:
        !          13123:        * BUGS: fixed a bug ,
        !          13124:
        !          13125: 1996-08-17 18:27  millert
        !          13126:
        !          13127:        * parse.yacc: now dynamically allocates memory for the stacks -- no
        !          13128:          more overflows!
        !          13129:
        !          13130: 1996-08-17 18:26  millert
        !          13131:
        !          13132:        * sudo.pod: -l now explands command aliases
        !          13133:
        !          13134: 1996-08-17 13:22  millert
        !          13135:
        !          13136:        * parse.yacc: hacks to expand command aliases for `sudo -l'
        !          13137:
        !          13138: 1996-08-17 13:22  millert
        !          13139:
        !          13140:        * sudo.c: remove $ENV and $BASH_ENV (dangerous in ksh, posix sh,
        !          13141:          and bash)
        !          13142:
        !          13143: 1996-08-17 13:22  millert
        !          13144:
        !          13145:        * sudo.h: added struct command_alias
        !          13146:
        !          13147: 1996-08-17 13:20  millert
        !          13148:
        !          13149:        * sudo.pod: fixed a bug
        !          13150:
        !          13151: 1996-08-17 13:15  millert
        !          13152:
        !          13153:        * lsearch.c: in compar() key should be first arg
        !          13154:
        !          13155: 1996-08-15 15:48  millert
        !          13156:
        !          13157:        * BUGS: fixed some bugs
        !          13158:
        !          13159: 1996-08-15 15:47  millert
        !          13160:
        !          13161:        * parse.yacc: can now deal with upcase HOST and USER names
        !          13162:
        !          13163: 1996-08-15 15:47  millert
        !          13164:
        !          13165:        * sudo.c: don't yell too loudly at non-sudoers if they do "sudo -l"
        !          13166:
        !          13167: 1996-08-15 15:46  millert
        !          13168:
        !          13169:        * sudo.pod: fixed thinko
        !          13170:
        !          13171: 1996-08-15 15:46  millert
        !          13172:
        !          13173:        * parse.c: fix comment
        !          13174:
        !          13175: 1996-08-09 18:07  millert
        !          13176:
        !          13177:        * parse.c, parse.yacc: added support for new `sudo -l' stuff
        !          13178:
        !          13179: 1996-08-09 18:06  millert
        !          13180:
        !          13181:        * sudo.c: now uses list_matches()
        !          13182:
        !          13183: 1996-08-09 18:06  millert
        !          13184:
        !          13185:        * sudo.h: added struct sudo_match
        !          13186:
        !          13187: 1996-08-09 17:37  millert
        !          13188:
        !          13189:        * configure.in: now more -lgnumalloc
        !          13190:
        !          13191: 1996-08-01 13:12  millert
        !          13192:
        !          13193:        * install-sh: added more paths for chown and whoami
        !          13194:
        !          13195: 1996-07-31 10:41  millert
        !          13196:
        !          13197:        * check.c: typo
        !          13198:
        !          13199: 1996-07-30 13:45  millert
        !          13200:
        !          13201:        * aclocal.m4: fixed DUNIX check for shadow pw
        !          13202:
        !          13203: 1996-07-30 13:41  millert
        !          13204:
        !          13205:        * tgetpass.c: now only turn off echo if it is already on.  this
        !          13206:          fixes a race when you use sudo in a pipelin
        !          13207:
        !          13208: 1996-07-30 12:53  millert
        !          13209:
        !          13210:        * INSTALL: updated
        !          13211:
        !          13212: 1996-07-29 22:29  millert
        !          13213:
        !          13214:        * configure.in: changed "test -z $foo && do_this" to if; then
        !          13215:          construct
        !          13216:
        !          13217: 1996-07-28 22:47  millert
        !          13218:
        !          13219:        * configure.in: added missing defines of SHADOW_TYPE
        !          13220:
        !          13221: 1996-07-26 14:10  millert
        !          13222:
        !          13223:        * check.c: protect AUTH_CRYPT_OLDCRYPT and AUTH_CRYPT_C1CRYPT since
        !          13224:          they are only in dunix 4.x
        !          13225:
        !          13226: 1996-07-26 14:09  millert
        !          13227:
        !          13228:        * getspwuid.c: added AUTH_CRYPT_C1CRYPT support
        !          13229:
        !          13230: 1996-07-26 13:23  millert
        !          13231:
        !          13232:        * parse.c: no longer return VALIDATE_NOT_OK if there was a runas
        !          13233:          that didn't match.  Now we can have runas stuff on more than one
        !          13234:          line.
        !          13235:
        !          13236: 1996-07-25 23:45  millert
        !          13237:
        !          13238:        * configure.in: got rid of HAVE_C2_SECURITY SHADOW_TYPE is always
        !          13239:          defined to something
        !          13240:
        !          13241: 1996-07-25 23:45  millert
        !          13242:
        !          13243:        * config.h.in: removed HAVE_C2_SECURITY added SPW_BSD
        !          13244:
        !          13245: 1996-07-25 23:44  millert
        !          13246:
        !          13247:        * compat.h, getspwuid.c, sudo.c, tgetpass.c: use SHADOW_TYPE
        !          13248:          instead of HAVE_C2_SECURITY
        !          13249:
        !          13250: 1996-07-25 23:44  millert
        !          13251:
        !          13252:        * check.c: SHADOW_TYPE is always defined so just against its value
        !          13253:
        !          13254: 1996-07-25 23:44  millert
        !          13255:
        !          13256:        * aclocal.m4: added SUDO_CHECK_SHADOW_DUNIX
        !          13257:
        !          13258: 1996-07-25 18:47  millert
        !          13259:
        !          13260:        * sudoers.pod: * -> ?* in one example added another instance of
        !          13261:          (runas) and one of NOPASSWD:
        !          13262:
        !          13263: 1996-07-24 13:02  millert
        !          13264:
        !          13265:        * configure.in: added back check for config.cache from other host
        !          13266:          type
        !          13267:
        !          13268: 1996-07-24 12:49  millert
        !          13269:
        !          13270:        * parse.lex: removed an instance of \"
        !          13271:
        !          13272: 1996-07-24 12:49  millert
        !          13273:
        !          13274:        * sample.sudoers: added an example
        !          13275:
        !          13276: 1996-07-24 12:44  millert
        !          13277:
        !          13278:        * sudoers.pod: updated wrt new wildcard matching
        !          13279:
        !          13280: 1996-07-24 10:28  millert
        !          13281:
        !          13282:        * configure.in: new check for shadow passwords if we don't know
        !          13283:          anything
        !          13284:
        !          13285: 1996-07-24 10:28  millert
        !          13286:
        !          13287:        * aclocal.m4: new SUDO_CHECK_SHADOW_GENERIC
        !          13288:
        !          13289: 1996-07-24 02:19  millert
        !          13290:
        !          13291:        * configure.in: added back check for -lsocket (oops)
        !          13292:
        !          13293: 1996-07-24 02:16  millert
        !          13294:
        !          13295:        * configure.in: better (working) check for shadow passwd type if we
        !          13296:          know to use C2.
        !          13297:
        !          13298: 1996-07-24 01:59  millert
        !          13299:
        !          13300:        * configure.in: now uses AC_CANONICAL_HOST to figure out os type
        !          13301:
        !          13302: 1996-07-24 01:59  millert
        !          13303:
        !          13304:        * Makefile.in: added config.{guess,sub}
        !          13305:
        !          13306: 1996-07-24 01:58  millert
        !          13307:
        !          13308:        * aclocal.m4: removed unused stuff to figure out os type
        !          13309:
        !          13310: 1996-07-23 22:58  millert
        !          13311:
        !          13312:        * config.sub: added openbsd
        !          13313:
        !          13314: 1996-07-23 22:54  millert
        !          13315:
        !          13316:        * config.sub: Initial revision
        !          13317:
        !          13318: 1996-07-23 22:40  millert
        !          13319:
        !          13320:        * config.guess: Initial revision
        !          13321:
        !          13322: 1996-07-23 21:18  millert
        !          13323:
        !          13324:        * testsudoers.c: don't call fnmatch() with FNM_PATHNAME flag unless
        !          13325:          it can only be a pathname.  need to check against sudoers_args
        !          13326:          even if user_args is nil
        !          13327:
        !          13328: 1996-07-23 21:18  millert
        !          13329:
        !          13330:        * parse.c: don't call fnmatch() with FNM_PATHNAME flag unless it
        !          13331:          can only be a pathname need to check against sudoers_args even if
        !          13332:          user_args is nil
        !          13333:
        !          13334: 1996-07-23 18:52  millert
        !          13335:
        !          13336:        * check.c: added support for AUTH_CRYPT_OLDCRYPT w/ DUNIX C2
        !          13337:
        !          13338: 1996-07-23 01:18  millert
        !          13339:
        !          13340:        * testsudoers.c: now takes command line args and uses cmnd_args
        !          13341:
        !          13342: 1996-07-23 01:10  millert
        !          13343:
        !          13344:        * parse.lex: fill_args was adding an extra leading space
        !          13345:
        !          13346: 1996-07-22 15:50  millert
        !          13347:
        !          13348:        * visudo.c: fixed dummy command_matches()
        !          13349:
        !          13350: 1996-07-22 15:50  millert
        !          13351:
        !          13352:        * parse.yacc: fixed prototype
        !          13353:
        !          13354: 1996-07-22 15:31  millert
        !          13355:
        !          13356:        * sudo.h: added cmnd_args
        !          13357:
        !          13358: 1996-07-22 15:31  millert
        !          13359:
        !          13360:        * parse.yacc: now uses flat args string
        !          13361:
        !          13362: 1996-07-22 15:30  millert
        !          13363:
        !          13364:        * parse.c, parse.lex: now uses flat arg string
        !          13365:
        !          13366: 1996-07-22 15:29  millert
        !          13367:
        !          13368:        * visudo.c: added cmnd_args def
        !          13369:
        !          13370: 1996-07-22 14:30  millert
        !          13371:
        !          13372:        * sudo.c: now sets cmnd_args global
        !          13373:
        !          13374: 1996-07-22 14:30  millert
        !          13375:
        !          13376:        * logging.c: cmnd_args is now exported from sudo.[ch]
        !          13377:
        !          13378: 1996-07-21 18:41  millert
        !          13379:
        !          13380:        * parse.yacc: can't rely on cmnd_matches as much as I thought --
        !          13381:          added some $$ stuff back in to prevent namespace pollution
        !          13382:          problems.
        !          13383:
        !          13384: 1996-07-21 18:01  millert
        !          13385:
        !          13386:        * parse.yacc: Simplified parse rules wrt runas and NOPASSWD (more
        !          13387:          consistent).
        !          13388:
        !          13389: 1996-07-20 00:45  millert
        !          13390:
        !          13391:        * parse.lex: NOPASSWD may now have blanks before the ':' '(' only
        !          13392:          starts a 'runas' if in the initial state to avoid collision with
        !          13393:          command args
        !          13394:
        !          13395: 1996-07-20 00:23  millert
        !          13396:
        !          13397:        * configure.in: added checks for specific shadow passwd schemes
        !          13398:
        !          13399: 1996-07-20 00:18  millert
        !          13400:
        !          13401:        * aclocal.m4: added routines to check for specific shadow passwd
        !          13402:          types
        !          13403:
        !          13404: 1996-07-18 18:27  millert
        !          13405:
        !          13406:        * configure.in: added support for ncr boxen
        !          13407:
        !          13408: 1996-07-18 18:26  millert
        !          13409:
        !          13410:        * aclocal.m4: added support for detecting ncr boxen
        !          13411:
        !          13412: 1996-07-16 14:57  millert
        !          13413:
        !          13414:        * configure.in: added sinix support
        !          13415:
        !          13416: 1996-07-13 22:29  millert
        !          13417:
        !          13418:        * TROUBLESHOOTING: added info about "config.cache from other other"
        !          13419:          error.
        !          13420:
        !          13421: 1996-07-13 22:22  millert
        !          13422:
        !          13423:        * aclocal.m4: now makes sure you don't have a config.cache file
        !          13424:          from another OS
        !          13425:
        !          13426: 1996-07-13 21:36  millert
        !          13427:
        !          13428:        * configure.in: now sets $LIBS when needed to configure links with
        !          13429:          libs when doing tests hpux10 now uses SPW_SECUREWARE for C2 added
        !          13430:          check for bigcrypt(3) if SPW_SECUREWARE
        !          13431:
        !          13432: 1996-07-13 21:30  millert
        !          13433:
        !          13434:        * getspwuid.c: fixed typo
        !          13435:
        !          13436: 1996-07-13 21:05  millert
        !          13437:
        !          13438:        * tgetpass.c: now include stuff for SPW_SECUREWARE to get
        !          13439:          AUTH_MAX_PASSWD_LENGTH
        !          13440:
        !          13441: 1996-07-13 21:05  millert
        !          13442:
        !          13443:        * getspwuid.c: no more SPW_HPUX10
        !          13444:
        !          13445: 1996-07-13 21:04  millert
        !          13446:
        !          13447:        * config.h.in: no more SPW_HPUX10 added HAVE_BIGCRYPT
        !          13448:
        !          13449: 1996-07-13 21:04  millert
        !          13450:
        !          13451:        * compat.h: now uses AUTH_MAX_PASSWD_LENGTH if SPW_SECUREWARE
        !          13452:
        !          13453: 1996-07-13 21:04  millert
        !          13454:
        !          13455:        * check.c: SPW_SECUREWARE now uses bigcrypt
        !          13456:
        !          13457: 1996-07-13 18:24  millert
        !          13458:
        !          13459:        * sample.sudoers: fixed 2 syntax errors
        !          13460:
        !          13461: 1996-07-13 18:24  millert
        !          13462:
        !          13463:        * sudoers: root may now run ALL as ALL
        !          13464:
        !          13465: 1996-07-11 20:59  millert
        !          13466:
        !          13467:        * interfaces.c: fixed a typo/thinko that broke BSD's with sa_len
        !          13468:
        !          13469: 1996-07-08 16:08  millert
        !          13470:
        !          13471:        * check.c, configure.in: updated AFS support
        !          13472:
        !          13473: 1996-07-08 16:07  millert
        !          13474:
        !          13475:        * TROUBLESHOOTING: added entry about /usr/ucb/cc
        !          13476:
        !          13477: 1996-07-08 16:06  millert
        !          13478:
        !          13479:        * INSTALL: prep no longer holds gcc binaries
        !          13480:
        !          13481: 1996-07-08 15:48  millert
        !          13482:
        !          13483:        * INSTALL: updated AFS note
        !          13484:
        !          13485: 1996-07-08 15:43  millert
        !          13486:
        !          13487:        * Makefile.in: added @AFS_LIBS@
        !          13488:
        !          13489: 1996-07-08 15:33  millert
        !          13490:
        !          13491:        * compat.h: AFS allows long passwords
        !          13492:
        !          13493: 1996-07-08 14:16  millert
        !          13494:
        !          13495:        * testsudoers.c: fixed -u user support
        !          13496:
        !          13497: 1996-07-08 14:16  millert
        !          13498:
        !          13499:        * parse.c: sudo -v now groks VALIDATE_OK_NOPASS
        !          13500:
        !          13501: 1996-07-08 13:30  millert
        !          13502:
        !          13503:        * parse.yacc: fixed no_passwd vs. runas_matched
        !          13504:
        !          13505: 1996-07-08 10:30  millert
        !          13506:
        !          13507:        * TROUBLESHOOTING: took out stuff about NFS-mounting since it is no
        !          13508:          longer an issue
        !          13509:
        !          13510: 1996-07-08 10:30  millert
        !          13511:
        !          13512:        * INSTALL: added --with-libraries >   --with-libpath --with-incpath
        !          13513:
        !          13514: 1996-07-08 10:21  millert
        !          13515:
        !          13516:        * parse.yacc: was setting runas_matches to -1 in wrong place
        !          13517:
        !          13518: 1996-07-08 09:58  millert
        !          13519:
        !          13520:        * check.c: removed usersec.h which is not present in new AFS
        !          13521:          versions
        !          13522:
        !          13523: 1996-07-08 09:55  millert
        !          13524:
        !          13525:        * tgetpass.c: now deals with timeout <= 0
        !          13526:
        !          13527: 1996-07-08 09:51  millert
        !          13528:
        !          13529:        * OPTIONS: updated
        !          13530:
        !          13531: 1996-07-08 00:04  millert
        !          13532:
        !          13533:        * configure.in: BSD/OS >= 2.0 now uses shlicc instead of just gcc
        !          13534:
        !          13535: 1996-07-07 22:30  millert
        !          13536:
        !          13537:        * sudo.c: fixed backwards compatibility with sudo 1.4 sudoers mode
        !          13538:          for root readable/writable filesystems
        !          13539:
        !          13540: 1996-07-07 20:49  millert
        !          13541:
        !          13542:        * Makefile.in: now gives INSTALL -c flag
        !          13543:
        !          13544: 1996-07-07 20:34  millert
        !          13545:
        !          13546:        * parse.yacc: slightly simpler initialization of  no_passwd and
        !          13547:          runas_matches
        !          13548:
        !          13549: 1996-07-07 20:33  millert
        !          13550:
        !          13551:        * testsudoers.c: added -u username support
        !          13552:
        !          13553: 1996-07-07 20:32  millert
        !          13554:
        !          13555:        * configure.in: improved --with-libraries support
        !          13556:
        !          13557: 1996-07-07 16:27  millert
        !          13558:
        !          13559:        * configure.in: added --with-incpath, --with-libpath,
        !          13560:          --with-libraries
        !          13561:
        !          13562: 1996-07-07 16:01  millert
        !          13563:
        !          13564:        * parse.yacc: now initializes some fields that weren't getting set
        !          13565:          to -1 pretty gross -- need a rewrite.
        !          13566:
        !          13567: 1996-06-25 23:19  millert
        !          13568:
        !          13569:        * alloca.c: removed emacs'isms
        !          13570:
        !          13571: 1996-06-25 22:29  millert
        !          13572:
        !          13573:        * configure.in: no longer add -lPW to *_LIBS since we include
        !          13574:          alloca.c
        !          13575:
        !          13576: 1996-06-25 22:29  millert
        !          13577:
        !          13578:        * config.h.in: added HAVE_ALLOCA_H
        !          13579:
        !          13580: 1996-06-25 22:28  millert
        !          13581:
        !          13582:        * Makefile.in: added alloca.c
        !          13583:
        !          13584: 1996-06-25 22:18  millert
        !          13585:
        !          13586:        * alloca.c: Initial revision
        !          13587:
        !          13588: 1996-06-25 21:58  millert
        !          13589:
        !          13590:        * configure.in: ++version
        !          13591:
        !          13592: 1996-06-25 19:32  millert
        !          13593:
        !          13594:        * sudo.c: now set uid to 1 instead of nobody for PERM_SUDOERS since
        !          13595:          nobody is not always set to a valid uid.
        !          13596:
        !          13597: 1996-06-25 19:31  millert
        !          13598:
        !          13599:        * OPTIONS: fixed entry for SUDO_MODE
        !          13600:
        !          13601: 1996-06-25 18:02  millert
        !          13602:
        !          13603:        * sudo.c: Fixed NFS-mounted sudoers file under solaris both uid
        !          13604:          *and* gid were being set to -2.  Now beat NFS to the punch and
        !          13605:          set uid to "nobody" ourselves, preserving group 0 to read
        !          13606:          sudoers.
        !          13607:
        !          13608: 1996-06-25 18:02  millert
        !          13609:
        !          13610:        * parse.c: moved set_perms(PERM_ROOT) to be before yyparse()
        !          13611:
        !          13612: 1996-06-25 18:00  millert
        !          13613:
        !          13614:        * logging.c: fixed a typo
        !          13615:
        !          13616: 1996-06-25 18:00  millert
        !          13617:
        !          13618:        * configure.in: no longer need AC_PROG_INSTALL
        !          13619:
        !          13620: 1996-06-25 17:59  millert
        !          13621:
        !          13622:        * Makefile.in: always use install-sh to avoid install(1)'s that use
        !          13623:          get{pw,gr}nam
        !          13624:
        !          13625: 1996-06-25 16:07  millert
        !          13626:
        !          13627:        * INSTALL: make clean -> make distclean
        !          13628:
        !          13629: 1996-06-20 01:17  millert
        !          13630:
        !          13631:        * parse.yacc: removed some unnecsary if's
        !          13632:
        !          13633: 1996-06-20 01:16  millert
        !          13634:
        !          13635:        * Makefile.in, version.h: ++version
        !          13636:
        !          13637: 1996-06-20 01:16  millert
        !          13638:
        !          13639:        * parse.c, testsudoers.c: now includes netgroup.h
        !          13640:
        !          13641: 1996-06-20 00:45  millert
        !          13642:
        !          13643:        * interfaces.c: removed cats of ioctl to int since they didn't shut
        !          13644:          up -Wall
        !          13645:
        !          13646: 1996-06-20 00:43  millert
        !          13647:
        !          13648:        * interfaces.c: explicately cast ioctl() to int since it it not
        !          13649:          always declared
        !          13650:
        !          13651: 1996-06-20 00:41  millert
        !          13652:
        !          13653:        * sudo.h: added declarations for yyparse() and yylex()
        !          13654:
        !          13655: 1996-06-20 00:27  millert
        !          13656:
        !          13657:        * parse.yacc: fixed an occurence of '==' -> '='
        !          13658:
        !          13659: 1996-06-20 00:22  millert
        !          13660:
        !          13661:        * config.h.in, configure.in: added check for netgroup.h
        !          13662:
        !          13663: 1996-06-20 00:20  millert
        !          13664:
        !          13665:        * sudo.c: fixed 2 compiler warnings
        !          13666:
        !          13667: 1996-06-20 00:08  millert
        !          13668:
        !          13669:        * sudo.c: SHELL_IF_NO_ARGS caused core dump since NewArg[cv]
        !          13670:          weren't being initialized
        !          13671:
        !          13672: 1996-06-19 13:53  millert
        !          13673:
        !          13674:        * sudo.pod: fixed a typo
        !          13675:
        !          13676: 1996-06-17 12:19  millert
        !          13677:
        !          13678:        * parse.yacc: fixed a formatting thingie
        !          13679:
        !          13680: 1996-06-17 12:16  millert
        !          13681:
        !          13682:        * parse.c, parse.yacc: fixed -u support with multiple user lists on
        !          13683:          a line
        !          13684:
        !          13685: 1996-06-17 10:23  millert
        !          13686:
        !          13687:        * configure.in: unixware needs -lgen
        !          13688:
        !          13689: 1996-06-17 10:23  millert
        !          13690:
        !          13691:        * README: updated ftp location
        !          13692:
        !          13693: 1996-06-17 00:08  millert
        !          13694:
        !          13695:        * sudoers.pod: add net_addr/netmask support
        !          13696:
        !          13697: 1996-06-17 00:07  millert
        !          13698:
        !          13699:        * sample.sudoers: added net_addr/mask example
        !          13700:
        !          13701: 1996-06-17 00:02  millert
        !          13702:
        !          13703:        * parse.lex, parse.c: added support for net_addr/netmask
        !          13704:
        !          13705: 1996-06-15 20:13  millert
        !          13706:
        !          13707:        * sudoers.pod: ^ -> !
        !          13708:
        !          13709: 1996-06-15 18:12  millert
        !          13710:
        !          13711:        * RUNSON: updated for 1.4.3
        !          13712:
        !          13713: 1996-06-15 18:12  millert
        !          13714:
        !          13715:        * CHANGES: udpated for 1.4.3
        !          13716:
        !          13717: 1996-06-15 18:11  millert
        !          13718:
        !          13719:        * TROUBLESHOOTING, TODO, BUGS: updated
        !          13720:
        !          13721: 1996-06-15 18:11  millert
        !          13722:
        !          13723:        * sample.sudoers: updated with examples of new stuff
        !          13724:
        !          13725: 1996-06-15 18:10  millert
        !          13726:
        !          13727:        * INSTALL, README: ++version
        !          13728:
        !          13729: 1996-06-15 18:01  millert
        !          13730:
        !          13731:        * sudoers.pod: updated wrt -u and NOPASSWD
        !          13732:
        !          13733: 1996-06-15 17:58  millert
        !          13734:
        !          13735:        * sudo.pod: updated wrt -u and CAVEATS
        !          13736:
        !          13737: 1996-06-08 23:15  millert
        !          13738:
        !          13739:        * sudo.c: fixed usage()
        !          13740:
        !          13741: 1996-06-08 22:57  millert
        !          13742:
        !          13743:        * parse.lex: now use :foo: character classes (makes no diff for
        !          13744:          generated lexer)
        !          13745:
        !          13746: 1996-06-07 14:33  millert
        !          13747:
        !          13748:        * check.c: fixed LONG_SKEY_PROMPT stuff
        !          13749:
        !          13750: 1996-06-06 15:35  millert
        !          13751:
        !          13752:        * visudo.c: fixed a comment
        !          13753:
        !          13754: 1996-06-06 15:03  millert
        !          13755:
        !          13756:        * lsearch.c: make more like NetBSD one -- now compiles w/o warnings
        !          13757:
        !          13758: 1996-06-06 15:02  millert
        !          13759:
        !          13760:        * emul/search.h: fixed decls of lsearch()
        !          13761:
        !          13762: 1996-06-05 22:20  millert
        !          13763:
        !          13764:        * config.h.in, configure.in, getspwuid.c: added SPW_HPUX10
        !          13765:
        !          13766: 1996-06-05 22:20  millert
        !          13767:
        !          13768:        * check.c: hpux 10 uses bigcrypt() if C2
        !          13769:
        !          13770: 1996-06-04 19:57  millert
        !          13771:
        !          13772:        * parse.c: now always uses fnmatch to match args
        !          13773:
        !          13774: 1996-06-04 19:40  millert
        !          13775:
        !          13776:        * tgetpass.c: back to using stdio instead of raw i/o since that
        !          13777:          caused some problems
        !          13778:
        !          13779: 1996-05-28 22:14  millert
        !          13780:
        !          13781:        * sudo.c: now give usage warning if use -l,-v,-k with args
        !          13782:
        !          13783: 1996-05-28 18:22  millert
        !          13784:
        !          13785:        * sudo.c: NewArgc is now set to 1 for -l, -v, -k
        !          13786:
        !          13787: 1996-05-28 12:50  millert
        !          13788:
        !          13789:        * sudo.c: now sets sudoers to correct group if mode is 0400
        !          13790:
        !          13791: 1996-05-28 12:02  millert
        !          13792:
        !          13793:        * install-sh: updated to version used by inn and bind
        !          13794:
        !          13795: 1996-05-28 00:08  millert
        !          13796:
        !          13797:        * configure.in: now uses -lgnumalloc if it exists
        !          13798:
        !          13799: 1996-05-28 00:02  millert
        !          13800:
        !          13801:        * Makefile.in: "make install" now sets uid/gid and mode on sudoers
        !          13802:          if it exists
        !          13803:
        !          13804: 1996-05-28 00:01  millert
        !          13805:
        !          13806:        * sudo.c: rmeoved debugging statements
        !          13807:
        !          13808: 1996-05-28 00:00  millert
        !          13809:
        !          13810:        * parse.yacc: added a missing free()
        !          13811:
        !          13812: 1996-05-27 23:58  millert
        !          13813:
        !          13814:        * sudo.c: now uses user_gid instead of getegid (which was wrong
        !          13815:          anyway) to set SUDO_GID Now sets command line args in
        !          13816:          SUDO_COMMAND envariabled (logging.c depends on args being in the
        !          13817:          environment)
        !          13818:
        !          13819: 1996-05-27 23:57  millert
        !          13820:
        !          13821:        * logging.c: now uses SUDO_COMMAND envariable to get command args
        !          13822:          rather than building it up again.
        !          13823:
        !          13824: 1996-05-27 22:42  millert
        !          13825:
        !          13826:        * parse.c: now uses user_gid
        !          13827:
        !          13828: 1996-05-27 20:02  millert
        !          13829:
        !          13830:        * sudo.c: fixed off by one error in allocation NewArgv
        !          13831:
        !          13832: 1996-05-27 20:01  millert
        !          13833:
        !          13834:        * parse.c: in sudoers, 'command ""' now means command with no args
        !          13835:
        !          13836: 1996-05-27 20:01  millert
        !          13837:
        !          13838:        * configure.in: added check for fnmatch(3) and fnmatch.h
        !          13839:
        !          13840: 1996-05-27 20:01  millert
        !          13841:
        !          13842:        * config.h.in: added HAVE_FNMATCH
        !          13843:
        !          13844: 1996-05-27 20:00  millert
        !          13845:
        !          13846:        * Makefile.in: replaced wildcat.* with fnmatch.*
        !          13847:
        !          13848: 1996-05-27 20:00  millert
        !          13849:
        !          13850:        * testsudoers.c: now uses fnmatch()
        !          13851:
        !          13852: 1996-05-27 19:38  millert
        !          13853:
        !          13854:        * parse.c: now uses fnmatch() instead of wildmat a trailing star
        !          13855:          (*) by itself now matches multiple args added support for
        !          13856:          wildcards in the pathname  in sudoers
        !          13857:
        !          13858: 1996-05-25 19:23  millert
        !          13859:
        !          13860:        * fnmatch.c: now includes compat.h and config.h
        !          13861:
        !          13862: 1996-05-25 18:09  millert
        !          13863:
        !          13864:        * config.h.in: added HAVE_FNMATCH_H
        !          13865:
        !          13866: 1996-05-25 18:07  millert
        !          13867:
        !          13868:        * configure.in: now checks for alloca() (if needed by bison or dce)
        !          13869:          and links with -lPW if it contains alloca() and libv and compiler
        !          13870:          do not.
        !          13871:
        !          13872: 1996-05-25 18:03  millert
        !          13873:
        !          13874:        * fnmatch.3, fnmatch.c, emul/fnmatch.h: Initial revision
        !          13875:
        !          13876: 1996-04-28 22:38  millert
        !          13877:
        !          13878:        * sudo.c: now fixes mode on sudoers if set to 0400 to aid in
        !          13879:          upgrade
        !          13880:
        !          13881: 1996-04-28 17:44  millert
        !          13882:
        !          13883:        * Makefile.in: fixed pod2man usage
        !          13884:
        !          13885: 1996-04-28 17:40  millert
        !          13886:
        !          13887:        * configure.in, Makefile.in, version.h: ++version
        !          13888:
        !          13889: 1996-04-28 17:20  millert
        !          13890:
        !          13891:        * testsudoers.c, visudo.c: runas_user is now initialized to "root"
        !          13892:
        !          13893: 1996-04-28 17:20  millert
        !          13894:
        !          13895:        * sudo.h: removed PERM_FULL_ROOT
        !          13896:
        !          13897: 1996-04-28 17:18  millert
        !          13898:
        !          13899:        * sudo.c: runas_user defaults to "root" so no more need to
        !          13900:          PERM_RUNAS
        !          13901:
        !          13902: 1996-04-28 17:16  millert
        !          13903:
        !          13904:        * parse.c: will now only running commands as root if there was no
        !          13905:          runas list (or if root is in the runas list)
        !          13906:
        !          13907: 1996-04-28 17:15  millert
        !          13908:
        !          13909:        * logging.c: now logs "USER=%s"
        !          13910:
        !          13911: 1996-04-28 17:12  millert
        !          13912:
        !          13913:        * parse.yacc: runas_matches is now set to false if we get a
        !          13914:          negative match
        !          13915:
        !          13916: 1996-04-28 15:01  millert
        !          13917:
        !          13918:        * parse.lex: make #uid work + some minor cleanup
        !          13919:
        !          13920: 1996-04-27 21:04  millert
        !          13921:
        !          13922:        * sample.sudoers: added support for NOPASSWD and "runas" from
        !          13923:          garp@opustel.com /
        !          13924:
        !          13925: 1996-04-27 21:03  millert
        !          13926:
        !          13927:        * visudo.c: added support for "runas" from garp@opustel.com
        !          13928:          replaced SUDOERS_OWNER with SUDOERS_UID, SUDOERS_GID added
        !          13929:          support for SUDOERS_MODE
        !          13930:
        !          13931: 1996-04-27 21:03  millert
        !          13932:
        !          13933:        * testsudoers.c: added support for "runas" from garp@opustel.com
        !          13934:
        !          13935: 1996-04-27 21:02  millert
        !          13936:
        !          13937:        * sudo.h: added support for NO_PASSWD and runas from
        !          13938:          garp@opustel.com replaced SUDOERS_OWNER with SUDOERS_UID and
        !          13939:          SUDOERS_GID     and added support fro SUDOERS_MODE
        !          13940:
        !          13941: 1996-04-27 21:00  millert
        !          13942:
        !          13943:        * sudo.c: added support for NO_PASSWD and runas from
        !          13944:          garp@opustel.com replaced SUDOERS_OWNER with SUDOERS_UID and
        !          13945:          SUDOERS_GID and added support fro SUDOERS_MODE
        !          13946:
        !          13947: 1996-04-27 21:00  millert
        !          13948:
        !          13949:        * parse.yacc: added support for NO_PASSWD and runas from
        !          13950:          garp@opustel.com
        !          13951:
        !          13952: 1996-04-27 20:58  millert
        !          13953:
        !          13954:        * parse.c, parse.lex: added support for NO_PASSWD and runas from
        !          13955:          garp@opustel.com
        !          13956:
        !          13957: 1996-04-27 20:56  millert
        !          13958:
        !          13959:        * logging.c: added support for SUDOERS_WRONG_MODE and "runas"
        !          13960:
        !          13961: 1996-04-27 20:40  millert
        !          13962:
        !          13963:        * configure.in: added --with-CC only link with -lshadow on linux
        !          13964:          (with shadow pw) if libc lacks getspnam()
        !          13965:
        !          13966: 1996-04-27 20:39  millert
        !          13967:
        !          13968:        * OPTIONS, options.h: removed NO_PASSWD since it is not possible to
        !          13969:          do this in the sudoers file itself.  Replaced SUDOERS_OWNER with
        !          13970:          SUDOERS_UID and SUDOERS_GID.  Added SUDOERS_MODE.
        !          13971:
        !          13972: 1996-04-27 20:26  millert
        !          13973:
        !          13974:        * Makefile.in: now uses SUDOERS_UID and SUDOERS_GID
        !          13975:
        !          13976: 1996-04-27 11:20  millert
        !          13977:
        !          13978:        * INSTALL: added --with-CC
        !          13979:
        !          13980: 1996-04-06 16:31  millert
        !          13981:
        !          13982:        * parse.lex: added double quote support
        !          13983:
        !          13984: 1996-04-06 16:29  millert
        !          13985:
        !          13986:        * sudoers.pod: documented double quoting
        !          13987:
        !          13988: 1996-04-05 16:53  millert
        !          13989:
        !          13990:        * mkinstalldirs: Initial revision
        !          13991:
        !          13992: 1996-04-05 16:53  millert
        !          13993:
        !          13994:        * check.c: fixed some indentation
        !          13995:
        !          13996: 1996-04-05 16:48  millert
        !          13997:
        !          13998:        * Makefile.in: fixed a typo
        !          13999:
        !          14000: 1996-04-04 19:39  millert
        !          14001:
        !          14002:        * Makefile.in: added install-dirs .
        !          14003:
        !          14004: 1996-04-04 14:16  millert
        !          14005:
        !          14006:        * dce_pwent.c: new version from "Jeff A. Earickson"
        !          14007:          <jaearick@colby.edu>
        !          14008:
        !          14009: 1996-04-03 13:40  millert
        !          14010:
        !          14011:        * configure.in: $CSOPS -> $with_csops (whoops, missed one)
        !          14012:
        !          14013: 1996-04-03 13:40  millert
        !          14014:
        !          14015:        * BUGS: updated
        !          14016:
        !          14017: 1996-04-03 13:36  millert
        !          14018:
        !          14019:        * parse.lex: FQHOST now has same constraints as non-FQHOST
        !          14020:
        !          14021: 1996-04-02 19:00  millert
        !          14022:
        !          14023:        * INSTALL: added note about OS's w/ shadow passwords turned on by
        !          14024:          default
        !          14025:
        !          14026: 1996-04-02 18:58  millert
        !          14027:
        !          14028:        * configure.in: fixed a typo
        !          14029:
        !          14030: 1996-04-02 18:48  millert
        !          14031:
        !          14032:        * configure.in: added support for --without-THING sanitized shadow
        !          14033:          pw situtation by adding support for --without-C2
        !          14034:
        !          14035: 1996-04-02 16:42  millert
        !          14036:
        !          14037:        * tgetpass.c: fixed a typo wrt placement of an end paren
        !          14038:
        !          14039: 1996-04-02 14:57  millert
        !          14040:
        !          14041:        * check.c: was closing an fd that may not have been opened
        !          14042:
        !          14043: 1996-03-21 19:55  millert
        !          14044:
        !          14045:        * sudo.c, OPTIONS, options.h: added NO_PASSWD
        !          14046:
        !          14047: 1996-03-19 19:40  millert
        !          14048:
        !          14049:        * configure.in: now always use shadow pw on some arches
        !          14050:
        !          14051: 1996-03-19 17:07  millert
        !          14052:
        !          14053:        * configure.in: added pyramid support
        !          14054:
        !          14055: 1996-03-19 17:04  millert
        !          14056:
        !          14057:        * configure.in: no longer check for C2 if alternate passwd method
        !          14058:          is used no longer check for some libs twice
        !          14059:
        !          14060: 1996-03-19 17:00  millert
        !          14061:
        !          14062:        * parse.yacc: moved fqdn stuff into parse.lex (FQHOST)
        !          14063:
        !          14064: 1996-03-19 17:00  millert
        !          14065:
        !          14066:        * parse.lex: added FQHOST rules
        !          14067:
        !          14068: 1996-03-18 20:57  millert
        !          14069:
        !          14070:        * tgetpass.c: now define TCSASOFT in necesary
        !          14071:
        !          14072: 1996-03-18 20:31  millert
        !          14073:
        !          14074:        * tgetpass.c: now uses read/write instead of stdio string goop to
        !          14075:          avoid problems with select(2)
        !          14076:
        !          14077: 1996-03-18 19:37  millert
        !          14078:
        !          14079:        * OPTIONS, find_path.c, options.h: -DNO_DOT_PATH ->
        !          14080:          -DIGNORE_DOT_PATH
        !          14081:
        !          14082: 1996-03-17 16:18  millert
        !          14083:
        !          14084:        * INSTALL: added note about no shadow auto-detect if using
        !          14085:          alternate auth schemes
        !          14086:
        !          14087: 1996-03-17 15:33  millert
        !          14088:
        !          14089:        * configure.in: don't check for C2 if AFS or DCE (unless they said
        !          14090:          --with-C2)
        !          14091:
        !          14092: 1996-03-17 15:08  millert
        !          14093:
        !          14094:        * testsudoers.c: now groks shost
        !          14095:
        !          14096: 1996-03-17 15:01  millert
        !          14097:
        !          14098:        * options.h, OPTIONS, find_path.c: added NO_DOT_PATH
        !          14099:
        !          14100: 1996-03-16 14:43  millert
        !          14101:
        !          14102:        * find_path.c: checkdot now works correctly
        !          14103:
        !          14104: 1996-03-12 18:01  millert
        !          14105:
        !          14106:        * configure.in: can't have DCE and C2 passwords both...
        !          14107:
        !          14108: 1996-03-11 14:05  millert
        !          14109:
        !          14110:        * parse.yacc, sudo.c, sudo.h, visudo.c: now uses shost even if not
        !          14111:          FQDN
        !          14112:
        !          14113: 1996-03-11 14:04  millert
        !          14114:
        !          14115:        * configure.in: now looks for skey in /usr/lib and doesn't require
        !          14116:          libskey to be in /usr/local/lib just because skey.h is (for my
        !          14117:          netbsd box :-)
        !          14118:
        !          14119: 1996-03-11 02:00  millert
        !          14120:
        !          14121:        * aclocal.m4, config.h.in, pathnames.h.in: _SUDO_PATH_ ->
        !          14122:          _CONFIG_PATH_
        !          14123:
        !          14124: 1996-03-10 21:01  millert
        !          14125:
        !          14126:        * aclocal.m4, sudo.pod: /var/run/.odus -> /var/run/sudo
        !          14127:
        !          14128: 1996-03-10 20:59  millert
        !          14129:
        !          14130:        * pathnames.h.in: now uses _SUDO_PATH_TIMEDIR
        !          14131:
        !          14132: 1996-03-10 20:59  millert
        !          14133:
        !          14134:        * OPTIONS: udpated FQDN
        !          14135:
        !          14136: 1996-03-10 20:58  millert
        !          14137:
        !          14138:        * config.h.in: added _SUDO_PATH_TIMEDIR
        !          14139:
        !          14140: 1996-03-10 20:58  millert
        !          14141:
        !          14142:        * aclocal.m4, configure.in: added SUDO_TIMEDIR
        !          14143:
        !          14144: 1996-03-10 20:58  millert
        !          14145:
        !          14146:        * sudo.pod: updated wrt /var/run/sudo
        !          14147:
        !          14148: 1996-03-10 20:16  millert
        !          14149:
        !          14150:        * sudo.c, sudo.h: added support for shost if FQDN
        !          14151:
        !          14152: 1996-03-10 20:14  millert
        !          14153:
        !          14154:        * parse.yacc, visudo.c: now uses shost if FQDN
        !          14155:
        !          14156: 1996-03-10 20:12  millert
        !          14157:
        !          14158:        * check.c: Now use skeylookup() instead off skeychallenge()
        !          14159:
        !          14160: 1996-02-27 20:41  millert
        !          14161:
        !          14162:        * logging.c: mail_argv should not contain ALERTMAIL as it includes
        !          14163:          "-t"
        !          14164:
        !          14165: 1996-02-22 17:06  millert
        !          14166:
        !          14167:        * INSTALL, Makefile.in, README, version.h, configure.in: ++version
        !          14168:
        !          14169: 1996-02-22 16:27  millert
        !          14170:
        !          14171:        * compat.h: added more _PASSWD_LEN stuff -- now uses PASS_MAX too
        !          14172:
        !          14173: 1996-02-22 16:27  millert
        !          14174:
        !          14175:        * tgetpass.c: now includes limits.h moved _PASSWD_LEN -> compat.h
        !          14176:
        !          14177: 1996-02-05 19:20  millert
        !          14178:
        !          14179:        * README, INSTALL: ++version
        !          14180:
        !          14181: 1996-02-05 19:20  millert
        !          14182:
        !          14183:        * Makefile.in: ++versoin
        !          14184:
        !          14185: 1996-02-05 19:16  millert
        !          14186:
        !          14187:        * Makefile.in: fixed a typo
        !          14188:
        !          14189: 1996-02-05 19:16  millert
        !          14190:
        !          14191:        * configure.in: ++version
        !          14192:
        !          14193: 1996-02-05 18:53  millert
        !          14194:
        !          14195:        * RUNSON: updated
        !          14196:
        !          14197: 1996-02-05 18:47  millert
        !          14198:
        !          14199:        * CHANGES: done for 1.4.1 (I hope)
        !          14200:
        !          14201: 1996-02-05 18:45  millert
        !          14202:
        !          14203:        * sudoers.pod: added info on wildcards
        !          14204:
        !          14205: 1996-02-05 18:39  millert
        !          14206:
        !          14207:        * sample.sudoers: added wildcard example
        !          14208:
        !          14209: 1996-02-05 17:03  millert
        !          14210:
        !          14211:        * Makefile.in: now uses *.pod to build *.man and *.cat & *.html
        !          14212:
        !          14213: 1996-02-05 17:03  millert
        !          14214:
        !          14215:        * configure.in: addedSUDO_PROG_BSHELL !ll
        !          14216:
        !          14217: 1996-02-05 16:10  millert
        !          14218:
        !          14219:        * visudo.pod: fixed up some formatting
        !          14220:
        !          14221: 1996-02-05 16:10  millert
        !          14222:
        !          14223:        * sudoers.pod: redid section describing sample sudoers stuff
        !          14224:
        !          14225: 1996-02-05 16:10  millert
        !          14226:
        !          14227:        * sudo.pod: fixed some formatting
        !          14228:
        !          14229: 1996-02-04 22:50  millert
        !          14230:
        !          14231:        * getspwuid.c: now treats "" as bourne shell
        !          14232:
        !          14233: 1996-02-04 22:49  millert
        !          14234:
        !          14235:        * Makefile.in: TESTOBJS nwo includes wildmat.o
        !          14236:
        !          14237: 1996-02-04 22:48  millert
        !          14238:
        !          14239:        * testsudoers.c: now works with NewArg[cv]
        !          14240:
        !          14241: 1996-02-04 21:59  millert
        !          14242:
        !          14243:        * sudo.c: removed an XXX (fixed it in getspwuid.c)
        !          14244:
        !          14245: 1996-02-04 21:58  millert
        !          14246:
        !          14247:        * aclocal.m4: added check for bourne shell
        !          14248:
        !          14249: 1996-02-04 21:58  millert
        !          14250:
        !          14251:        * pathnames.h.in: added _PATH_BSHELL
        !          14252:
        !          14253: 1996-02-04 21:58  millert
        !          14254:
        !          14255:        * config.h.in: added _SUDO_PATH_BSHELL
        !          14256:
        !          14257: 1996-02-04 16:36  millert
        !          14258:
        !          14259:        * visudo.c: unixware vi returns 256 instead of 0
        !          14260:
        !          14261: 1996-02-04 16:24  millert
        !          14262:
        !          14263:        * INSTALL: added Linux note
        !          14264:
        !          14265: 1996-02-04 16:13  millert
        !          14266:
        !          14267:        * logging.c: fixed up some XXX's.  file log format now looks a
        !          14268:          little more like real syslog(3) format.
        !          14269:
        !          14270: 1996-02-04 16:13  millert
        !          14271:
        !          14272:        * README, TROUBLESHOOTING: updated wrt lex/flex
        !          14273:
        !          14274: 1996-02-04 16:11  millert
        !          14275:
        !          14276:        * Makefile.in: commented out rule to build lex.yy.c from parse.lex
        !          14277:          since we ship with a pre-flex'd parser
        !          14278:
        !          14279: 1996-02-04 16:09  millert
        !          14280:
        !          14281:        * parse.c, parse.yacc, visudo.c: path_matches -> command_matches
        !          14282:
        !          14283: 1996-02-04 02:28  millert
        !          14284:
        !          14285:        * logging.c: eliminated some strcat()'s
        !          14286:
        !          14287: 1996-02-04 02:10  millert
        !          14288:
        !          14289:        * configure.in: no longer checks for lex/flex (now assumes flex)
        !          14290:
        !          14291: 1996-02-04 02:08  millert
        !          14292:
        !          14293:        * configure.in: now checks for $kerb_dir_candidate/krb.h instead of
        !          14294:          just kerb_dir_candidate
        !          14295:
        !          14296: 1996-02-02 20:48  millert
        !          14297:
        !          14298:        * parse.yacc: now use a 'hook' expression instead of an iffy one
        !          14299:          :-)
        !          14300:
        !          14301: 1996-02-02 01:14  millert
        !          14302:
        !          14303:        * visudo.c: now works with new sudo arg stuff
        !          14304:
        !          14305: 1996-02-02 01:14  millert
        !          14306:
        !          14307:        * parse.yacc: fixed dereferencing deadbeef
        !          14308:
        !          14309: 1996-02-01 23:53  millert
        !          14310:
        !          14311:        * sudo.c: changed an occurrence of Argv to NewArgv
        !          14312:
        !          14313: 1996-02-01 23:53  millert
        !          14314:
        !          14315:        * parse.lex: took out support for quoted commands since there is no
        !          14316:          need...
        !          14317:
        !          14318: 1996-02-01 23:52  millert
        !          14319:
        !          14320:        * parse.c: fixed a typo in a for() loop
        !          14321:
        !          14322: 1996-02-01 23:52  millert
        !          14323:
        !          14324:        * logging.c: protected against dereferencing rogue pointers
        !          14325:
        !          14326: 1996-02-01 22:34  millert
        !          14327:
        !          14328:        * sudo.c: now uses NewArgv amd NewArgc so cmnd_aegs is no longer
        !          14329:          needed this also allows us to eliminate some kludges in
        !          14330:          parse_args() and eliminate superfluous code.
        !          14331:
        !          14332: 1996-02-01 22:34  millert
        !          14333:
        !          14334:        * logging.c: no longer uses cmnd_args, now uses NewArgv instead.
        !          14335:
        !          14336: 1996-02-01 22:32  millert
        !          14337:
        !          14338:        * sudo.h: added struct sudo_command, NewArgc, and NewArgv removed
        !          14339:          cmnd_args (no longer used)
        !          14340:
        !          14341: 1996-02-01 22:31  millert
        !          14342:
        !          14343:        * Makefile.in: added wildmat.c to SRCS & SUDOBJS
        !          14344:
        !          14345: 1996-02-01 22:30  millert
        !          14346:
        !          14347:        * parse.yacc: COMMAND is now a struct containing the path and args
        !          14348:
        !          14349: 1996-02-01 22:30  millert
        !          14350:
        !          14351:        * parse.lex: replaced append() with fill_cmnd() and fill_args.
        !          14352:          command args from a sudoers entry are now stored in an arrary for
        !          14353:          easy matching.
        !          14354:
        !          14355: 1996-02-01 22:28  millert
        !          14356:
        !          14357:        * parse.c: command line args from sudoers file are now in an array
        !          14358:          like ones passed in from the command line
        !          14359:
        !          14360: 1996-01-31 20:59  millert
        !          14361:
        !          14362:        * parse.c: wildwat stuff now works
        !          14363:
        !          14364: 1996-01-29 00:44  millert
        !          14365:
        !          14366:        * version.h: ++version
        !          14367:
        !          14368: 1996-01-29 00:44  millert
        !          14369:
        !          14370:        * Makefile.in: ++version added wildmat.*
        !          14371:
        !          14372: 1996-01-28 17:55  millert
        !          14373:
        !          14374:        * parse.lex: added support for quoted commands (w/ or w/o args)
        !          14375:
        !          14376: 1996-01-22 01:55  millert
        !          14377:
        !          14378:        * sudo.pod, visudo.pod: cleaned up formatting
        !          14379:
        !          14380: 1996-01-21 20:53  millert
        !          14381:
        !          14382:        * sudo.pod, visudo.pod: Initial revision
        !          14383:
        !          14384: 1996-01-21 02:07  millert
        !          14385:
        !          14386:        * sudoers.pod: looks reasonable, could be mroe readable
        !          14387:
        !          14388: 1996-01-20 23:47  millert
        !          14389:
        !          14390:        * sudoers.pod: Initial revision
        !          14391:
        !          14392: 1996-01-16 14:38  millert
        !          14393:
        !          14394:        * RUNSON: updated
        !          14395:
        !          14396: 1996-01-16 14:37  millert
        !          14397:
        !          14398:        * OPTIONS: updated NO_ROOT_SUDO entry
        !          14399:
        !          14400: 1996-01-15 11:37  millert
        !          14401:
        !          14402:        * RUNSON: [no log message]
        !          14403:
        !          14404: 1996-01-15 11:34  millert
        !          14405:
        !          14406:        * sudo.c: fixed SECURE_PATH
        !          14407:
        !          14408: 1996-01-14 20:55  millert
        !          14409:
        !          14410:        * RUNSON: udpa`ted for 1.4
        !          14411:
        !          14412: 1996-01-14 20:52  millert
        !          14413:
        !          14414:        * configure.in: AIX aixcrypt.exp now uses $(srcdir)
        !          14415:
        !          14416: 1996-01-14 20:32  millert
        !          14417:
        !          14418:        * TROUBLESHOOTING: added entry for anal ansi compilers
        !          14419:
        !          14420: 1996-01-14 16:13  millert
        !          14421:
        !          14422:        * INSTALL: added info on libcrypt_i for SCO
        !          14423:
        !          14424: 1996-01-14 16:05  millert
        !          14425:
        !          14426:        * TODO: [no log message]
        !          14427:
        !          14428: 1996-01-14 15:39  millert
        !          14429:
        !          14430:        * sample.sudoers: added comments
        !          14431:
        !          14432: 1996-01-14 15:25  millert
        !          14433:
        !          14434:        * TODO: 1.4 release
        !          14435:
        !          14436: 1996-01-14 15:22  millert
        !          14437:
        !          14438:        * README, config.h.in, configure.in, CHANGES: ++version
        !          14439:
        !          14440: 1996-01-14 15:21  millert
        !          14441:
        !          14442:        * BUGS: ++version and fixed ISC
        !          14443:
        !          14444: 1996-01-14 15:19  millert
        !          14445:
        !          14446:        * check.c, compat.h, dce_pwent.c, find_path.c, getspwuid.c,
        !          14447:          getwd.c, goodpath.c, ins_2001.h, ins_classic.h, ins_csops.h,
        !          14448:          ins_goons.h, insults.h, options.h, pathnames.h.in, sudo.h,
        !          14449:          logging.c, putenv.c, strdup.c, sudo.c, sudo_setenv.c,
        !          14450:          testsudoers.c, tgetpass.c, utime.c, visudo.c, INSTALL, OPTIONS:
        !          14451:          ++version
        !          14452:
        !          14453: 1996-01-14 15:16  millert
        !          14454:
        !          14455:        * interfaces.c: added STUB_LOAD_INTERFACES ++version
        !          14456:
        !          14457: 1996-01-14 15:14  millert
        !          14458:
        !          14459:        * Makefile.in, version.h, parse.c, parse.lex, parse.yacc,
        !          14460:          emul/utime.h: ++version
        !          14461:
        !          14462: 1996-01-14 15:13  millert
        !          14463:
        !          14464:        * PORTING: added info about fd_set in tgetpass added info on
        !          14465:          interfaces.c
        !          14466:
        !          14467: 1996-01-11 13:22  millert
        !          14468:
        !          14469:        * dce_pwent.c: added sudo header
        !          14470:
        !          14471: 1996-01-11 13:04  millert
        !          14472:
        !          14473:        * tgetpass.c: fixed a typo
        !          14474:
        !          14475: 1996-01-11 13:01  millert
        !          14476:
        !          14477:        * Makefile.in: tgetpass.o is now only linked in with sudo (not
        !          14478:          visudo)
        !          14479:
        !          14480: 1996-01-09 12:56  millert
        !          14481:
        !          14482:        * BUGS, INSTALL, OPTIONS, README, Makefile.in, config.h.in,
        !          14483:          configure.in: ++version
        !          14484:
        !          14485: 1996-01-09 12:54  millert
        !          14486:
        !          14487:        * emul/utime.h: added copyright notice
        !          14488:
        !          14489: 1996-01-09 12:52  millert
        !          14490:
        !          14491:        * check.c, compat.h, find_path.c, getspwuid.c, getwd.c, goodpath.c,
        !          14492:          ins_2001.h, ins_classic.h, ins_csops.h, ins_goons.h, insults.h,
        !          14493:          interfaces.c, logging.c, options.h, parse.c, parse.lex,
        !          14494:          parse.yacc, pathnames.h.in, putenv.c, strdup.c, sudo.c, sudo.h,
        !          14495:          sudo_setenv.c, testsudoers.c, tgetpass.c, utime.c, version.h,
        !          14496:          visudo.c: ++version
        !          14497:
        !          14498: 1996-01-09 12:46  millert
        !          14499:
        !          14500:        * tgetpass.c: minor cleanup and now includes sys/bsdtypes for
        !          14501:          svr4'ish boxen
        !          14502:
        !          14503: 1996-01-09 12:42  millert
        !          14504:
        !          14505:        * configure.in: ISC now gets -lcrypt now check for sys/bsdtypes.h
        !          14506:
        !          14507: 1996-01-09 12:41  millert
        !          14508:
        !          14509:        * config.h.in: added check for sys/bsdtypes.h
        !          14510:
        !          14511: 1996-01-07 16:00  millert
        !          14512:
        !          14513:        * parse.yacc: removed debugging stuff (setting freed ptr to NULL)
        !          14514:
        !          14515: 1996-01-07 15:55  millert
        !          14516:
        !          14517:        * TROUBLESHOOTING: added 2 entries
        !          14518:
        !          14519: 1996-01-07 15:55  millert
        !          14520:
        !          14521:        * Makefile.in: added FAQ
        !          14522:
        !          14523: 1996-01-07 14:26  millert
        !          14524:
        !          14525:        * TROUBLESHOOTING: added section on syslog
        !          14526:
        !          14527: 1996-01-07 14:25  millert
        !          14528:
        !          14529:        * configure.in: added AC_ISC_POSIX for better ISC support
        !          14530:
        !          14531: 1996-01-07 14:25  millert
        !          14532:
        !          14533:        * config.h.in: fixed typo
        !          14534:
        !          14535: 1996-01-07 14:25  millert
        !          14536:
        !          14537:        * config.h.in: added define for _POSIX_SOURCE
        !          14538:
        !          14539: 1996-01-04 00:41  millert
        !          14540:
        !          14541:        * configure.in: fixed check for lsearch()
        !          14542:
        !          14543: 1995-12-21 21:53  millert
        !          14544:
        !          14545:        * interfaces.c: fixed for AIX now deal if num_interfaces == 0
        !          14546:          (should not happen)
        !          14547:
        !          14548: 1995-12-20 17:02  millert
        !          14549:
        !          14550:        * configure.in: now only define HAVE_LSEARCH if there is a
        !          14551:          corresponding search.h
        !          14552:
        !          14553: 1995-12-20 15:52  millert
        !          14554:
        !          14555:        * interfaces.c: works on ISC again
        !          14556:
        !          14557: 1995-12-18 17:36  millert
        !          14558:
        !          14559:        * configure.in: now define HAVE_LSEARCH if we find lsearch() in
        !          14560:          libcompat
        !          14561:
        !          14562: 1995-12-18 17:32  millert
        !          14563:
        !          14564:        * lsearch.c: char * -> const char *
        !          14565:
        !          14566: 1995-12-18 17:29  millert
        !          14567:
        !          14568:        * configure.in: now looks in -lcompat for lsearch()
        !          14569:
        !          14570: 1995-12-18 17:23  millert
        !          14571:
        !          14572:        * Makefile.in: remove sudo.core visudo.core for clan target
        !          14573:
        !          14574: 1995-12-17 22:53  millert
        !          14575:
        !          14576:        * aclocal.m4: added UID_MAX support in check for MAX_UID_T_LEN
        !          14577:
        !          14578: 1995-12-17 22:36  millert
        !          14579:
        !          14580:        * Makefile.in: fixed another occurence of sudo_getpwuid.*
        !          14581:
        !          14582: 1995-12-17 22:30  millert
        !          14583:
        !          14584:        * getspwuid.c, Makefile.in: sudo_getpwuid.c -> getspwuid.c
        !          14585:
        !          14586: 1995-12-17 22:22  millert
        !          14587:
        !          14588:        * configure.in: moved the "echo"
        !          14589:
        !          14590: 1995-12-17 22:09  millert
        !          14591:
        !          14592:        * CHANGES, BUGS, INSTALL, Makefile.in, OPTIONS, README, check.c,
        !          14593:          compat.h, config.h.in, configure.in, find_path.c, getspwuid.c,
        !          14594:          getwd.c, goodpath.c, ins_2001.h, ins_classic.h, ins_csops.h,
        !          14595:          ins_goons.h, insults.h, interfaces.c, logging.c, options.h,
        !          14596:          parse.c, parse.lex, parse.yacc, pathnames.h.in, putenv.c,
        !          14597:          strdup.c, sudo.c, sudo.h, sudo_setenv.c, testsudoers.c,
        !          14598:          tgetpass.c, utime.c, version.h, visudo.c: ++version
        !          14599:
        !          14600: 1995-12-17 22:04  millert
        !          14601:
        !          14602:        * testsudoers.c: added group support
        !          14603:
        !          14604: 1995-12-17 22:00  millert
        !          14605:
        !          14606:        * sample.sudoers: added group entry
        !          14607:
        !          14608: 1995-12-17 21:59  millert
        !          14609:
        !          14610:        * sudoers.man: documented group support
        !          14611:
        !          14612: 1995-12-17 21:50  millert
        !          14613:
        !          14614:        * parse.c, parse.lex, visudo.c, parse.yacc: added group support
        !          14615:
        !          14616: 1995-12-15 17:45  millert
        !          14617:
        !          14618:        * check.c: tkfile was too short and overflowed the kerberos realm
        !          14619:
        !          14620: 1995-12-11 17:09  millert
        !          14621:
        !          14622:        * sudo.c: now copy command args directly from Argv
        !          14623:
        !          14624: 1995-12-11 15:55  millert
        !          14625:
        !          14626:        * sudo.c: replaced code to copy cmnd_args so that is does not use
        !          14627:          realloc since most realloc()'s really stink
        !          14628:
        !          14629: 1995-12-08 14:11  millert
        !          14630:
        !          14631:        * configure.in: syslog() fixed in hpux 10.01
        !          14632:
        !          14633: 1995-12-06 17:45  millert
        !          14634:
        !          14635:        * configure.in: AC_CHECK_LIB() now sets SUDO_LIBS (and VISUDO_LIBS
        !          14636:          if appropriate)
        !          14637:
        !          14638: 1995-12-06 17:30  millert
        !          14639:
        !          14640:        * configure.in: better error if cannot find skey incs or libs
        !          14641:
        !          14642: 1995-12-06 17:26  millert
        !          14643:
        !          14644:        * aclocal.m4: now use a temp file for determining max len of uid_t
        !          14645:          in string form.  the old hacky way broke on netbsd
        !          14646:
        !          14647: 1995-12-05 19:02  millert
        !          14648:
        !          14649:        * sudo.c: added set of parens and a space
        !          14650:
        !          14651: 1995-12-05 18:58  millert
        !          14652:
        !          14653:        * dce_pwent.c: fixes from Jeff Earickson <jaearick@colby.edu> ,
        !          14654:
        !          14655: 1995-12-05 18:58  millert
        !          14656:
        !          14657:        * check.c: modified a comment
        !          14658:
        !          14659: 1995-12-05 18:57  millert
        !          14660:
        !          14661:        * Makefile.in: fixed up testsudoers target
        !          14662:
        !          14663: 1995-12-05 18:56  millert
        !          14664:
        !          14665:        * configure.in: DCE changes from Jeff Earickson
        !          14666:          <jaearick@colby.edu> LIBS -> SUDO_LIBS and VISUDO_LIBS LDFLAGS ->
        !          14667:          SUDO_FDFLAGS and VISUDO_LDFLAGS
        !          14668:
        !          14669: 1995-12-05 18:17  millert
        !          14670:
        !          14671:        * Makefile.in: LIBS -> SUDO_LIBS , VISUDO_LIBS LDFLAGS ->
        !          14672:          SUDO_LDFLAGS, VISUDO_LDFLAGS
        !          14673:
        !          14674: 1995-11-27 23:32  millert
        !          14675:
        !          14676:        * configure.in: fix for C2 on hpux 10 now uses -linet if it exists
        !          14677:
        !          14678: 1995-11-27 23:17  millert
        !          14679:
        !          14680:        * check.c: LONG_SKEY_PROMPT is less of a klusge /
        !          14681:
        !          14682: 1995-11-27 23:17  millert
        !          14683:
        !          14684:        * configure.in: fixed typos w/ dce stuff
        !          14685:
        !          14686: 1995-11-27 23:14  millert
        !          14687:
        !          14688:        * Makefile.in: added dce_pwent.c
        !          14689:
        !          14690: 1995-11-26 13:48  millert
        !          14691:
        !          14692:        * INSTALL: amended section on combining authentication mechanisms
        !          14693:
        !          14694: 1995-11-26 13:48  millert
        !          14695:
        !          14696:        * PORTING: minor updates for 1.3.6
        !          14697:
        !          14698: 1995-11-26 13:47  millert
        !          14699:
        !          14700:        * TROUBLESHOOTING: added 2 more entries
        !          14701:
        !          14702: 1995-11-26 13:39  millert
        !          14703:
        !          14704:        * BUGS: updated for 1.3.6
        !          14705:
        !          14706: 1995-11-26 13:39  millert
        !          14707:
        !          14708:        * README: overhauled
        !          14709:
        !          14710: 1995-11-25 21:23  millert
        !          14711:
        !          14712:        * INSTALL: rewrote for sudo 1.3.6
        !          14713:
        !          14714: 1995-11-25 21:23  millert
        !          14715:
        !          14716:        * TROUBLESHOOTING: added 3 entries
        !          14717:
        !          14718: 1995-11-25 13:53  millert
        !          14719:
        !          14720:        * find_path.c, getspwuid.c, sudo.c: added explict casts for strdup
        !          14721:          since many includes don't prototype it.  gag me.
        !          14722:
        !          14723: 1995-11-25 13:23  millert
        !          14724:
        !          14725:        * sudo.h: removed prototype for sudo_getpwuid() since convex C
        !          14726:          compiler choked on it.
        !          14727:
        !          14728: 1995-11-25 13:23  millert
        !          14729:
        !          14730:        * sudo.c: added prototype for sudo_getpwuid()
        !          14731:
        !          14732: 1995-11-25 13:23  millert
        !          14733:
        !          14734:        * lsearch.c: now compiles on strict ANSI compilers
        !          14735:
        !          14736: 1995-11-24 23:56  millert
        !          14737:
        !          14738:        * check.c: added LONG_SKEY_PROMPT support
        !          14739:
        !          14740: 1995-11-24 23:55  millert
        !          14741:
        !          14742:        * Makefile.in: added extra $'s for make to eat up, yum.
        !          14743:
        !          14744: 1995-11-24 23:38  millert
        !          14745:
        !          14746:        * OPTIONS, options.h: added LONG_SKEY_PROMPT
        !          14747:
        !          14748: 1995-11-24 18:48  millert
        !          14749:
        !          14750:        * check.c: s/key support now works with normal s/key as well as
        !          14751:          logdaemon
        !          14752:
        !          14753: 1995-11-24 18:46  millert
        !          14754:
        !          14755:        * options.h, OPTIONS: added SKEY_ONLY
        !          14756:
        !          14757: 1995-11-24 18:46  millert
        !          14758:
        !          14759:        * compat.h: set _PASSWD_LEN to 256 for any of KERB4, DCE, SKEY
        !          14760:
        !          14761: 1995-11-24 00:42  millert
        !          14762:
        !          14763:        * INSTALL: added DCE note added more AIX notes
        !          14764:
        !          14765: 1995-11-24 00:39  millert
        !          14766:
        !          14767:        * sudo.c: now include pthread.h for DCE support
        !          14768:
        !          14769: 1995-11-23 22:22  millert
        !          14770:
        !          14771:        * check.c: dce_pwent() is ok after all .,
        !          14772:
        !          14773: 1995-11-23 22:21  millert
        !          14774:
        !          14775:        * logging.c: now uses SYSLOG() macro that equates to either
        !          14776:          syslog() or syslog_wrapper
        !          14777:
        !          14778: 1995-11-23 21:44  millert
        !          14779:
        !          14780:        * dce_pwent.c: minor formatting changes.  renamed check() to
        !          14781:          somthing less generic
        !          14782:
        !          14783: 1995-11-23 21:27  millert
        !          14784:
        !          14785:        * check.c, logging.c, parse.yacc, sudo.c, sudo.h, testsudoers.c,
        !          14786:          visudo.c: now uses user_pw_ent and simple macros to get at the
        !          14787:          contents
        !          14788:
        !          14789: 1995-11-22 20:35  millert
        !          14790:
        !          14791:        * check.c: simpler dec unix C2 support
        !          14792:
        !          14793: 1995-11-22 20:35  millert
        !          14794:
        !          14795:        * getspwuid.c: now sets crypt_type for DEC unix C2
        !          14796:
        !          14797: 1995-11-21 18:00  millert
        !          14798:
        !          14799:        * configure.in: added csops paths for skey
        !          14800:
        !          14801: 1995-11-21 16:27  millert
        !          14802:
        !          14803:        * getspwuid.c: now includes string.h for strdup() prototype
        !          14804:
        !          14805: 1995-11-21 01:47  millert
        !          14806:
        !          14807:        * getspwuid.c: fixed a few typos
        !          14808:
        !          14809: 1995-11-20 22:59  millert
        !          14810:
        !          14811:        * check.c: now includes skey.h
        !          14812:
        !          14813: 1995-11-20 22:10  millert
        !          14814:
        !          14815:        * getspwuid.c: fixed up comments
        !          14816:
        !          14817: 1995-11-20 22:04  millert
        !          14818:
        !          14819:        * check.c: moved a lot of the shadow passwd crap to sudo_getpwuid()
        !          14820:
        !          14821: 1995-11-20 22:01  millert
        !          14822:
        !          14823:        * sudo.c: now uses sudo_pw_ent
        !          14824:
        !          14825: 1995-11-20 21:50  millert
        !          14826:
        !          14827:        * testsudoers.c: now uses sudo_pw_ent
        !          14828:
        !          14829: 1995-11-20 21:40  millert
        !          14830:
        !          14831:        * visudo.c: now sets sudo_pw_ent
        !          14832:
        !          14833: 1995-11-20 21:28  millert
        !          14834:
        !          14835:        * getspwuid.c: Initial revision
        !          14836:
        !          14837: 1995-11-20 21:28  millert
        !          14838:
        !          14839:        * tgetpass.c: moved dce stuff into compat.h
        !          14840:
        !          14841: 1995-11-20 21:27  millert
        !          14842:
        !          14843:        * sudo.h, logging.c: now uses sudo_pw_ent
        !          14844:
        !          14845: 1995-11-20 21:27  millert
        !          14846:
        !          14847:        * Makefile.in: added sudo_getpwuid.c
        !          14848:
        !          14849: 1995-11-20 21:25  millert
        !          14850:
        !          14851:        * compat.h: added dce support
        !          14852:
        !          14853: 1995-11-20 21:13  millert
        !          14854:
        !          14855:        * parse.yacc: now uses sudo_pw_ent
        !          14856:
        !          14857: 1995-11-20 14:40  millert
        !          14858:
        !          14859:        * check.c: fixed exempt_group stuff for OS's that don't put base
        !          14860:          gid in group vector
        !          14861:
        !          14862: 1995-11-20 01:39  millert
        !          14863:
        !          14864:        * check.c: S/Key support now works with sunos4 shadow passwords
        !          14865:
        !          14866: 1995-11-19 22:31  millert
        !          14867:
        !          14868:        * Makefile.in: fixed clean rule
        !          14869:
        !          14870: 1995-11-19 22:31  millert
        !          14871:
        !          14872:        * config.h.in, configure.in: added DCE support
        !          14873:
        !          14874: 1995-11-19 22:30  millert
        !          14875:
        !          14876:        * tgetpass.c: DCE & KERB support
        !          14877:
        !          14878: 1995-11-19 22:30  millert
        !          14879:
        !          14880:        * check.c: first stab at dce support
        !          14881:
        !          14882: 1995-11-19 22:24  millert
        !          14883:
        !          14884:        * dce_pwent.c: now smells like sudo
        !          14885:
        !          14886: 1995-11-19 22:11  millert
        !          14887:
        !          14888:        * dce_pwent.c: Initial revision
        !          14889:
        !          14890: 1995-11-19 21:36  millert
        !          14891:
        !          14892:        * check.c: skey'd sudo now works w/ normal password as well
        !          14893:
        !          14894: 1995-11-19 18:37  millert
        !          14895:
        !          14896:        * Makefile.in, OPTIONS, check.c, compat.h, config.h.in,
        !          14897:          find_path.c, getwd.c, goodpath.c, ins_2001.h, ins_classic.h,
        !          14898:          ins_csops.h, ins_goons.h, insults.h, interfaces.c, logging.c,
        !          14899:          options.h, parse.c, parse.lex, parse.yacc, pathnames.h.in,
        !          14900:          putenv.c, strdup.c, sudo.c, sudo.h, sudo_setenv.c, testsudoers.c,
        !          14901:          tgetpass.c, utime.c, version.h, visudo.c: updated version number
        !          14902:
        !          14903: 1995-11-19 18:32  millert
        !          14904:
        !          14905:        * README: updated to reflect version change
        !          14906:
        !          14907: 1995-11-19 18:27  millert
        !          14908:
        !          14909:        * configure.in: --with options now line up ++version
        !          14910:
        !          14911: 1995-11-19 18:26  millert
        !          14912:
        !          14913:        * sudo.h: removed unecesary S/Key stuff
        !          14914:
        !          14915: 1995-11-19 18:25  millert
        !          14916:
        !          14917:        * configure.in: fixed S/Key support
        !          14918:
        !          14919: 1995-11-19 18:24  millert
        !          14920:
        !          14921:        * Makefile.in: -I stuff now goes in CPPFLAGS
        !          14922:
        !          14923: 1995-11-19 18:23  millert
        !          14924:
        !          14925:        * check.c: fixed SKey support
        !          14926:
        !          14927: 1995-11-19 15:23  millert
        !          14928:
        !          14929:        * README: updated version
        !          14930:
        !          14931: 1995-11-19 13:59  millert
        !          14932:
        !          14933:        * OPTIONS: fixed description of EXEMPTGROUP
        !          14934:
        !          14935: 1995-11-19 10:47  millert
        !          14936:
        !          14937:        * sudo.c: more people use _RLD_ than just alphas...
        !          14938:
        !          14939: 1995-11-18 21:35  millert
        !          14940:
        !          14941:        * Makefile.in: replaced $man_prefix with $mandir
        !          14942:
        !          14943: 1995-11-18 21:30  millert
        !          14944:
        !          14945:        * configure.in: fixed a typo
        !          14946:
        !          14947: 1995-11-18 21:28  millert
        !          14948:
        !          14949:        * Makefile.in: now use more GNU'ish dir names
        !          14950:
        !          14951: 1995-11-18 21:27  millert
        !          14952:
        !          14953:        * configure.in: now set *dir correctly (can override from command
        !          14954:          line)
        !          14955:
        !          14956: 1995-11-18 19:17  millert
        !          14957:
        !          14958:        * sudo.c: now deal with situations where we getwd() fails
        !          14959:
        !          14960: 1995-11-17 00:37  millert
        !          14961:
        !          14962:        * Makefile.in: added etc_dir, bin_dir, sbin_dir
        !          14963:
        !          14964: 1995-11-17 00:37  millert
        !          14965:
        !          14966:        * configure.in: added sbin_dir
        !          14967:
        !          14968: 1995-11-16 21:28  millert
        !          14969:
        !          14970:        * Makefile.in: now ship a flex-generated lex.yy.c
        !          14971:
        !          14972: 1995-11-16 21:09  millert
        !          14973:
        !          14974:        * Makefile.in: now sets _PATH_SUDO_SUDOERS, _PATH_SUDO_STMP,
        !          14975:          SUDOERS_OWNER
        !          14976:
        !          14977: 1995-11-16 21:06  millert
        !          14978:
        !          14979:        * pathnames.h.in: _PATH_SUDO_SUDOERS & _PATH_SUDO_STMP are now
        !          14980:          overridden via Makefile
        !          14981:
        !          14982: 1995-11-16 21:05  millert
        !          14983:
        !          14984:        * options.h: no more error for redefining SUDOERS_OWNER
        !          14985:
        !          14986: 1995-11-16 21:05  millert
        !          14987:
        !          14988:        * OPTIONS: expanded SUDOERS_OWNER section
        !          14989:
        !          14990: 1995-11-16 03:05  millert
        !          14991:
        !          14992:        * visudo.c: now warn if chown(2) failed
        !          14993:
        !          14994: 1995-11-16 02:55  millert
        !          14995:
        !          14996:        * logging.c: better default warning for NO_SUDOERS_FILE
        !          14997:
        !          14998: 1995-11-16 02:54  millert
        !          14999:
        !          15000:        * sudo.c: added missing set_perms() no more cryptic message if the
        !          15001:          sudoers file is zero length, now just give a parse error
        !          15002:
        !          15003: 1995-11-16 02:42  millert
        !          15004:
        !          15005:        * logging.c: better diagnostics if NO_SUDOERS_FILE
        !          15006:
        !          15007: 1995-11-16 02:41  millert
        !          15008:
        !          15009:        * sudo.c: check_sudoers() now catches sudoers files that are not
        !          15010:          readable (but are stat'able).
        !          15011:
        !          15012: 1995-11-13 01:12  millert
        !          15013:
        !          15014:        * configure.in: now add -D__STDC__ for convex cc (not gcc)
        !          15015:
        !          15016: 1995-11-13 00:52  millert
        !          15017:
        !          15018:        * configure.in: MAN_PREFIX -> man_prefix now sets prefix and
        !          15019:          exec_prefix
        !          15020:
        !          15021: 1995-11-13 00:52  millert
        !          15022:
        !          15023:        * Makefile.in: now uses exec_prefix & prefix from configure
        !          15024:
        !          15025: 1995-11-13 00:16  millert
        !          15026:
        !          15027:        * find_path.c, getwd.c, goodpath.c, interfaces.c, logging.c,
        !          15028:          parse.c, parse.lex, parse.yacc, sudo.c, sudo.h, sudo_setenv.c,
        !          15029:          tgetpass.c, utime.c, visudo.c: options.h is now <> instead of ""
        !          15030:          so shadow build trees can have a custom copy of options.h
        !          15031:
        !          15032: 1995-11-13 00:15  millert
        !          15033:
        !          15034:        * check.c: user_is_exempt() is no longer a hack, it now uses
        !          15035:          getgrnam()
        !          15036:
        !          15037: 1995-11-12 23:56  millert
        !          15038:
        !          15039:        * options.h: EXEMPTGROUP is now "sudo"
        !          15040:
        !          15041: 1995-11-12 22:25  millert
        !          15042:
        !          15043:        * configure.in: MAN_POSTINSTALL now contains a leading space
        !          15044:
        !          15045: 1995-11-12 22:25  millert
        !          15046:
        !          15047:        * Makefile.in: removed leading tab if @MAN_POSTINSTALL@ not defined
        !          15048:          now removes testsudoers in clean:
        !          15049:
        !          15050: 1995-11-12 22:24  millert
        !          15051:
        !          15052:        * tgetpass.c: includes pwd.h to get _PASSWD_LEN definition
        !          15053:
        !          15054: 1995-10-30 15:51  millert
        !          15055:
        !          15056:        * sudo.c: unset the KRB_CONF envariable if using kerberos so we
        !          15057:          don't get spoofed into using a bogus server
        !          15058:
        !          15059: 1995-09-29 17:50  millert
        !          15060:
        !          15061:        * parse.yacc: now explicately initialize match[] tp be FALSE
        !          15062:
        !          15063: 1995-09-23 16:48  millert
        !          15064:
        !          15065:        * sudo.c: removed unused variable now passes -Wall
        !          15066:
        !          15067: 1995-09-23 16:48  millert
        !          15068:
        !          15069:        * parse.yacc: yyerror and dumpaliases are now void's now passes
        !          15070:          -Wall
        !          15071:
        !          15072: 1995-09-23 16:48  millert
        !          15073:
        !          15074:        * parse.lex: added prototype for yyerror
        !          15075:
        !          15076: 1995-09-23 16:47  millert
        !          15077:
        !          15078:        * interfaces.c: rmeoved unused cruft now passes -Wall
        !          15079:
        !          15080: 1995-09-23 16:47  millert
        !          15081:
        !          15082:        * check.c, logging.c, parse.c: now passes -Wall
        !          15083:
        !          15084: 1995-09-23 16:46  millert
        !          15085:
        !          15086:        * Makefile.in: fixed headers that moved to emul dir
        !          15087:
        !          15088: 1995-09-23 12:05  millert
        !          15089:
        !          15090:        * logging.c: fixed deref of nil pointer if no args
        !          15091:
        !          15092: 1995-09-15 19:18  millert
        !          15093:
        !          15094:        * OPTIONS: added a caveat to FQDN section
        !          15095:
        !          15096: 1995-09-13 19:48  millert
        !          15097:
        !          15098:        * Makefile.in: more $srcdir support for install targets
        !          15099:
        !          15100: 1995-09-13 17:17  millert
        !          15101:
        !          15102:        * find_path.c, interfaces.c, parse.c, parse.lex, parse.yacc,
        !          15103:          putenv.c, strdup.c, sudo.c, sudo_setenv.c, testsudoers.c,
        !          15104:          visudo.c: don't include malloc.h if we include stdlib.h
        !          15105:
        !          15106: 1995-09-12 21:44  millert
        !          15107:
        !          15108:        * parse.yacc: local search.h now lives in emul
        !          15109:
        !          15110: 1995-09-12 21:41  millert
        !          15111:
        !          15112:        * lsearch.c: local search.h now lives in emul
        !          15113:
        !          15114: 1995-09-12 21:41  millert
        !          15115:
        !          15116:        * check.c, utime.c: local utime.h now lives in emul dir
        !          15117:
        !          15118: 1995-09-12 21:38  millert
        !          15119:
        !          15120:        * Makefile.in: added support for building in other than the
        !          15121:          sourcedir
        !          15122:
        !          15123: 1995-09-10 14:01  millert
        !          15124:
        !          15125:        * OPTIONS: annotated CSOPS_INSULTS option
        !          15126:
        !          15127: 1995-09-10 13:56  millert
        !          15128:
        !          15129:        * TROUBLESHOOTING: updated shadow passwords blurb
        !          15130:
        !          15131: 1995-09-09 21:00  millert
        !          15132:
        !          15133:        * sudo.c: if SHELL_IF_NO_ARGS is set, "sudo -- foo" now runs a
        !          15134:          shell and passes along foo as the arguments
        !          15135:
        !          15136: 1995-09-09 18:52  millert
        !          15137:
        !          15138:        * parse.lex: collapsed pathname and dir sections into one -- its
        !          15139:          now less expensive
        !          15140:
        !          15141: 1995-09-09 18:34  millert
        !          15142:
        !          15143:        * parse.lex: fixed spacing quoting [,:\\=] now works correctly
        !          15144:          append() and fill() now take args to make the above work
        !          15145:
        !          15146: 1995-09-08 20:51  millert
        !          15147:
        !          15148:        * sudo.c: fixed a typo that caused commands with no tty on fd 0 but
        !          15149:          a tty on fd 1 to erroneously have "none" as their tty
        !          15150:
        !          15151: 1995-09-04 15:35  millert
        !          15152:
        !          15153:        * check.c: timestampfile is now a global static removed decl of
        !          15154:          timestampfile in remove_timestamp since we can just use the
        !          15155:          global one
        !          15156:
        !          15157: 1995-09-04 15:28  millert
        !          15158:
        !          15159:        * check.c: created touch() to update timestamps added
        !          15160:          USE_TTY_TICKETS support (bit of a kludge)
        !          15161:
        !          15162: 1995-09-04 15:28  millert
        !          15163:
        !          15164:        * compat.h: added _S_IFDIR and S_ISDIR
        !          15165:
        !          15166: 1995-09-04 15:22  millert
        !          15167:
        !          15168:        * OPTIONS, options.h: added USE_TTY_TICKETS
        !          15169:
        !          15170: 1995-09-04 00:38  millert
        !          15171:
        !          15172:        * parse.yacc: removed const from casts for lsearch() & lfind() to
        !          15173:          placate irix 4.x C compiler
        !          15174:
        !          15175: 1995-09-03 14:12  millert
        !          15176:
        !          15177:        * sudo.c: now only strip '/dev/' off of a tty if it starts with
        !          15178:          '/dev/'
        !          15179:
        !          15180: 1995-09-03 14:12  millert
        !          15181:
        !          15182:        * pathnames.h.in: added _PATH_DEV
        !          15183:
        !          15184: 1995-09-03 14:11  millert
        !          15185:
        !          15186:        * configure.in: AC_HAVE_HEADERS -> AC_CHECK_HEADERS now check for
        !          15187:          tcgetattr only if have termios.h
        !          15188:
        !          15189: 1995-09-03 14:09  millert
        !          15190:
        !          15191:        * tgetpass.c: fixed incorrect #ifdef termio uses "unsigned short"
        !          15192:          not int for c_?flag
        !          15193:
        !          15194: 1995-09-03 13:19  millert
        !          15195:
        !          15196:        * parse.lex, parse.yacc: fixed a spelling error
        !          15197:
        !          15198: 1995-09-03 13:17  millert
        !          15199:
        !          15200:        * Makefile.in: fixed typo
        !          15201:
        !          15202: 1995-09-02 12:55  millert
        !          15203:
        !          15204:        * Makefile.in: fixed a comment
        !          15205:
        !          15206: 1995-09-02 12:54  millert
        !          15207:
        !          15208:        * parse.yacc: added dotcat() to cat 2 strings w/ a dot effeciently
        !          15209:          now that we dynamically allocate strings they need to be free()'d
        !          15210:
        !          15211: 1995-09-02 12:46  millert
        !          15212:
        !          15213:        * parse.lex: dynamically allocates space for strings
        !          15214:
        !          15215: 1995-09-02 12:34  millert
        !          15216:
        !          15217:        * sudo.h: no more MAXCOMMANDLENGTH
        !          15218:
        !          15219: 1995-09-01 22:25  millert
        !          15220:
        !          15221:        * sudo.h: added decl of tty
        !          15222:
        !          15223: 1995-09-01 22:25  millert
        !          15224:
        !          15225:        * logging.c, sudo.c: moved tty stuff into sudo.c
        !          15226:
        !          15227: 1995-09-01 14:18  millert
        !          15228:
        !          15229:        * parse.c: fixed a logic bug.  Was denying a command if user gave
        !          15230:          command line args but there were none in the sudoers file which
        !          15231:          is wrong.
        !          15232:
        !          15233: 1995-09-01 01:18  millert
        !          15234:
        !          15235:        * sudo.h: MAXCOMMMANDLEN dropped down to 1K
        !          15236:
        !          15237: 1995-09-01 01:13  millert
        !          15238:
        !          15239:        * parse.lex: return foo; -> return(foo);
        !          15240:
        !          15241: 1995-09-01 01:03  millert
        !          15242:
        !          15243:        * parse.yacc: fixed netgr_matches() prototype
        !          15244:
        !          15245: 1995-09-01 01:02  millert
        !          15246:
        !          15247:        * parse.lex: added support for escaping "termination" characters
        !          15248:
        !          15249: 1995-09-01 00:55  millert
        !          15250:
        !          15251:        * parse.c: buf is now of size MAXPATHLEN+1 since it never holds
        !          15252:          command args
        !          15253:
        !          15254: 1995-09-01 00:50  millert
        !          15255:
        !          15256:        * sudo.c: fixed comments
        !          15257:
        !          15258: 1995-09-01 00:49  millert
        !          15259:
        !          15260:        * goodpath.c: fixed negation problem (doh!)
        !          15261:
        !          15262: 1995-09-01 00:25  millert
        !          15263:
        !          15264:        * parse.yacc: fixed 2nd parameter to lfind()
        !          15265:
        !          15266: 1995-09-01 00:24  millert
        !          15267:
        !          15268:        * parse.lex: now do bounds checking in fill() and append()
        !          15269:
        !          15270: 1995-09-01 00:23  millert
        !          15271:
        !          15272:        * sudo.c: include netdb.h as we should added a missing void cast
        !          15273:          added SHELL_IF_NO_ARGS support now use realloc() properly.  would
        !          15274:          fail if realloc actually moved the string instead of shrinking it
        !          15275:
        !          15276: 1995-09-01 00:17  millert
        !          15277:
        !          15278:        * sample.sudoers: updated with examples of new features
        !          15279:
        !          15280: 1995-09-01 00:05  millert
        !          15281:
        !          15282:        * goodpath.c: now set errno to EACCES if not a regular file or not
        !          15283:          executable
        !          15284:
        !          15285: 1995-09-01 00:04  millert
        !          15286:
        !          15287:        * find_path.c: if given a fully-qualified or relative path we now
        !          15288:          check it with sudo_goodpath() and error out with the appropriate
        !          15289:          error message if the file does not exist or is not executable
        !          15290:
        !          15291: 1995-09-01 00:03  millert
        !          15292:
        !          15293:        * lsearch.c, emul/search.h: now use correct args for lfind
        !          15294:
        !          15295: 1995-09-01 00:03  millert
        !          15296:
        !          15297:        * logging.c: added a comment
        !          15298:
        !          15299: 1995-08-31 23:52  millert
        !          15300:
        !          15301:        * insults.h: added in CSOps insults
        !          15302:
        !          15303: 1995-08-31 23:51  millert
        !          15304:
        !          15305:        * ins_csops.h: Initial revision
        !          15306:
        !          15307: 1995-08-31 23:35  millert
        !          15308:
        !          15309:        * tgetpass.c: added RCS id
        !          15310:
        !          15311: 1995-08-31 22:56  millert
        !          15312:
        !          15313:        * sudo.h: increased MAXCOMMANDLENGTH to 8k HAVE_GETCWD ->
        !          15314:          HAVE_GETWD
        !          15315:
        !          15316: 1995-08-31 22:55  millert
        !          15317:
        !          15318:        * OPTIONS: added CLASSIC_INSULTS, CSOPS_INSULTS, SHELL_IF_NO_ARGS
        !          15319:
        !          15320: 1995-08-31 22:54  millert
        !          15321:
        !          15322:        * sudo.c: fixed -k load_interfaces() now gets called if FQDN is set
        !          15323:          -p now works with -s
        !          15324:
        !          15325: 1995-08-31 22:54  millert
        !          15326:
        !          15327:        * parse.c: don't try to stat() "pseudo commands" like "validate"
        !          15328:
        !          15329: 1995-08-31 22:53  millert
        !          15330:
        !          15331:        * options.h: added CLASSIC_INSULTS added CSOPS_INSULTS added
        !          15332:          SHELL_IF_NO_ARGS
        !          15333:
        !          15334: 1995-08-31 22:53  millert
        !          15335:
        !          15336:        * configure.in: added SecurID support added other insults to
        !          15337:          --with-csops
        !          15338:
        !          15339: 1995-08-31 22:52  millert
        !          15340:
        !          15341:        * config.h.in: added HAVE_SECURID
        !          15342:
        !          15343: 1995-08-31 22:52  millert
        !          15344:
        !          15345:        * Makefile.in: added clobber target added ins_csops.h now gets
        !          15346:          CFLAGS from configure
        !          15347:
        !          15348: 1995-08-31 22:46  millert
        !          15349:
        !          15350:        * aclocal.m4: relaxed SUDO_FULL_VOID
        !          15351:
        !          15352: 1995-08-31 22:44  millert
        !          15353:
        !          15354:        * visudo.c: function comment blocks are now in same style as rest
        !          15355:          of code
        !          15356:
        !          15357: 1995-08-31 22:44  millert
        !          15358:
        !          15359:        * testsudoers.c: added support for command line args in
        !          15360:          /etc/sudoers
        !          15361:
        !          15362: 1995-08-31 22:43  millert
        !          15363:
        !          15364:        * sudoers.man: updated to have command args in the sudoers file
        !          15365:
        !          15366: 1995-08-31 22:42  millert
        !          15367:
        !          15368:        * sudo.man: added -s and -- flags added SHELL to ENVIRONMENT
        !          15369:          VARIABLES section
        !          15370:
        !          15371: 1995-08-19 19:32  millert
        !          15372:
        !          15373:        * parse.yacc: PATH renamed to COMMAND
        !          15374:
        !          15375: 1995-08-19 19:31  millert
        !          15376:
        !          15377:        * parse.lex: it is now a parse error for directories to have args
        !          15378:          attached to them
        !          15379:
        !          15380: 1995-08-19 19:30  millert
        !          15381:
        !          15382:        * logging.c: now say command args if telling user to buzz off
        !          15383:
        !          15384: 1995-08-19 19:30  millert
        !          15385:
        !          15386:        * sudo.c: -s no longer indicates end of args sped up loading on
        !          15387:          cmnd_args in load_cmnd()
        !          15388:
        !          15389: 1995-08-19 19:29  millert
        !          15390:
        !          15391:        * parse.c: removed an unreachable statement
        !          15392:
        !          15393: 1995-08-19 17:53  millert
        !          15394:
        !          15395:        * parse.lex: made more efficient by pulling out the terminators
        !          15396:          when in GOTCMND state and making them their own rule
        !          15397:
        !          15398: 1995-08-14 00:07  millert
        !          15399:
        !          15400:        * sudo.h: removed MAXLOGLEN since it is no longer used
        !          15401:
        !          15402: 1995-08-14 00:07  millert
        !          15403:
        !          15404:        * parse.lex: now allows command args
        !          15405:
        !          15406: 1995-08-14 00:06  millert
        !          15407:
        !          15408:        * parse.c: now groks command arguments
        !          15409:
        !          15410: 1995-08-13 23:39  millert
        !          15411:
        !          15412:        * logging.c: now sets tty correctly when piped input
        !          15413:
        !          15414: 1995-08-13 23:35  millert
        !          15415:
        !          15416:        * sudo.c: fixed loading of cmnd_args (was including command name
        !          15417:          too)
        !          15418:
        !          15419: 1995-08-13 23:34  millert
        !          15420:
        !          15421:        * logging.c: fixed a core dump due to incorrect if construct
        !          15422:
        !          15423: 1995-08-13 00:33  millert
        !          15424:
        !          15425:        * configure.in: only add -lsun is irix < 5 don't look for -lnsl or
        !          15426:          -lsocket if irix
        !          15427:
        !          15428: 1995-08-13 00:33  millert
        !          15429:
        !          15430:        * aclocal.m4: fixed check for ISC
        !          15431:
        !          15432: 1995-08-13 00:32  millert
        !          15433:
        !          15434:        * sudo.c: now sets cmnd_args used by log_error() and that will be
        !          15435:          used by the parse to check against command args
        !          15436:
        !          15437: 1995-08-13 00:32  millert
        !          15438:
        !          15439:        * sudo.h: added cmnd_args
        !          15440:
        !          15441: 1995-08-13 00:31  millert
        !          15442:
        !          15443:        * logging.c: now dynamically allocate logline since we can guess at
        !          15444:          its size
        !          15445:
        !          15446: 1995-08-05 13:52  millert
        !          15447:
        !          15448:        * logging.c: cleaned up a bunch of unnecesary #ifdef's eliminated a
        !          15449:          buffer remove "register" since the compiler knows more than I do
        !          15450:          now do a "basename" of the tty
        !          15451:
        !          15452: 1995-07-31 18:20  millert
        !          15453:
        !          15454:        * configure.in: ++version
        !          15455:
        !          15456: 1995-07-30 22:37  millert
        !          15457:
        !          15458:        * sudo.h: added shell extern changed MODE_* to be bit masks to
        !          15459:          allow for several options together
        !          15460:
        !          15461: 1995-07-30 22:36  millert
        !          15462:
        !          15463:        * sudo.c: added -s (shell) option made MODE_* masks so we can do
        !          15464:          bitwise & and | to see if multiple flags are set.
        !          15465:
        !          15466: 1995-07-30 22:01  millert
        !          15467:
        !          15468:        * check.c: added securid support
        !          15469:
        !          15470: 1995-07-30 14:38  millert
        !          15471:
        !          15472:        * logging.c: removed a bunch of unnecesary strncpy()'s and replaced
        !          15473:          with strcat()
        !          15474:
        !          15475: 1995-07-29 17:17  millert
        !          15476:
        !          15477:        * Makefile.in, version.h: ++version
        !          15478:
        !          15479: 1995-07-27 06:52  millert
        !          15480:
        !          15481:        * parse.yacc: fixed free() of an uninitialized pointer (yuck)
        !          15482:
        !          15483: 1995-07-26 22:00  millert
        !          15484:
        !          15485:        * testsudoers.c: added netgr_matches
        !          15486:
        !          15487: 1995-07-26 21:29  millert
        !          15488:
        !          15489:        * parse.c: cleaned up netgr_matches
        !          15490:
        !          15491: 1995-07-26 00:26  millert
        !          15492:
        !          15493:        * RUNSON: updated for 1.3.4
        !          15494:
        !          15495: 1995-07-24 21:51  millert
        !          15496:
        !          15497:        * Makefile.in: now installs sudoers.man -- really should clean this
        !          15498:          up though.
        !          15499:
        !          15500: 1995-07-24 21:18  millert
        !          15501:
        !          15502:        * Makefile.in: added sudoers.cat and sudoers.man
        !          15503:
        !          15504: 1995-07-24 21:15  millert
        !          15505:
        !          15506:        * sudo.man: pulled out stuff on the sudoers file format into a
        !          15507:          separate man page
        !          15508:
        !          15509: 1995-07-24 21:14  millert
        !          15510:
        !          15511:        * sudoers.man: Initial revision
        !          15512:
        !          15513: 1995-07-24 21:04  millert
        !          15514:
        !          15515:        * HISTORY: fixed up my email address
        !          15516:
        !          15517: 1995-07-24 20:03  millert
        !          15518:
        !          15519:        * configure.in: added checks for innetgr and getdomainname
        !          15520:
        !          15521: 1995-07-24 20:02  millert
        !          15522:
        !          15523:        * visudo.c: added dummy netgr_matches function
        !          15524:
        !          15525: 1995-07-24 20:01  millert
        !          15526:
        !          15527:        * parse.c: added  netgr_matches
        !          15528:
        !          15529: 1995-07-24 20:01  millert
        !          15530:
        !          15531:        * parse.lex, parse.yacc: added NETGROUP support
        !          15532:
        !          15533: 1995-07-24 20:01  millert
        !          15534:
        !          15535:        * config.h.in: added HAVE_INNETGR & HAVE_GETDOMAINNAME
        !          15536:
        !          15537: 1995-07-24 18:07  millert
        !          15538:
        !          15539:        * sudo.c: rewrote clean_env() that has rm_env() builtin
        !          15540:
        !          15541: 1995-07-23 19:58  millert
        !          15542:
        !          15543:        * check.c: now cast uid to long in sprintf
        !          15544:
        !          15545: 1995-07-23 19:58  millert
        !          15546:
        !          15547:        * OPTIONS: added _INSULTS suffix to HAL & GOONS end
        !          15548:
        !          15549: 1995-07-23 19:57  millert
        !          15550:
        !          15551:        * options.h: added _INSULTS suffix to HAL & GOONS
        !          15552:
        !          15553: 1995-07-23 19:35  millert
        !          15554:
        !          15555:        * ins_2001.h, ins_classic.h, ins_goons.h, insults.h: converted to
        !          15556:          new scheme of insult "unions" end
        !          15557:
        !          15558: 1995-07-23 17:48  millert
        !          15559:
        !          15560:        * sudo.c: now uses MAX_UID_T_LEN
        !          15561:
        !          15562: 1995-07-23 17:48  millert
        !          15563:
        !          15564:        * configure.in: added SUDO_UID_T_LEN !l
        !          15565:
        !          15566: 1995-07-23 17:48  millert
        !          15567:
        !          15568:        * config.h.in: added MAX_UID_T_LEN
        !          15569:
        !          15570: 1995-07-23 17:47  millert
        !          15571:
        !          15572:        * check.c: now use MAX_UID_T_LEN
        !          15573:
        !          15574: 1995-07-23 17:47  millert
        !          15575:
        !          15576:        * aclocal.m4: added check for max len of uid_t fixed sco vs. isc
        !          15577:          check
        !          15578:
        !          15579: 1995-07-19 19:05  millert
        !          15580:
        !          15581:        * configure.in: corrected version
        !          15582:
        !          15583: 1995-07-19 17:29  millert
        !          15584:
        !          15585:        * configure.in: added sco support
        !          15586:
        !          15587: 1995-07-19 17:29  millert
        !          15588:
        !          15589:        * aclocal.m4: hack to check for sco
        !          15590:
        !          15591: 1995-07-18 21:27  millert
        !          15592:
        !          15593:        * interfaces.c: removed  #include <net/route.h> since it was hosing
        !          15594:          some OS's
        !          15595:
        !          15596: 1995-07-18 13:35  millert
        !          15597:
        !          15598:        * find_path.c: fixed prreadlink() prototype
        !          15599:
        !          15600: 1995-07-17 23:54  millert
        !          15601:
        !          15602:        * check.c: added parens in #if's
        !          15603:
        !          15604: 1995-07-17 23:53  millert
        !          15605:
        !          15606:        * configure.in: added SPW_ prefix
        !          15607:
        !          15608: 1995-07-17 23:20  millert
        !          15609:
        !          15610:        * sudo.h: moved SPW_* to config.h.in
        !          15611:
        !          15612: 1995-07-17 23:19  millert
        !          15613:
        !          15614:        * sudo.c: added a set of parens
        !          15615:
        !          15616: 1995-07-17 23:19  millert
        !          15617:
        !          15618:        * config.h.in: added SPW_*
        !          15619:
        !          15620: 1995-07-17 22:50  millert
        !          15621:
        !          15622:        * sudo.h: added SPW_* reordered error codes
        !          15623:
        !          15624: 1995-07-17 22:49  millert
        !          15625:
        !          15626:        * check.c: moved SPW_* to sudo.h
        !          15627:
        !          15628: 1995-07-17 14:29  millert
        !          15629:
        !          15630:        * logging.c: GLOBAL_NO_AUTH_ENT -> GLOBAL_NO_SPW_ENT
        !          15631:
        !          15632: 1995-07-17 14:29  millert
        !          15633:
        !          15634:        * configure.in: AUTH -> SECUREWARE
        !          15635:
        !          15636: 1995-07-17 14:29  millert
        !          15637:
        !          15638:        * check.c, sudo.c: SPW_AUTH -> SPW_SECUREWARE
        !          15639:
        !          15640: 1995-07-17 00:22  millert
        !          15641:
        !          15642:        * check.c: now uses SHADOW_TYPE to make shadow pw support more
        !          15643:          readable and modular.  It's a start...
        !          15644:
        !          15645: 1995-07-17 00:21  millert
        !          15646:
        !          15647:        * configure.in: added autodetection of shadow passwords
        !          15648:
        !          15649: 1995-07-17 00:20  millert
        !          15650:
        !          15651:        * sudo.c: now uses SHADOW_TYPE define
        !          15652:
        !          15653: 1995-07-17 00:19  millert
        !          15654:
        !          15655:        * config.h.in: added SHADOW_TYPE which replaces SUNOS4 & __svr4__
        !          15656:          defines
        !          15657:
        !          15658: 1995-07-17 00:19  millert
        !          15659:
        !          15660:        * aclocal.m4: added SUDO_CHECK_SHADOW
        !          15661:
        !          15662: 1995-07-12 17:09  millert
        !          15663:
        !          15664:        * configure.in: define SVR4 for ISC define BROKEN_SYSLOG for hpux
        !          15665:          took out test for memmove() since we dno longer use it...
        !          15666:
        !          15667: 1995-07-12 17:08  millert
        !          15668:
        !          15669:        * CHANGES: updated
        !          15670:
        !          15671: 1995-07-12 17:05  millert
        !          15672:
        !          15673:        * logging.c: added BROKEN_SYSLOG support
        !          15674:
        !          15675: 1995-07-12 17:05  millert
        !          15676:
        !          15677:        * config.h.in: added BROKEN_SYSLOG
        !          15678:
        !          15679: 1995-07-12 17:04  millert
        !          15680:
        !          15681:        * check.c: now only bitch it timestamp > time_now + 2 * timeout to
        !          15682:          allow for a machine udpating its time from a server
        !          15683:
        !          15684: 1995-07-12 17:04  millert
        !          15685:
        !          15686:        * sudo.man: added 2 security notes updated Nieusma's email addr
        !          15687:
        !          15688: 1995-07-12 14:18  millert
        !          15689:
        !          15690:        * lsearch.c: changed a memmove() to memcpy() since we don't have to
        !          15691:          worry about overlapping segments.
        !          15692:
        !          15693: 1995-07-11 15:41  millert
        !          15694:
        !          15695:        * interfaces.c: cleanup up the loop when interfaces are groped in
        !          15696:          so that it is readable
        !          15697:
        !          15698: 1995-07-11 14:52  millert
        !          15699:
        !          15700:        * Makefile.in, version.h: ++version
        !          15701:
        !          15702: 1995-07-09 18:17  millert
        !          15703:
        !          15704:        * CHANGES: annotated 124-126
        !          15705:
        !          15706: 1995-07-07 16:06  millert
        !          15707:
        !          15708:        * check.c: fixed permissions check on /tmp/.odus
        !          15709:
        !          15710: 1995-07-06 19:35  millert
        !          15711:
        !          15712:        * check.c: fixed some comments
        !          15713:
        !          15714: 1995-07-06 14:49  millert
        !          15715:
        !          15716:        * check.c: now checks owner & mode of timedir also checks for bogus
        !          15717:          dates on timestamp file
        !          15718:
        !          15719: 1995-07-06 14:49  millert
        !          15720:
        !          15721:        * OPTIONS: updated TIMEOUT info
        !          15722:
        !          15723: 1995-07-06 14:48  millert
        !          15724:
        !          15725:        * logging.c, sudo.h: added BAD_STAMPDIR and BAD_STAMPFILE
        !          15726:
        !          15727: 1995-07-06 14:47  millert
        !          15728:
        !          15729:        * compat.h: added definition of S_IRWXU
        !          15730:
        !          15731: 1995-07-06 14:47  millert
        !          15732:
        !          15733:        * CHANGES: updated
        !          15734:
        !          15735: 1995-07-03 14:16  millert
        !          15736:
        !          15737:        * interfaces.c: added #ifdef to make it compile on strange arches
        !          15738:
        !          15739: 1995-07-02 18:13  millert
        !          15740:
        !          15741:        * aclocal.m4: fixed check for fulkl void impl.
        !          15742:
        !          15743: 1995-07-02 09:56  millert
        !          15744:
        !          15745:        * check.c: added mssing "static"
        !          15746:
        !          15747: 1995-07-01 20:41  millert
        !          15748:
        !          15749:        * insults.h: replaced #elif with #else #if constructs for ancient C
        !          15750:          compilers
        !          15751:
        !          15752: 1995-07-01 20:18  millert
        !          15753:
        !          15754:        * INSTALL: updated irix c2 & kerb5 info
        !          15755:
        !          15756: 1995-07-01 20:15  millert
        !          15757:
        !          15758:        * configure.in: added shadow pw support for irix
        !          15759:
        !          15760: 1995-07-01 16:07  millert
        !          15761:
        !          15762:        * CHANGES: last changes for sudo 1.3.3
        !          15763:
        !          15764: 1995-07-01 16:07  millert
        !          15765:
        !          15766:        * TODO, BUGS: updated
        !          15767:
        !          15768: 1995-07-01 16:04  millert
        !          15769:
        !          15770:        * configure.in: now calls SUDO_SOCK_SA_LEN
        !          15771:
        !          15772: 1995-07-01 16:04  millert
        !          15773:
        !          15774:        * config.h.in: added HAVE_SA_LEN
        !          15775:
        !          15776: 1995-07-01 16:04  millert
        !          15777:
        !          15778:        * aclocal.m4: added SUDO_SOCK_SA_LEN
        !          15779:
        !          15780: 1995-07-01 15:49  millert
        !          15781:
        !          15782:        * interfaces.c: now works with ip implementations that use sa_len
        !          15783:          in sockaddr
        !          15784:
        !          15785: 1995-07-01 14:26  millert
        !          15786:
        !          15787:        * INSTALL: added note about buggy AIX compiler
        !          15788:
        !          15789: 1995-07-01 14:24  millert
        !          15790:
        !          15791:        * interfaces.c: now include sys/time.h for AIX
        !          15792:
        !          15793: 1995-06-27 22:35  millert
        !          15794:
        !          15795:        * Makefile.in: getcwd -> getwd
        !          15796:
        !          15797: 1995-06-27 21:28  millert
        !          15798:
        !          15799:        * interfaces.c: now works for ISC and others.  yay.
        !          15800:
        !          15801: 1995-06-26 14:24  millert
        !          15802:
        !          15803:        * Makefile.in, version.h: version++
        !          15804:
        !          15805: 1995-06-22 20:26  millert
        !          15806:
        !          15807:        * aclocal.m4: fixed test for full void impl
        !          15808:
        !          15809: 1995-06-22 20:25  millert
        !          15810:
        !          15811:        * sudo.c: now check to see that st_dev is non-zero before assuming
        !          15812:          that we are being spoofed
        !          15813:
        !          15814: 1995-06-20 16:56  millert
        !          15815:
        !          15816:        * aclocal.m4, configure.in: SUDO_FUNC_UTIME_NULL ->
        !          15817:          AC_FUNC_UTIME_NULL
        !          15818:
        !          15819: 1995-06-19 16:32  millert
        !          15820:
        !          15821:        * aclocal.m4: fixed include file order for SUDO_FUNC_UTIME_POSIX
        !          15822:
        !          15823: 1995-06-19 16:10  millert
        !          15824:
        !          15825:        * logging.c: added cast for ttyname()
        !          15826:
        !          15827: 1995-06-19 15:23  millert
        !          15828:
        !          15829:        * configure.in: fixed typo
        !          15830:
        !          15831: 1995-06-19 15:19  millert
        !          15832:
        !          15833:        * check.c: now deal correctly with all known variation of utime()
        !          15834:          -- yippe
        !          15835:
        !          15836: 1995-06-19 15:19  millert
        !          15837:
        !          15838:        * configure.in: added SUDO_FUNC_UTIME_POSIX
        !          15839:
        !          15840: 1995-06-19 15:19  millert
        !          15841:
        !          15842:        * aclocal.m4: added SUDO_FUNC_UTIME_NULL and SUDO_FUNC_UTIME_POSIX
        !          15843:
        !          15844: 1995-06-19 15:14  millert
        !          15845:
        !          15846:        * config.h.in: added HAVE_UTIME_POSIX
        !          15847:
        !          15848: 1995-06-19 13:38  millert
        !          15849:
        !          15850:        * check.c: fixed a typo
        !          15851:
        !          15852: 1995-06-19 13:29  millert
        !          15853:
        !          15854:        * check.c: no longer assume !HAVE_UTIME_NULL means old BSD utime()
        !          15855:
        !          15856: 1995-06-19 13:20  millert
        !          15857:
        !          15858:        * check.c: fixed fascist C compiler warning
        !          15859:
        !          15860: 1995-06-18 23:14  millert
        !          15861:
        !          15862:        * interfaces.c: now set strioctl.ic_timout in STRSET() now
        !          15863:          initialize num_interfaces to 0 (just to be anal)
        !          15864:
        !          15865: 1995-06-18 18:06  millert
        !          15866:
        !          15867:        * sudo.h: increaed MAXLOGLEN by MAXPATHLEN to account for ttyname
        !          15868:
        !          15869: 1995-06-18 18:05  millert
        !          15870:
        !          15871:        * logging.c: added tty logging
        !          15872:
        !          15873: 1995-06-18 16:04  millert
        !          15874:
        !          15875:        * interfaces.c: reworked the ISC code
        !          15876:
        !          15877: 1995-06-18 15:27  millert
        !          15878:
        !          15879:        * Makefile.in, version.h: updated version
        !          15880:
        !          15881: 1995-06-18 15:24  millert
        !          15882:
        !          15883:        * check.c: now expect old-style utime(3) if utime() can't take NULL
        !          15884:          as an arg
        !          15885:
        !          15886: 1995-06-18 15:08  millert
        !          15887:
        !          15888:        * configure.in: added check for utime.h
        !          15889:
        !          15890: 1995-06-18 15:08  millert
        !          15891:
        !          15892:        * config.h.in: added HAVE_UTIME_H
        !          15893:
        !          15894: 1995-06-18 14:48  millert
        !          15895:
        !          15896:        * Makefile.in: added CPPFLAGS STATIC_FLAGS -> LDFLAGS
        !          15897:
        !          15898: 1995-06-18 13:58  millert
        !          15899:
        !          15900:        * configure.in: now search for kerb libs and includes
        !          15901:
        !          15902: 1995-06-18 13:03  millert
        !          15903:
        !          15904:        * check.c: added support for utime(2)'s that can't take a NULL
        !          15905:          parameter
        !          15906:
        !          15907: 1995-06-18 13:03  millert
        !          15908:
        !          15909:        * utime.c: moved HAVE_UTIME_NULL stuff to update_timestamp() where
        !          15910:          t belongs
        !          15911:
        !          15912: 1995-06-17 20:46  millert
        !          15913:
        !          15914:        * configure.in: added utime(s) stuff
        !          15915:
        !          15916: 1995-06-17 20:46  millert
        !          15917:
        !          15918:        * check.c: now use utime()
        !          15919:
        !          15920: 1995-06-17 20:46  millert
        !          15921:
        !          15922:        * config.h.in: added HAVE_UTIME and HAVE_UTIME_NULL
        !          15923:
        !          15924: 1995-06-17 19:12  millert
        !          15925:
        !          15926:        * utime.c: now use HAVE_UTIME_NULL
        !          15927:
        !          15928: 1995-06-17 19:02  millert
        !          15929:
        !          15930:        * utime.c, emul/utime.h: Initial revision
        !          15931:
        !          15932: 1995-06-17 18:24  millert
        !          15933:
        !          15934:        * check.c: need to setuid(0) to make kerb4 stuff work.
        !          15935:
        !          15936: 1995-06-17 18:14  millert
        !          15937:
        !          15938:        * tgetpass.c: no more special case for kerberos
        !          15939:
        !          15940: 1995-06-17 18:13  millert
        !          15941:
        !          15942:        * config.h.in: took out setreuid and setresuid stuff added kerb5
        !          15943:          stuff (use kerb4 emulation)
        !          15944:
        !          15945: 1995-06-17 18:13  millert
        !          15946:
        !          15947:        * compat.h: no longer need setreuid() emulation now set _PASSWD_LEN
        !          15948:          to 128 if kerberos
        !          15949:
        !          15950: 1995-06-17 18:12  millert
        !          15951:
        !          15952:        * check.c: now use private ticket file for kerberos support to
        !          15953:          avoid trouncing on system one
        !          15954:
        !          15955: 1995-06-15 00:48  millert
        !          15956:
        !          15957:        * sudo.h: added SPOOF_ATTEMPT & cmnd_st
        !          15958:
        !          15959: 1995-06-15 00:47  millert
        !          15960:
        !          15961:        * sudo.c: added anti-spoofing support
        !          15962:
        !          15963: 1995-06-15 00:47  millert
        !          15964:
        !          15965:        * parse.c: now use global cmnd_st
        !          15966:
        !          15967: 1995-06-15 00:47  millert
        !          15968:
        !          15969:        * logging.c: added SPOOF_ATTEMPT suypport
        !          15970:
        !          15971: 1995-06-14 23:41  millert
        !          15972:
        !          15973:        * testsudoers.c, visudo.c: added void casts where appropriate
        !          15974:
        !          15975: 1995-06-14 23:40  millert
        !          15976:
        !          15977:        * parse.yacc: fixed up spacing and added void casts where
        !          15978:          appropriate
        !          15979:
        !          15980: 1995-06-14 23:27  millert
        !          15981:
        !          15982:        * sudo.c: fixed problem with "-p prompt" but no args
        !          15983:
        !          15984: 1995-06-14 04:43  millert
        !          15985:
        !          15986:        * sudo.man: added BUGS and annotated -l description
        !          15987:
        !          15988: 1995-06-14 04:43  millert
        !          15989:
        !          15990:        * sudo.h: validate() now takes a flag
        !          15991:
        !          15992: 1995-06-14 04:43  millert
        !          15993:
        !          15994:        * sudo.c: validate() now takes a flag added -l
        !          15995:
        !          15996: 1995-06-14 04:42  millert
        !          15997:
        !          15998:        * parse.yacc: added support for -l
        !          15999:
        !          16000: 1995-06-14 04:41  millert
        !          16001:
        !          16002:        * parse.c: validate() now takes a flag that says whether or not to
        !          16003:          check the command
        !          16004:
        !          16005: 1995-06-07 21:36  millert
        !          16006:
        !          16007:        * logging.c: now deals with Argv == 1
        !          16008:
        !          16009: 1995-06-07 21:34  millert
        !          16010:
        !          16011:        * sudo.man: added -p option
        !          16012:
        !          16013: 1995-06-07 21:27  millert
        !          16014:
        !          16015:        * sudo.c: added prompt support reworked parse_args()
        !          16016:
        !          16017: 1995-06-07 20:49  millert
        !          16018:
        !          16019:        * sudo.h: added prompt
        !          16020:
        !          16021: 1995-06-07 20:49  millert
        !          16022:
        !          16023:        * options.h: added PASSPROMPT
        !          16024:
        !          16025: 1995-06-07 20:48  millert
        !          16026:
        !          16027:        * check.c: now use BUFSIZ as length of kerb password added kpass so
        !          16028:          pass is always a char * now use prompt global when asking for a
        !          16029:          password
        !          16030:
        !          16031: 1995-06-07 20:47  millert
        !          16032:
        !          16033:        * tgetpass.c: now use BUFSIZ as _PASSWD_LEN if using kerberos
        !          16034:
        !          16035: 1995-06-07 20:43  millert
        !          16036:
        !          16037:        * OPTIONS: added PASSPROMPT
        !          16038:
        !          16039: 1995-06-07 01:44  millert
        !          16040:
        !          16041:        * configure.in: only look for -lufc or -lcrypt if crypt() not in
        !          16042:          libc
        !          16043:
        !          16044: 1995-06-07 01:43  millert
        !          16045:
        !          16046:        * check.c: don't exit on kerb error, just warn if k_errno ==
        !          16047:          KDC_PR_UNKNOWN (unknown user) silently fail
        !          16048:
        !          16049: 1995-06-06 22:44  millert
        !          16050:
        !          16051:        * INSTALL: added kerb4 note
        !          16052:
        !          16053: 1995-06-06 22:43  millert
        !          16054:
        !          16055:        * tgetpass.c: HAVE_KERBEROS -> HAVE_KERB4
        !          16056:
        !          16057: 1995-06-06 22:41  millert
        !          16058:
        !          16059:        * check.c: removed debugging printf
        !          16060:
        !          16061: 1995-06-06 22:33  millert
        !          16062:
        !          16063:        * configure.in: KERBEROS -> KERB4 added checks for setreuid &
        !          16064:          setresuid
        !          16065:
        !          16066: 1995-06-06 22:32  millert
        !          16067:
        !          16068:        * config.h.in: HAVE_KERBEROS -> HAVE_KERB4 added HAVE_SETREUID and
        !          16069:          HAVE_SETRESUID
        !          16070:
        !          16071: 1995-06-06 22:32  millert
        !          16072:
        !          16073:        * compat.h: added deif of UID_NO_CHANGE & GID_NO_CHANGE added
        !          16074:          setreuid emulation with setresuid if applic
        !          16075:
        !          16076: 1995-06-06 22:31  millert
        !          16077:
        !          16078:        * check.c: HAVE_KERBEROS -> HAVE_KERB4 now only do the stupid
        !          16079:          chown() hack if no setreuid() or a broken one
        !          16080:
        !          16081: 1995-06-05 23:44  millert
        !          16082:
        !          16083:        * config.h.in: added HAVE_KERBEROS
        !          16084:
        !          16085: 1995-06-05 23:43  millert
        !          16086:
        !          16087:        * tgetpass.c: added KERBEROS support (long passwords)
        !          16088:
        !          16089: 1995-06-05 23:42  millert
        !          16090:
        !          16091:        * check.c, configure.in: added kerberos support
        !          16092:
        !          16093: 1995-06-03 19:36  millert
        !          16094:
        !          16095:        * sudo.h: added MODE_BACKGROUND
        !          16096:
        !          16097: 1995-06-03 19:36  millert
        !          16098:
        !          16099:        * sudo.man: escaped dashes added -b option
        !          16100:
        !          16101: 1995-06-03 19:34  millert
        !          16102:
        !          16103:        * sudo.c: added -b option
        !          16104:
        !          16105: 1995-06-03 18:52  millert
        !          16106:
        !          16107:        * check.c: added crypt() for osf/1 3.x enhanced secuiry
        !          16108:
        !          16109: 1995-06-03 18:18  millert
        !          16110:
        !          16111:        * configure.in: now check for -lcrypt
        !          16112:
        !          16113: 1995-06-03 18:00  millert
        !          16114:
        !          16115:        * interfaces.c: added ENXIO like EADDRNOTAVAIL
        !          16116:
        !          16117: 1995-05-07 23:14  millert
        !          16118:
        !          16119:        * configure.in: now emulate getwd(), not getcwd()
        !          16120:
        !          16121: 1995-05-07 23:13  millert
        !          16122:
        !          16123:        * sudo.c: getcwd() -> getwd()
        !          16124:
        !          16125: 1995-05-07 23:12  millert
        !          16126:
        !          16127:        * getwd.c: getcwd -> getwd
        !          16128:
        !          16129: 1995-05-02 01:34  millert
        !          16130:
        !          16131:        * ins_2001.h, ins_classic.h, ins_goons.h: Initial revision
        !          16132:
        !          16133: 1995-05-02 01:34  millert
        !          16134:
        !          16135:        * insults.h: broke out insults into separate include files
        !          16136:
        !          16137: 1995-05-02 01:32  millert
        !          16138:
        !          16139:        * options.h, OPTIONS: added GOONS
        !          16140:
        !          16141: 1995-05-02 01:32  millert
        !          16142:
        !          16143:        * Makefile.in: added ins_2001.h ins_classic.h ins_goons.h
        !          16144:
        !          16145: 1995-05-01 23:34  millert
        !          16146:
        !          16147:        * Makefile.in, version.h: ++version
        !          16148:
        !          16149: 1995-05-01 23:34  millert
        !          16150:
        !          16151:        * visudo.c: moved signal handler setup to setup_signals()
        !          16152:
        !          16153: 1995-05-01 23:33  millert
        !          16154:
        !          16155:        * sudo.h: added load_interfaces()
        !          16156:
        !          16157: 1995-05-01 23:33  millert
        !          16158:
        !          16159:        * sudo.c: moved load_interfaces to interfaces.c
        !          16160:
        !          16161: 1995-05-01 23:33  millert
        !          16162:
        !          16163:        * parse.yacc: added clearaliases
        !          16164:
        !          16165: 1995-05-01 23:33  millert
        !          16166:
        !          16167:        * OPTIONS, options.h: added FAST_MATCH
        !          16168:
        !          16169: 1995-05-01 23:32  millert
        !          16170:
        !          16171:        * parse.lex: now uses clearaliases variable
        !          16172:
        !          16173: 1995-05-01 23:31  millert
        !          16174:
        !          16175:        * interfaces.c: Initial revision
        !          16176:
        !          16177: 1995-05-01 23:31  millert
        !          16178:
        !          16179:        * Makefile.in: added interfaces.[co]
        !          16180:
        !          16181: 1995-05-01 23:30  millert
        !          16182:
        !          16183:        * testsudoers.c: now uses ip addrs and netmasks via
        !          16184:          load_interfaces()
        !          16185:
        !          16186: 1995-05-01 22:47  millert
        !          16187:
        !          16188:        * sudo.c: now remove IFS instead of setting to "sane" value
        !          16189:
        !          16190: 1995-05-01 16:30  millert
        !          16191:
        !          16192:        * parse.c: added FAST_MATCH
        !          16193:
        !          16194: 1995-04-29 20:19  millert
        !          16195:
        !          16196:        * Makefile.in: sudo_goodpath.c-> goodpath.c
        !          16197:
        !          16198: 1995-04-29 20:15  millert
        !          16199:
        !          16200:        * sudo.c: added Andy's new ISC changes
        !          16201:
        !          16202: 1995-04-14 14:06  millert
        !          16203:
        !          16204:        * OPTIONS: added a sentence to SECURE_PATH info
        !          16205:
        !          16206: 1995-04-14 13:57  millert
        !          16207:
        !          16208:        * BUGS: added one
        !          16209:
        !          16210: 1995-04-14 13:54  millert
        !          16211:
        !          16212:        * RUNSON, CHANGES: updated
        !          16213:
        !          16214: 1995-04-13 17:04  millert
        !          16215:
        !          16216:        * RUNSON: updated for beta3
        !          16217:
        !          16218: 1995-04-13 14:32  millert
        !          16219:
        !          16220:        * Makefile.in, version.h: ++version
        !          16221:
        !          16222: 1995-04-13 13:56  millert
        !          16223:
        !          16224:        * aclocal.m4: sendmail is now looked for in /usr/ucblib
        !          16225:
        !          16226: 1995-04-13 13:54  millert
        !          16227:
        !          16228:        * sudo.c: fixed indentation
        !          16229:
        !          16230: 1995-04-13 13:35  millert
        !          16231:
        !          16232:        * aclocal.m4: fixed a typo
        !          16233:
        !          16234: 1995-04-13 13:19  millert
        !          16235:
        !          16236:        * sudo.c: updated ISC mods
        !          16237:
        !          16238: 1995-04-13 13:19  millert
        !          16239:
        !          16240:        * configure.in: added unixware case
        !          16241:
        !          16242: 1995-04-13 13:19  millert
        !          16243:
        !          16244:        * check.c: user_is_exempt is no longer hidden
        !          16245:
        !          16246: 1995-04-13 13:19  millert
        !          16247:
        !          16248:        * RUNSON: updated
        !          16249:
        !          16250: 1995-04-13 13:19  millert
        !          16251:
        !          16252:        * aclocal.m4: isc and riscos changes
        !          16253:
        !          16254: 1995-04-13 13:18  millert
        !          16255:
        !          16256:        * OPTIONS: added NOTE about new interaction of EXEMPTGROUP and
        !          16257:          SECURE_PATH
        !          16258:
        !          16259: 1995-04-13 13:18  millert
        !          16260:
        !          16261:        * Makefile.in: fixed a typo and added testsudoers stuff
        !          16262:
        !          16263: 1995-04-13 12:34  millert
        !          16264:
        !          16265:        * testsudoers.c: Initial revision
        !          16266:
        !          16267: 1995-04-12 19:31  millert
        !          16268:
        !          16269:        * parse.yacc: applied fixed patch from Chris
        !          16270:
        !          16271: 1995-04-11 14:30  millert
        !          16272:
        !          16273:        * Makefile.in: fixed a typo
        !          16274:
        !          16275: 1995-04-11 14:14  millert
        !          16276:
        !          16277:        * parse.yacc: added a set of braces for bison
        !          16278:
        !          16279: 1995-04-11 14:01  millert
        !          16280:
        !          16281:        * parse.yacc: merged in Chris' changes to dekludge the parser.
        !          16282:
        !          16283: 1995-04-11 00:38  millert
        !          16284:
        !          16285:        * logging.c: send_mail() was calling find_path() which is wrong
        !          16286:          since find_path() stores cmnd in a static var.  Anyhow, it
        !          16287:          doesn't make much sense since MAILER should always be fully
        !          16288:          qualified
        !          16289:
        !          16290: 1995-04-10 19:51  millert
        !          16291:
        !          16292:        * sample.sudoers: added User_Alias stuff
        !          16293:
        !          16294: 1995-04-10 19:50  millert
        !          16295:
        !          16296:        * aclocal.m4: SUDO_NEXT now looks for
        !          16297:          /usr/lib/NextStep/software_version
        !          16298:
        !          16299: 1995-04-10 19:50  millert
        !          16300:
        !          16301:        * RUNSON: added DEC UNIX 3.0 w/ gcc
        !          16302:
        !          16303: 1995-04-10 19:49  millert
        !          16304:
        !          16305:        * visudo.c: Exit was being used in places where exit should be used
        !          16306:
        !          16307: 1995-04-10 19:44  millert
        !          16308:
        !          16309:        * sudoers: added "User alias specification"
        !          16310:
        !          16311: 1995-04-10 18:04  millert
        !          16312:
        !          16313:        * parse.yacc: fixed probs caused by making nslots and naliases a
        !          16314:          size_t
        !          16315:
        !          16316: 1995-04-10 15:09  millert
        !          16317:
        !          16318:        * RUNSON: added KSR, upped rev to 1.3.1b2
        !          16319:
        !          16320: 1995-04-10 15:07  millert
        !          16321:
        !          16322:        * logging.c, parse.yacc: 1024 -> BUFSIZ
        !          16323:
        !          16324: 1995-04-10 15:05  millert
        !          16325:
        !          16326:        * parse.yacc: void * -> VOID * naliases and nslots are now size_t
        !          16327:          to appease lsearch on 64-bit machines
        !          16328:
        !          16329: 1995-04-09 19:30  millert
        !          16330:
        !          16331:        * TODO: did a bunch of things and added a bunch :-)
        !          16332:
        !          16333: 1995-04-09 19:30  millert
        !          16334:
        !          16335:        * PORTING: updated
        !          16336:
        !          16337: 1995-04-09 19:24  millert
        !          16338:
        !          16339:        * visudo.man: closer to BSD manpage style
        !          16340:
        !          16341: 1995-04-09 19:15  millert
        !          16342:
        !          16343:        * sudo.man: closer to standard BSD man format
        !          16344:
        !          16345: 1995-04-09 18:58  millert
        !          16346:
        !          16347:        * compat.h, config.h.in, insults.h, options.h, pathnames.h.in,
        !          16348:          sudo.h, version.h, emul/search.h: added RCS id
        !          16349:
        !          16350: 1995-04-09 17:35  millert
        !          16351:
        !          16352:        * sudo.h: removed crufty #defines that are no longer used
        !          16353:
        !          16354: 1995-04-09 17:13  millert
        !          16355:
        !          16356:        * BUGS: fixed a bug
        !          16357:
        !          16358: 1995-04-09 17:12  millert
        !          16359:
        !          16360:        * sudo.man: updated based on sudo changes
        !          16361:
        !          16362: 1995-04-09 17:11  millert
        !          16363:
        !          16364:        * parse.yacc: now allow ALL keyword in User_Aliases now allow ALL
        !          16365:          keyword as well as a NAME or ALIAS
        !          16366:
        !          16367: 1995-04-09 17:11  millert
        !          16368:
        !          16369:        * CHANGES: updated
        !          16370:
        !          16371: 1995-04-09 17:04  millert
        !          16372:
        !          16373:        * sudo.c: now sets SUDO_COMMAND and SUDO_GID envariables.
        !          16374:
        !          16375: 1995-04-09 15:24  millert
        !          16376:
        !          16377:        * aclocal.m4: fixed bug with full void impl check
        !          16378:
        !          16379: 1995-04-08 23:11  millert
        !          16380:
        !          16381:        * parse.yacc: fixed User_Alias supoprt
        !          16382:
        !          16383: 1995-04-08 22:27  millert
        !          16384:
        !          16385:        * parse.yacc: added stubs for User_Alias support
        !          16386:
        !          16387: 1995-04-08 22:27  millert
        !          16388:
        !          16389:        * sudo.c: now sets removes # bogus interfaces from num_interfaces
        !          16390:
        !          16391: 1995-04-08 22:26  millert
        !          16392:
        !          16393:        * parse.lex: added User_Alias support
        !          16394:
        !          16395: 1995-04-07 21:10  millert
        !          16396:
        !          16397:        * Makefile.in: removed extraneous TODO
        !          16398:
        !          16399: 1995-04-07 19:48  millert
        !          16400:
        !          16401:        * visudo.c: ntwk_matches -> addr_matches
        !          16402:
        !          16403: 1995-04-07 15:38  millert
        !          16404:
        !          16405:        * parse.yacc: ntwk_matches -> addr_matches
        !          16406:
        !          16407: 1995-04-07 15:37  millert
        !          16408:
        !          16409:        * parse.c: ntwk_matches -> addr_matches now use inet_addr() not
        !          16410:          inet_network() (which expects octet boundaries) fixes for OSF
        !          16411:          (sizeof(int) != sizeof(long))
        !          16412:
        !          16413: 1995-04-07 15:08  millert
        !          16414:
        !          16415:        * sudo.c: took out debugging info
        !          16416:
        !          16417: 1995-04-06 23:45  millert
        !          16418:
        !          16419:        * aclocal.m4: OS was being set to unknown before non-uname based
        !          16420:          host checks.  This caused no checks to happen since $OS was not
        !          16421:          zero-length.
        !          16422:
        !          16423: 1995-04-06 23:30  millert
        !          16424:
        !          16425:        * sudo.c: fixed loading of interfaces struct still has debugging
        !          16426:          info in though
        !          16427:
        !          16428: 1995-04-06 22:23  millert
        !          16429:
        !          16430:        * parse.c: fixed typo
        !          16431:
        !          16432: 1995-04-06 16:17  millert
        !          16433:
        !          16434:        * Makefile.in: ++version
        !          16435:
        !          16436: 1995-04-06 16:16  millert
        !          16437:
        !          16438:        * version.h: ++
        !          16439:
        !          16440: 1995-04-06 16:16  millert
        !          16441:
        !          16442:        * visudo.c: removed extraneous extern decl of "top
        !          16443:
        !          16444: 1995-04-06 16:14  millert
        !          16445:
        !          16446:        * visudo.c: now zeros "top"
        !          16447:
        !          16448: 1995-04-06 16:13  millert
        !          16449:
        !          16450:        * parse.yacc: removed parser_cleanup (no need for it now)
        !          16451:
        !          16452: 1995-04-06 16:13  millert
        !          16453:
        !          16454:        * parse.lex: now calls reset_aliases() directly
        !          16455:
        !          16456: 1995-04-04 18:21  millert
        !          16457:
        !          16458:        * OPTIONS: added a sentence to SECURE_PATH description
        !          16459:
        !          16460: 1995-04-04 18:17  millert
        !          16461:
        !          16462:        * parse.c: fixed my stupid bug where I used NAMLEN on something I
        !          16463:          wanted to just get the name from.  argh.
        !          16464:
        !          16465: 1995-04-03 16:58  millert
        !          16466:
        !          16467:        * lsearch.c: fixed argument order of memmove() that i hosed when
        !          16468:          converting from bcopy().  arghh.
        !          16469:
        !          16470: 1995-04-03 15:33  millert
        !          16471:
        !          16472:        * Makefile.in: finally fixed DISTFILES line
        !          16473:
        !          16474: 1995-04-03 15:21  millert
        !          16475:
        !          16476:        * Makefile.in: tabs -> spaces
        !          16477:
        !          16478: 1995-04-03 15:15  millert
        !          16479:
        !          16480:        * Makefile.in: added missing files to DISTFILES
        !          16481:
        !          16482: 1995-04-03 14:50  millert
        !          16483:
        !          16484:        * Makefile.in: SUPPORTED -> RUNSON
        !          16485:
        !          16486: 1995-04-01 03:12  millert
        !          16487:
        !          16488:        * TODO: updated
        !          16489:
        !          16490: 1995-04-01 01:54  millert
        !          16491:
        !          16492:        * RUNSON: updated for pl5b1 release
        !          16493:
        !          16494: 1995-04-01 01:53  millert
        !          16495:
        !          16496:        * BUGS, TODO: updated
        !          16497:
        !          16498: 1995-04-01 01:52  millert
        !          16499:
        !          16500:        * check.c: fixed bug where if you hit return at first sudo prompt
        !          16501:          it would still log as a failure
        !          16502:
        !          16503: 1995-04-01 01:29  millert
        !          16504:
        !          16505:        * CHANGES: updated
        !          16506:
        !          16507: 1995-04-01 01:25  millert
        !          16508:
        !          16509:        * aclocal.m4: better test for bogus void * implementation
        !          16510:
        !          16511: 1995-03-31 20:33  millert
        !          16512:
        !          16513:        * logging.c: added PASSWORDS_NOT_CORRECT
        !          16514:
        !          16515: 1995-03-31 20:32  millert
        !          16516:
        !          16517:        * check.c: added PASSWORDS_NOT_CORRECT stuff]
        !          16518:
        !          16519: 1995-03-31 20:30  millert
        !          16520:
        !          16521:        * sudo.h: added PASSWORDS_NOT_CORRECT
        !          16522:
        !          16523: 1995-03-31 19:16  millert
        !          16524:
        !          16525:        * tgetpass.c: moved pathnames.h
        !          16526:
        !          16527: 1995-03-31 19:16  millert
        !          16528:
        !          16529:        * sudo.c: removed some unused vars and fixed up uid2str
        !          16530:
        !          16531: 1995-03-31 19:15  millert
        !          16532:
        !          16533:        * putenv.c: moved compat.h
        !          16534:
        !          16535: 1995-03-31 19:14  millert
        !          16536:
        !          16537:        * getcwd.c, getwd.c: added pathnames.h
        !          16538:
        !          16539: 1995-03-31 18:18  millert
        !          16540:
        !          16541:        * parse.yacc: fixed a typo I introduced in the last checkin :-(
        !          16542:
        !          16543: 1995-03-31 18:11  millert
        !          16544:
        !          16545:        * parse.lex: can't have #ifdef's where N is defined so just do this
        !          16546:          the broken way for AIX
        !          16547:
        !          16548: 1995-03-31 18:08  millert
        !          16549:
        !          16550:        * parse.yacc: better hack from Chris (but still a hack)
        !          16551:
        !          16552: 1995-03-31 18:05  millert
        !          16553:
        !          16554:        * parse.lex: stupid hack for broken aix lex
        !          16555:
        !          16556: 1995-03-31 17:47  millert
        !          16557:
        !          16558:        * tgetpass.c: now includes compat.h 
        !          16559:
        !          16560: 1995-03-31 17:27  millert
        !          16561:
        !          16562:        * visudo.c: now includes fcntl.h
        !          16563:
        !          16564: 1995-03-31 17:27  millert
        !          16565:
        !          16566:        * compat.h: added FD_SET and FD_ZERO for 4.2BSD
        !          16567:
        !          16568: 1995-03-31 16:12  millert
        !          16569:
        !          16570:        * parse.yacc: dirty hack to fix parser bug.  i don't really like
        !          16571:          this but it works for now...
        !          16572:
        !          16573: 1995-03-31 16:12  millert
        !          16574:
        !          16575:        * sudo.c: uid2str is now static like the prototype says
        !          16576:
        !          16577: 1995-03-29 23:48  millert
        !          16578:
        !          16579:        * RUNSON: Initial revision
        !          16580:
        !          16581: 1995-03-29 23:47  millert
        !          16582:
        !          16583:        * TODO, CHANGES, SUPPORTED, TROUBLESHOOTING: updated
        !          16584:
        !          16585: 1995-03-29 23:46  millert
        !          16586:
        !          16587:        * sudo.c: check_sudoers now returns an error code and sudo calls
        !          16588:          inform_user and log_error based on the return value.
        !          16589:
        !          16590: 1995-03-29 23:45  millert
        !          16591:
        !          16592:        * logging.c, sudo.h: added entries for new errors
        !          16593:
        !          16594: 1995-03-29 23:03  millert
        !          16595:
        !          16596:        * parse.c: now set uid to that of SUDOERS_OWNER while parsing
        !          16597:          sudoers file
        !          16598:
        !          16599: 1995-03-29 22:52  millert
        !          16600:
        !          16601:        * Makefile.in: took out testsudoers 
        !          16602:
        !          16603: 1995-03-29 22:36  millert
        !          16604:
        !          16605:        * sudo.c: now explicately checks that it is setuid root
        !          16606:
        !          16607: 1995-03-29 22:28  millert
        !          16608:
        !          16609:        * sudo.c: If a user has no passwd entry sudo would segv (writing to
        !          16610:          a garbage pointer).  Now allocate space before writing :-)
        !          16611:
        !          16612: 1995-03-29 22:06  millert
        !          16613:
        !          16614:        * configure.in: reordered AC_CHECK_FUNCS
        !          16615:
        !          16616: 1995-03-29 22:06  millert
        !          16617:
        !          16618:        * config.h.in: fixed memset macro
        !          16619:
        !          16620: 1995-03-29 21:47  millert
        !          16621:
        !          16622:        * logging.c: bzero -> memset when a parse error is logged the line
        !          16623:          number of the error is now logged too
        !          16624:
        !          16625: 1995-03-29 21:46  millert
        !          16626:
        !          16627:        * tgetpass.c, visudo.c: bzero -> memset
        !          16628:
        !          16629: 1995-03-29 21:46  millert
        !          16630:
        !          16631:        * INSTALL: added Sunos to blurb about c2 security
        !          16632:
        !          16633: 1995-03-29 21:45  millert
        !          16634:
        !          16635:        * configure.in: added a SUN4 define for C2 security
        !          16636:
        !          16637: 1995-03-29 21:44  millert
        !          16638:
        !          16639:        * config.h.in: bcopy -> memmove bzero -> memset
        !          16640:
        !          16641: 1995-03-29 21:43  millert
        !          16642:
        !          16643:        * lsearch.c: bcopy -> memmove char * -> VOID *
        !          16644:
        !          16645: 1995-03-29 21:30  millert
        !          16646:
        !          16647:        * check.c: added support for sunos with C2 security
        !          16648:
        !          16649: 1995-03-29 21:12  millert
        !          16650:
        !          16651:        * OPTIONS, options.h: reordered
        !          16652:
        !          16653: 1995-03-29 21:12  millert
        !          16654:
        !          16655:        * pathnames.h.in: _PATH_SUDO_LOGFILE now set based on configure
        !          16656:
        !          16657: 1995-03-29 21:12  millert
        !          16658:
        !          16659:        * configure.in: added SUDO_LOGFILE and SUDO_TYPE_SIZE_T
        !          16660:
        !          16661: 1995-03-29 21:12  millert
        !          16662:
        !          16663:        * config.h.in: added _SUDO_PATH_LOGFILE
        !          16664:
        !          16665: 1995-03-29 21:11  millert
        !          16666:
        !          16667:        * aclocal.m4: added SUDO_LOGFILE to find where to put sudo.log
        !          16668:          added SUDO_CHECK_TYPE (just AC_CHECK_TYPE but checks unistd.h
        !          16669:          too) added SUDO_TYPE_SIZE_T (calls SUDO_CHECK_TYPE)
        !          16670:
        !          16671: 1995-03-29 18:17  millert
        !          16672:
        !          16673:        * TROUBLESHOOTING: Initial revision
        !          16674:
        !          16675: 1995-03-29 17:59  millert
        !          16676:
        !          16677:        * sudo.c: now do set_perms(PERM_ROOT) before the getpwuid() in
        !          16678:          load_global() to work around a problem is trusted hpux shadow
        !          16679:          passwords. yuck.
        !          16680:
        !          16681: 1995-03-29 17:41  millert
        !          16682:
        !          16683:        * parse.yacc: backed out a change in malloc/realloc
        !          16684:
        !          16685: 1995-03-29 17:38  millert
        !          16686:
        !          16687:        * parse.yacc: now include stdlib.h
        !          16688:
        !          16689: 1995-03-29 17:22  millert
        !          16690:
        !          16691:        * visudo.c: now do an freopen() of the stmp file so that yyin will
        !          16692:          always point to the same thing.  This is important for flex since
        !          16693:          we are doing a YY_NEWFILE
        !          16694:
        !          16695: 1995-03-29 17:20  millert
        !          16696:
        !          16697:        * parse.yacc: replaced yywrap() with parser_cleanup() since
        !          16698:          yywrap() needs to be in parse.lex to be able to use YY_NEW_FILE.
        !          16699:          sigh.
        !          16700:
        !          16701: 1995-03-29 17:18  millert
        !          16702:
        !          16703:        * parse.lex: now have a rule that matches anything that doesn't
        !          16704:          match an explicite rule.  well, you know what i mean (. matches
        !          16705:          anything not yet matched).  However, this means that there is
        !          16706:          input still queued up so we need to do a YY_NEW_FILE; in yywrap.
        !          16707:          So, yywrap has moved into parse.lex and it calls parser_cleanup()
        !          16708:          which is most of the old yywrap() sigh.
        !          16709:
        !          16710: 1995-03-29 17:17  millert
        !          16711:
        !          16712:        * SUPPORTED: no longer used
        !          16713:
        !          16714: 1995-03-29 16:13  millert
        !          16715:
        !          16716:        * getcwd.c, getwd.c: moved compat.h to be the last include file
        !          16717:
        !          16718: 1995-03-29 16:11  millert
        !          16719:
        !          16720:        * parse.yacc: fixed type of aliascmp() args
        !          16721:
        !          16722: 1995-03-29 15:58  millert
        !          16723:
        !          16724:        * find_path.c: NULL -> '\0'
        !          16725:
        !          16726: 1995-03-29 15:42  millert
        !          16727:
        !          16728:        * parse.yacc: added casts to lfind and lsearch args for irix
        !          16729:
        !          16730: 1995-03-29 08:20  millert
        !          16731:
        !          16732:        * Makefile.in: bsdinstall -> install-sh
        !          16733:
        !          16734: 1995-03-29 08:20  millert
        !          16735:
        !          16736:        * INSTALL: added info about make realclean
        !          16737:
        !          16738: 1995-03-29 08:17  millert
        !          16739:
        !          16740:        * Makefile.in: updated VERSION added dependencies for visudo.cat
        !          16741:
        !          16742: 1995-03-29 08:17  millert
        !          16743:
        !          16744:        * version.h: -> pl5b1
        !          16745:
        !          16746: 1995-03-29 08:16  millert
        !          16747:
        !          16748:        * sudo.c: took out -l
        !          16749:
        !          16750: 1995-03-29 00:03  millert
        !          16751:
        !          16752:        * Makefile.in: now there is a real visudo.man and visudo.cat
        !          16753:
        !          16754: 1995-03-28 23:54  millert
        !          16755:
        !          16756:        * sudo.man: took out visudo stuff
        !          16757:
        !          16758: 1995-03-28 23:54  millert
        !          16759:
        !          16760:        * visudo.man: Initial revision
        !          16761:
        !          16762: 1995-03-28 23:12  millert
        !          16763:
        !          16764:        * parse.c, parse.lex, parse.yacc: updated copyright
        !          16765:
        !          16766: 1995-03-28 23:05  millert
        !          16767:
        !          16768:        * README: updated for pl5
        !          16769:
        !          16770: 1995-03-28 20:02  millert
        !          16771:
        !          16772:        * sudo.man: updated Nieusma & Hieb email addresses
        !          16773:
        !          16774: 1995-03-28 19:57  millert
        !          16775:
        !          16776:        * INSTALL: updated to include options.h and OPTIONS
        !          16777:
        !          16778: 1995-03-28 19:35  millert
        !          16779:
        !          16780:        * CHANGES, TODO: updated
        !          16781:
        !          16782: 1995-03-28 19:35  millert
        !          16783:
        !          16784:        * BUGS: eliminated bug #1 (yay)
        !          16785:
        !          16786: 1995-03-28 19:31  millert
        !          16787:
        !          16788:        * configure.in: sunos no longer gets linked statically
        !          16789:
        !          16790: 1995-03-28 18:58  millert
        !          16791:
        !          16792:        * parse.lex: prototype now uses __P()
        !          16793:
        !          16794: 1995-03-28 18:49  millert
        !          16795:
        !          16796:        * parse.lex: make fill() non-ansi
        !          16797:
        !          16798: 1995-03-28 15:26  millert
        !          16799:
        !          16800:        * parse.c: made -v (validate) work
        !          16801:
        !          16802: 1995-03-28 15:26  millert
        !          16803:
        !          16804:        * logging.c: now gives host
        !          16805:
        !          16806: 1995-03-28 10:34  millert
        !          16807:
        !          16808:        * find_path.c: don't check for execute/statable if fq or relative
        !          16809:          path given
        !          16810:
        !          16811: 1995-03-28 01:07  millert
        !          16812:
        !          16813:        * parse.c: added a cast
        !          16814:
        !          16815: 1995-03-28 00:49  millert
        !          16816:
        !          16817:        * visudo.c: now include ctype.h for islower and tolower macros
        !          16818:
        !          16819: 1995-03-28 00:48  millert
        !          16820:
        !          16821:        * goodpath.c: moved _S_IFMT & _S_ISREG to compat.h
        !          16822:
        !          16823: 1995-03-28 00:48  millert
        !          16824:
        !          16825:        * sudo.c: moved a set of parens
        !          16826:
        !          16827: 1995-03-28 00:48  millert
        !          16828:
        !          16829:        * strdup.c: now include compat.h
        !          16830:
        !          16831: 1995-03-28 00:47  millert
        !          16832:
        !          16833:        * parse.yacc: now cast malloc & realloc return vals added search
        !          16834:          for HAVE_LSEARCH now use strcmp if no strcasecmp available
        !          16835:
        !          16836: 1995-03-28 00:46  millert
        !          16837:
        !          16838:        * lsearch.c, emul/search.h: void * -> VOID *
        !          16839:
        !          16840: 1995-03-28 00:45  millert
        !          16841:
        !          16842:        * config.h.in: removed HAVE_FLEX added VOID added HAVE_DIRENT_H,
        !          16843:          HAVE_SYS_NDIR_H, HAVE_SYS_DIR_H, HAVE_NDIR_H added HAVE_LSEARCH
        !          16844:
        !          16845: 1995-03-28 00:44  millert
        !          16846:
        !          16847:        * compat.h: added _S_IFMT, _S_IFREG, and S_ISREG
        !          16848:
        !          16849: 1995-03-28 00:44  millert
        !          16850:
        !          16851:        * aclocal.m4: took out SUDO_PROG_INSTALL 1.x to 2.x changes added
        !          16852:          echo and results to most SUDO_* macros
        !          16853:
        !          16854: 1995-03-28 00:43  millert
        !          16855:
        !          16856:        * Makefile.in: no more -I.
        !          16857:
        !          16858: 1995-03-28 00:22  millert
        !          16859:
        !          16860:        * configure.in: various 1.x ro 2.x autoconf changes now check for
        !          16861:          strcasecmp now use AC_INSTALL_PROG instead of custom one added
        !          16862:          check for fully woorking void implementation
        !          16863:
        !          16864: 1995-03-28 00:02  millert
        !          16865:
        !          16866:        * Makefile.in: added lsearch & search.h visudo links into
        !          16867:          $(LIBOBJS)
        !          16868:
        !          16869: 1995-03-27 23:43  millert
        !          16870:
        !          16871:        * aclocal.m4: partial 1.x to 2.x changes added SUDO_FULL_VOID
        !          16872:
        !          16873: 1995-03-27 23:40  millert
        !          16874:
        !          16875:        * visudo.c: whatnow_help  was prototyped to be static be was not
        !          16876:          declared as such
        !          16877:
        !          16878: 1995-03-27 21:15  millert
        !          16879:
        !          16880:        * configure.in: autoconf 2.x changes took out HAVE_FLEX (no longer
        !          16881:          used) added check for dirent/dir/ndir.h
        !          16882:
        !          16883: 1995-03-27 21:09  millert
        !          16884:
        !          16885:        * parse.c: now use groovy gnu autoconf macro AC_HEADER_DIRENT
        !          16886:
        !          16887: 1995-03-27 20:38  millert
        !          16888:
        !          16889:        * getcwd.c, getwd.c: MAXPATHLEN -> MAXPATHLEN+1
        !          16890:
        !          16891: 1995-03-27 20:23  millert
        !          16892:
        !          16893:        * emul/search.h, lsearch.c: Initial revision
        !          16894:
        !          16895: 1995-03-27 18:26  millert
        !          16896:
        !          16897:        * parse.yacc: eliminated bison warnings
        !          16898:
        !          16899: 1995-03-27 17:10  millert
        !          16900:
        !          16901:        * parse.lex: added missing case
        !          16902:
        !          16903: 1995-03-27 17:04  millert
        !          16904:
        !          16905:        * visudo.c: now iincludes signal.h
        !          16906:
        !          16907: 1995-03-27 15:16  millert
        !          16908:
        !          16909:        * parse.yacc: only clear data structures on a parse error
        !          16910:
        !          16911: 1995-03-27 15:01  millert
        !          16912:
        !          16913:        * visudo.c: whatnow() now gives help on invalid input
        !          16914:
        !          16915: 1995-03-27 14:54  millert
        !          16916:
        !          16917:        * visudo.c: added a whatnow() function (sort of like mh)
        !          16918:
        !          16919: 1995-03-27 14:53  millert
        !          16920:
        !          16921:        * parse.yacc: kill_aliases -> reset_aliases yywrap() now cleans up
        !          16922:          by calling reset_aliases() and clearing top took reset stuff out
        !          16923:          of yyerror() since it doesn't beling there (and doesn't work
        !          16924:          anyway).  errorlineno is now initially set to -1 so we can set it
        !          16925:          to the first error that occurrs (it was getting set to the last)
        !          16926:
        !          16927: 1995-03-27 14:53  millert
        !          16928:
        !          16929:        * parse.lex: added a void cast
        !          16930:
        !          16931: 1995-03-27 13:26  millert
        !          16932:
        !          16933:        * visudo.c: rewrote from scratch based on 4.3BSD vipw.c
        !          16934:
        !          16935: 1995-03-26 01:33  millert
        !          16936:
        !          16937:        * sudo.c, sudo.h: removed ocmnd
        !          16938:
        !          16939: 1995-03-26 01:19  millert
        !          16940:
        !          16941:        * sudo.h: no more sudo_realpath() and find_path() changed params
        !          16942:
        !          16943: 1995-03-26 01:19  millert
        !          16944:
        !          16945:        * sudo.c: find_path() changed since no more realpath()
        !          16946:
        !          16947: 1995-03-26 01:18  millert
        !          16948:
        !          16949:        * parse.yacc: on error, errorlineno is set to the line where the
        !          16950:          error occurred added kill_aliases() to free the aliases struct
        !          16951:          now clean up in yyerror() so we can reparse cleanly
        !          16952:
        !          16953: 1995-03-26 01:17  millert
        !          16954:
        !          16955:        * logging.c: changed to use new find_path()
        !          16956:
        !          16957: 1995-03-26 01:17  millert
        !          16958:
        !          16959:        * options.h, parse.c: no more USE_REALPATH
        !          16960:
        !          16961: 1995-03-26 01:16  millert
        !          16962:
        !          16963:        * find_path.c: removed all the realpath() stuff
        !          16964:
        !          16965: 1995-03-26 01:16  millert
        !          16966:
        !          16967:        * Makefile.in: sudo_realpath.c -> sudo_goodpath.c
        !          16968:
        !          16969: 1995-03-26 01:12  millert
        !          16970:
        !          16971:        * visudo.c: now works correctly with utk parser
        !          16972:
        !          16973: 1995-03-26 00:04  millert
        !          16974:
        !          16975:        * goodpath.c: Initial revision
        !          16976:
        !          16977: 1995-03-25 23:23  millert
        !          16978:
        !          16979:        * sudo_realpath.c: eliminated a compiler warning
        !          16980:
        !          16981: 1995-03-25 21:56  millert
        !          16982:
        !          16983:        * sudo.c: elinated compiler warning
        !          16984:
        !          16985: 1995-03-25 20:40  millert
        !          16986:
        !          16987:        * sudo_realpath.c: added sudo_goodpath()
        !          16988:
        !          16989: 1995-03-25 20:40  millert
        !          16990:
        !          16991:        * sudo.h: added prototype for sudo_goodpath
        !          16992:
        !          16993: 1995-03-25 20:39  millert
        !          16994:
        !          16995:        * parse.c: added support for /sys/dir.h
        !          16996:
        !          16997: 1995-03-25 20:39  millert
        !          16998:
        !          16999:        * options.h: USE_REALPATH turned off
        !          17000:
        !          17001: 1995-03-25 20:39  millert
        !          17002:
        !          17003:        * find_path.c: added calls to sudo_goodpath()
        !          17004:
        !          17005: 1995-03-25 20:39  millert
        !          17006:
        !          17007:        * configure.in: added check for dirent.h
        !          17008:
        !          17009: 1995-03-25 20:38  millert
        !          17010:
        !          17011:        * config.h.in: added HAVE_DIRENT_H
        !          17012:
        !          17013: 1995-03-25 19:27  millert
        !          17014:
        !          17015:        * configure.in: added in linux shadow pass stuff 
        !          17016:
        !          17017: 1995-03-24 14:43  millert
        !          17018:
        !          17019:        * visudo.c: added back host, user, cmnd, parse_error
        !          17020:
        !          17021: 1995-03-24 14:19  millert
        !          17022:
        !          17023:        * visudo.c: added in utk changes plus some minor cosmetic changes
        !          17024:
        !          17025: 1995-03-24 14:17  millert
        !          17026:
        !          17027:        * sudo.c, sudo_realpath.c: added void casts for printf's
        !          17028:
        !          17029: 1995-03-24 14:17  millert
        !          17030:
        !          17031:        * options.h: added a define of USE_REALPATH
        !          17032:
        !          17033: 1995-03-24 14:17  millert
        !          17034:
        !          17035:        * configure.in: there is no more visudoers/Makefile
        !          17036:
        !          17037: 1995-03-24 14:16  millert
        !          17038:
        !          17039:        * Makefile.in: added in utk changes (visudo is now built from the
        !          17040:          toplevel)
        !          17041:
        !          17042: 1995-03-24 14:15  millert
        !          17043:
        !          17044:        * find_path.c: added (void) casts to printf's
        !          17045:
        !          17046: 1995-03-23 22:32  millert
        !          17047:
        !          17048:        * parse.c, parse.lex, parse.yacc, sudo.h, sudo_realpath.c: merged
        !          17049:          in utk changes
        !          17050:
        !          17051: 1995-03-22 23:13  millert
        !          17052:
        !          17053:        * find_path.c: now check to see that what we are trying to run is a
        !          17054:          file (or a link to a file, we do a stat(2) so there is no diff)
        !          17055:
        !          17056: 1995-03-13 15:56  millert
        !          17057:
        !          17058:        * CHANGES: updated
        !          17059:
        !          17060: 1995-03-13 15:56  millert
        !          17061:
        !          17062:        * Makefile.in: aclocal.m4 -> acsite.m4 make realclean updated for
        !          17063:          new autoconf 
        !          17064:
        !          17065: 1995-03-13 15:11  millert
        !          17066:
        !          17067:        * sudo.man: added myself as maintainer
        !          17068:
        !          17069: 1995-02-16 23:31  millert
        !          17070:
        !          17071:        * sudo.c: changed setegid -> setgid
        !          17072:
        !          17073: 1995-02-06 17:43  millert
        !          17074:
        !          17075:        * configure.in: fixed the test for irix 5.x to skip bad libs
        !          17076:
        !          17077: 1995-02-06 17:43  millert
        !          17078:
        !          17079:        * aclocal.m4: now initialize OS and OSREV
        !          17080:
        !          17081: 1995-01-26 20:52  millert
        !          17082:
        !          17083:        * configure.in: irix5 changes
        !          17084:
        !          17085: 1995-01-26 20:28  millert
        !          17086:
        !          17087:        * configure.in: AC_WITH -> AC_ARG_WITH changes other misc changes
        !          17088:          for autoconf 2.1 compatibility
        !          17089:
        !          17090: 1995-01-18 19:49  millert
        !          17091:
        !          17092:        * visudo.c: use YY_NEW_FILE, not yyrestart since OSF flex doesn't
        !          17093:          do the righ thing wrt yyrestart (grrrr)
        !          17094:
        !          17095: 1995-01-16 18:44  millert
        !          17096:
        !          17097:        * Makefile.in: added visudoers/compat.h to DISTFILES
        !          17098:
        !          17099: 1995-01-16 17:01  millert
        !          17100:
        !          17101:        * configure.in: fixed an echo
        !          17102:
        !          17103: 1995-01-16 16:36  millert
        !          17104:
        !          17105:        * sudo.c: added ocmnd declaration adjusted for find_path()'s new
        !          17106:          parameters
        !          17107:
        !          17108: 1995-01-16 16:35  millert
        !          17109:
        !          17110:        * sudo.h: added ocmnd extern adjusted find_path() prototype
        !          17111:
        !          17112: 1995-01-16 16:34  millert
        !          17113:
        !          17114:        * parse.c: cmndcmp() now takes 3 arguments and checks against the
        !          17115:          qualified as well as the unqualified pathname.  more code that
        !          17116:          should use cmndcmp() but did not, now does
        !          17117:
        !          17118: 1995-01-16 16:34  millert
        !          17119:
        !          17120:        * options.h: added to a comment
        !          17121:
        !          17122: 1995-01-16 16:33  millert
        !          17123:
        !          17124:        * logging.c: changed to use new find_path() parameter passing
        !          17125:
        !          17126: 1995-01-16 16:32  millert
        !          17127:
        !          17128:        * find_path.c: find_path() now takes 2 copyout parameters (one for
        !          17129:          the qualified pathname and one for the unqualified pathname).
        !          17130:          The third parameter may be NULL.
        !          17131:
        !          17132: 1995-01-16 16:31  millert
        !          17133:
        !          17134:        * configure.in: no longer munge pathnames.h
        !          17135:
        !          17136: 1995-01-16 16:30  millert
        !          17137:
        !          17138:        * pathnames.h.in: changed _PATH_* to use _SUDO_PATH_* (which are
        !          17139:          defined in config.h) as a result, pathnames.h does not need to be
        !          17140:          run through configure and the user can override the configured
        !          17141:          values easily.
        !          17142:
        !          17143: 1995-01-16 16:30  millert
        !          17144:
        !          17145:        * config.h.in: added _SUDO_PATH_* entries
        !          17146:
        !          17147: 1995-01-16 16:30  millert
        !          17148:
        !          17149:        * aclocal.m4: _PATH* -> _SUDO_PATH_*
        !          17150:
        !          17151: 1995-01-16 16:28  millert
        !          17152:
        !          17153:        * Makefile.in: updated DISTFILES and HDRS .o's now depend on
        !          17154:          config.h
        !          17155:
        !          17156: 1995-01-13 12:52  millert
        !          17157:
        !          17158:        * compat.h: removed extraneous #endif
        !          17159:
        !          17160: 1995-01-13 12:48  millert
        !          17161:
        !          17162:        * aclocal.m4: added SUDO_PROG_MV
        !          17163:
        !          17164: 1995-01-13 12:47  millert
        !          17165:
        !          17166:        * configure.in: added SUDO_PROG_MV added riscos and isc os types
        !          17167:          took out -DSHORT_MESSAGE from --with-csops since it is now the
        !          17168:          default
        !          17169:
        !          17170: 1995-01-13 12:46  millert
        !          17171:
        !          17172:        * sudo.c: move the include of id.h to compat.h now includes
        !          17173:          options.h
        !          17174:
        !          17175: 1995-01-13 12:45  millert
        !          17176:
        !          17177:        * sudo.h: moved compatibility #defines to compat.h
        !          17178:
        !          17179: 1995-01-13 12:45  millert
        !          17180:
        !          17181:        * pathnames.h.in: added _PATH_MV
        !          17182:
        !          17183: 1995-01-13 12:43  millert
        !          17184:
        !          17185:        * config.h.in: move __P to compat.h
        !          17186:
        !          17187: 1995-01-13 12:39  millert
        !          17188:
        !          17189:        * getcwd.c, getwd.c, putenv.c: now includes compat.h
        !          17190:
        !          17191: 1995-01-13 12:39  millert
        !          17192:
        !          17193:        * compat.h: Initial revision
        !          17194:
        !          17195: 1995-01-11 19:11  millert
        !          17196:
        !          17197:        * sudo.h: pull user-configurable stuff out and put in options.h
        !          17198:
        !          17199: 1995-01-11 18:43  millert
        !          17200:
        !          17201:        * check.c, find_path.c, logging.c, parse.c, sudo_realpath.c,
        !          17202:          sudo_setenv.c, parse.lex, parse.yacc, visudo.c: now includes
        !          17203:          options.h
        !          17204:
        !          17205: 1995-01-11 18:41  millert
        !          17206:
        !          17207:        * Makefile.in: added visudoers/options.h
        !          17208:
        !          17209: 1995-01-11 18:40  millert
        !          17210:
        !          17211:        * options.h, OPTIONS: Initial revision
        !          17212:
        !          17213: 1995-01-11 18:39  millert
        !          17214:
        !          17215:        * Makefile.in: added OPTIONS and options.h
        !          17216:
        !          17217: 1995-01-11 18:36  millert
        !          17218:
        !          17219:        * logging.c: changed #ifdef's to use LOGGING and
        !          17220:          SLOG_SYSLOG/SLOG_FILE
        !          17221:
        !          17222: 1995-01-11 11:02  millert
        !          17223:
        !          17224:        * check.c, sudo.h: changed PASSWORD_TIMEOUT to minutes
        !          17225:
        !          17226: 1994-12-17 18:18  millert
        !          17227:
        !          17228:        * visudo.c: now only do Editor +line_num if line_num  != 0
        !          17229:
        !          17230: 1994-12-15 21:06  millert
        !          17231:
        !          17232:        * visudo.c: now use mv if rename(2) fails
        !          17233:
        !          17234: 1994-12-15 20:32  millert
        !          17235:
        !          17236:        * BUGS: added a visudo bug
        !          17237:
        !          17238: 1994-12-15 19:46  millert
        !          17239:
        !          17240:        * check.c: expanded comment
        !          17241:
        !          17242: 1994-11-12 18:33  millert
        !          17243:
        !          17244:        * check.c: fixed user_is_exempt to return 0 if EXEMPTGROUP is not
        !          17245:          set
        !          17246:
        !          17247: 1994-11-09 19:49  millert
        !          17248:
        !          17249:        * sudo.c: added mips & isc support
        !          17250:
        !          17251: 1994-11-09 19:49  millert
        !          17252:
        !          17253:        * parse.c: added support for non-root owned sudoers file
        !          17254:
        !          17255: 1994-11-09 19:48  millert
        !          17256:
        !          17257:        * check.c: added exempt group support
        !          17258:
        !          17259: 1994-11-09 19:47  millert
        !          17260:
        !          17261:        * sudo.h: added set_perms() support added SUDOERS_OWNER so can have
        !          17262:          non-root own sudoers file added exempt group support added isc
        !          17263:          support
        !          17264:
        !          17265: 1994-11-09 19:46  millert
        !          17266:
        !          17267:        * visudo.c: now copy sudoers to temp file via read/write (not
        !          17268:          stdio) now chown new sudoers file to SUDOERS_OWNER
        !          17269:
        !          17270: 1994-11-07 20:40  millert
        !          17271:
        !          17272:        * configure.in: added skey support
        !          17273:
        !          17274: 1994-11-07 20:39  millert
        !          17275:
        !          17276:        * sudo.h: fixed typo added set_perms support added skey support
        !          17277:          added seteuid()/setegid() emulation for AIX
        !          17278:
        !          17279: 1994-11-07 20:38  millert
        !          17280:
        !          17281:        * sudo.c: be_* -> setperms() now check to make sure sudoers file is
        !          17282:          owned by root nread/write by only root
        !          17283:
        !          17284: 1994-11-07 20:38  millert
        !          17285:
        !          17286:        * logging.c, parse.c, sudo_realpath.c: be_* -> setperms()
        !          17287:
        !          17288: 1994-11-07 20:38  millert
        !          17289:
        !          17290:        * check.c: be_* -> set_perms() added skey support
        !          17291:
        !          17292: 1994-11-06 18:59  millert
        !          17293:
        !          17294:        * Makefile.in: ++version
        !          17295:
        !          17296: 1994-11-06 18:59  millert
        !          17297:
        !          17298:        * version.h: ++
        !          17299:
        !          17300: 1994-10-21 13:16  millert
        !          17301:
        !          17302:        * sudo.c: now sets IFS
        !          17303:
        !          17304: 1994-10-21 12:02  millert
        !          17305:
        !          17306:        * insults.h: fixed typo
        !          17307:
        !          17308: 1994-10-15 15:48  millert
        !          17309:
        !          17310:        * config.h.in: added HAVE_SKEY
        !          17311:
        !          17312: 1994-10-04 13:00  millert
        !          17313:
        !          17314:        * CHANGES: updated
        !          17315:
        !          17316: 1994-10-04 12:57  millert
        !          17317:
        !          17318:        * Makefile.in: ++version
        !          17319:
        !          17320: 1994-10-04 12:57  millert
        !          17321:
        !          17322:        * version.h: ++
        !          17323:
        !          17324: 1994-10-04 12:56  millert
        !          17325:
        !          17326:        * sudo.c: now bail if ARgv[1] > MAXPATHLEN
        !          17327:
        !          17328: 1994-10-04 12:56  millert
        !          17329:
        !          17330:        * configure.in: added function check for tcgetattr(3)
        !          17331:
        !          17332: 1994-10-04 12:55  millert
        !          17333:
        !          17334:        * config.h.in: only define HAVE_TERMIOS_H if you have tcgetattr(3)
        !          17335:
        !          17336: 1994-10-04 12:53  millert
        !          17337:
        !          17338:        * config.h.in: added check for tcgetattr
        !          17339:
        !          17340: 1994-09-26 17:38  millert
        !          17341:
        !          17342:        * CHANGES: updated
        !          17343:
        !          17344: 1994-09-22 13:30  millert
        !          17345:
        !          17346:        * parse.lex: now only include unistd.h for linux
        !          17347:
        !          17348: 1994-09-21 14:29  millert
        !          17349:
        !          17350:        * Makefile.in: added visudo.8 generation
        !          17351:
        !          17352: 1994-09-21 14:07  millert
        !          17353:
        !          17354:        * configure.in: added -Wl,-bI:./aixcrypt.exp to aix flags
        !          17355:
        !          17356: 1994-09-20 19:39  millert
        !          17357:
        !          17358:        * BUGS: added one
        !          17359:
        !          17360: 1994-09-20 19:39  millert
        !          17361:
        !          17362:        * CHANGES: updated
        !          17363:
        !          17364: 1994-09-20 19:38  millert
        !          17365:
        !          17366:        * README: added mailing list info
        !          17367:
        !          17368: 1994-09-20 19:37  millert
        !          17369:
        !          17370:        * parse.yacc: now use sudolineno instead of yylineno fixed bison
        !          17371:          warnings
        !          17372:
        !          17373: 1994-09-20 19:37  millert
        !          17374:
        !          17375:        * configure.in: now use -no_library_replacement for osf don't make
        !          17376:          a static binary for hpux >= 9.0
        !          17377:
        !          17378: 1994-09-20 19:21  millert
        !          17379:
        !          17380:        * tgetpass.c: added string.h/strings.h inclusion
        !          17381:
        !          17382: 1994-09-20 19:21  millert
        !          17383:
        !          17384:        * config.h.in: added ssize_t def
        !          17385:
        !          17386: 1994-09-20 19:18  millert
        !          17387:
        !          17388:        * parse.lex: added inclusion of string.h/strings.h
        !          17389:
        !          17390: 1994-09-20 18:48  millert
        !          17391:
        !          17392:        * aclocal.m4: fixed uname | sed (needed to quote the '[')
        !          17393:
        !          17394: 1994-09-20 18:42  millert
        !          17395:
        !          17396:        * parse.lex: replaced yylineno with sudolineno fixed bison syntax
        !          17397:          errors
        !          17398:
        !          17399: 1994-09-20 18:13  millert
        !          17400:
        !          17401:        * visudo.c: changed yylineno to sudolineno since yylineno cannot be
        !          17402:          counted upon.
        !          17403:
        !          17404: 1994-09-20 18:10  millert
        !          17405:
        !          17406:        * TODO: updated
        !          17407:
        !          17408: 1994-09-20 17:52  millert
        !          17409:
        !          17410:        * parse.c: added code to support command listings
        !          17411:
        !          17412: 1994-09-20 17:36  millert
        !          17413:
        !          17414:        * sudo.c: added code for -l flag
        !          17415:
        !          17416: 1994-09-20 17:35  millert
        !          17417:
        !          17418:        * sudo.man: fixed typo added info for -l flag
        !          17419:
        !          17420: 1994-09-20 14:45  millert
        !          17421:
        !          17422:        * configure.in: AC_SSIZE_T -> SUDO_SSIZE_T
        !          17423:
        !          17424: 1994-09-20 14:45  millert
        !          17425:
        !          17426:        * aclocal.m4: added SUDO_SSIZE_T
        !          17427:
        !          17428: 1994-09-20 14:44  millert
        !          17429:
        !          17430:        * sudo.h: added MODE_LIST
        !          17431:
        !          17432: 1994-09-20 14:43  millert
        !          17433:
        !          17434:        * configure.in: added AC_SSIZE_T
        !          17435:
        !          17436: 1994-09-19 20:53  millert
        !          17437:
        !          17438:        * find_path.c, sudo_realpath.c: readlink() is now declared as
        !          17439:          returning ssize~_t
        !          17440:
        !          17441: 1994-09-19 20:44  millert
        !          17442:
        !          17443:        * configure.in: added -laud for OSF c2
        !          17444:
        !          17445: 1994-09-02 15:55  millert
        !          17446:
        !          17447:        * config.h.in, parse.lex, parse.yacc, pathnames.h.in, visudo.c,
        !          17448:          Makefile.in: changed sudo-bugs.cs.colorado.edu ->
        !          17449:          sudo-bugs@cs.colorado.edu
        !          17450:
        !          17451: 1994-09-02 15:54  millert
        !          17452:
        !          17453:        * check.c, find_path.c, getcwd.c, getwd.c, insults.h, logging.c,
        !          17454:          parse.c, putenv.c, strdup.c, sudo.c, sudo.h, sudo_realpath.c,
        !          17455:          sudo_setenv.c, tgetpass.c, version.h: changed
        !          17456:          sudo-bugs.cs.colorado.edu -> sudo-bugs@cs.colorado.ed
        !          17457:
        !          17458: 1994-09-01 15:56  millert
        !          17459:
        !          17460:        * Makefile.in: ++version
        !          17461:
        !          17462: 1994-09-01 15:55  millert
        !          17463:
        !          17464:        * version.h: ++
        !          17465:
        !          17466: 1994-09-01 15:55  millert
        !          17467:
        !          17468:        * logging.c: added host to alertmail messages
        !          17469:
        !          17470: 1994-09-01 15:55  millert
        !          17471:
        !          17472:        * CHANGES, TODO: udpated
        !          17473:
        !          17474: 1994-09-01 15:26  millert
        !          17475:
        !          17476:        * logging.c: fixed logging problem where mail would not say which
        !          17477:          user it was
        !          17478:
        !          17479: 1994-09-01 13:45  millert
        !          17480:
        !          17481:        * configure.in: added -laud for gcc if osf & c2
        !          17482:
        !          17483: 1994-09-01 13:39  millert
        !          17484:
        !          17485:        * check.c: moved set_auth_parameters to sudo.c
        !          17486:
        !          17487: 1994-09-01 13:38  millert
        !          17488:
        !          17489:        * sudo.c: added set_auth_parameters for osf
        !          17490:
        !          17491: 1994-09-01 13:22  millert
        !          17492:
        !          17493:        * configure.in: cleaned up -static stuff
        !          17494:
        !          17495: 1994-09-01 13:15  millert
        !          17496:
        !          17497:        * Makefile.in: ++version
        !          17498:
        !          17499: 1994-09-01 13:15  millert
        !          17500:
        !          17501:        * version.h: ++
        !          17502:
        !          17503: 1994-09-01 13:15  millert
        !          17504:
        !          17505:        * sudo.c: changed setenv() to sudo_setenv()
        !          17506:
        !          17507: 1994-09-01 13:12  millert
        !          17508:
        !          17509:        * check.c: fixed osf problem
        !          17510:
        !          17511: 1994-08-31 22:17  millert
        !          17512:
        !          17513:        * configure.in: added OSF C2 stuff
        !          17514:
        !          17515: 1994-08-31 22:00  millert
        !          17516:
        !          17517:        * CHANGES: updated
        !          17518:
        !          17519: 1994-08-31 21:56  millert
        !          17520:
        !          17521:        * check.c: added osf auth support & removed some extra spaces
        !          17522:
        !          17523: 1994-08-31 21:52  millert
        !          17524:
        !          17525:        * INSTALL, SUPPORTED: added osf C2 stuff
        !          17526:
        !          17527: 1994-08-31 19:52  millert
        !          17528:
        !          17529:        * TODO: added 2 suggestions
        !          17530:
        !          17531: 1994-08-31 19:33  millert
        !          17532:
        !          17533:        * Makefile.in: removed README.v1.3.1 and added VERSION stuff
        !          17534:
        !          17535: 1994-08-31 18:48  millert
        !          17536:
        !          17537:        * version.h: pl1
        !          17538:
        !          17539: 1994-08-30 18:31  millert
        !          17540:
        !          17541:        * version.h: 1.3.1final
        !          17542:
        !          17543: 1994-08-30 18:30  millert
        !          17544:
        !          17545:        * Makefile.in: added HISTORY
        !          17546:
        !          17547: 1994-08-30 18:30  millert
        !          17548:
        !          17549:        * sudo.man: mention HISTPRY file
        !          17550:
        !          17551: 1994-08-30 18:30  millert
        !          17552:
        !          17553:        * sudo.c: use sizeof instead of a constant in 1 place
        !          17554:
        !          17555: 1994-08-30 18:30  millert
        !          17556:
        !          17557:        * parse.yacc: added  unistd.h
        !          17558:
        !          17559: 1994-08-30 18:29  millert
        !          17560:
        !          17561:        * parse.lex: added unistd.h
        !          17562:
        !          17563: 1994-08-30 18:27  millert
        !          17564:
        !          17565:        * README: udpated
        !          17566:
        !          17567: 1994-08-30 18:15  millert
        !          17568:
        !          17569:        * HISTORY: Initial revision
        !          17570:
        !          17571: 1994-08-17 12:45  millert
        !          17572:
        !          17573:        * version.h: ++
        !          17574:
        !          17575: 1994-08-17 12:39  millert
        !          17576:
        !          17577:        * CHANGES: updated
        !          17578:
        !          17579: 1994-08-17 12:36  millert
        !          17580:
        !          17581:        * sudo_setenv.c: added unistd.h include
        !          17582:
        !          17583: 1994-08-16 15:46  millert
        !          17584:
        !          17585:        * sudo.c: added sys/time.h for AIX
        !          17586:
        !          17587: 1994-08-14 21:22  millert
        !          17588:
        !          17589:        * configure.in: added check for -lsocket and sys/sockio.h
        !          17590:
        !          17591: 1994-08-14 21:21  millert
        !          17592:
        !          17593:        * config.h.in: took out libshadow check and added in sys/sockio.h
        !          17594:          check
        !          17595:
        !          17596: 1994-08-14 21:21  millert
        !          17597:
        !          17598:        * sudo.c: now include sockio.h instead of ioctl.h if it exists
        !          17599:          "sudo -" now gets a better error message
        !          17600:
        !          17601: 1994-08-14 20:47  millert
        !          17602:
        !          17603:        * sample.sudoers: now has a dir and subnet entry
        !          17604:
        !          17605: 1994-08-13 18:15  millert
        !          17606:
        !          17607:        * sudo.c: removed if_ether.h
        !          17608:
        !          17609: 1994-08-13 17:16  millert
        !          17610:
        !          17611:        * TODO: added an item
        !          17612:
        !          17613: 1994-08-13 17:15  millert
        !          17614:
        !          17615:        * sudo.man: added network and ip addresses to man page
        !          17616:
        !          17617: 1994-08-13 17:09  millert
        !          17618:
        !          17619:        * sudo.c: no error if can't get interfaces or netmask since
        !          17620:          networking may not be in the kernel.
        !          17621:
        !          17622: 1994-08-13 17:08  millert
        !          17623:
        !          17624:        * parse.c: nwo check for interfaces == NULL
        !          17625:
        !          17626: 1994-08-12 21:22  millert
        !          17627:
        !          17628:        * parse.c: fixed a bug that caused directory specs in a Cmnd_Alias
        !          17629:          to fail if the last entry in the spec failed (ie: it was only
        !          17630:          looking at the last entry).  CLeaned things up by adding the
        !          17631:          cmndcmp() function--all neat & tidy
        !          17632:
        !          17633: 1994-08-12 21:21  millert
        !          17634:
        !          17635:        * CHANGES: added one
        !          17636:
        !          17637: 1994-08-11 23:42  millert
        !          17638:
        !          17639:        * sudo.c: now do two passes to skip bogus interfaces (lo0, etc)
        !          17640:
        !          17641: 1994-08-11 21:58  millert
        !          17642:
        !          17643:        * logging.c, sudo_realpath.c, sudo_setenv.c: added ninclude of
        !          17644:          netinet/in.h
        !          17645:
        !          17646: 1994-08-11 21:58  millert
        !          17647:
        !          17648:        * check.c, find_path.c, getcwd.c, getwd.c, parse.lex, parse.yacc,
        !          17649:          visudo.c: added include of netinet/in.h
        !          17650:
        !          17651: 1994-08-11 21:57  millert
        !          17652:
        !          17653:        * version.h: ++
        !          17654:
        !          17655: 1994-08-11 21:57  millert
        !          17656:
        !          17657:        * sudo.h: added interfaces global
        !          17658:
        !          17659: 1994-08-11 21:56  millert
        !          17660:
        !          17661:        * parse.c: now uses new interfaces global
        !          17662:
        !          17663: 1994-08-11 21:56  millert
        !          17664:
        !          17665:        * sudo.c: now ip addresses are gleaned fw/o dns
        !          17666:
        !          17667: 1994-08-10 19:21  millert
        !          17668:
        !          17669:        * sudo.c: added load_ip_addrs() to load the ip_addrs global var
        !          17670:
        !          17671: 1994-08-10 19:21  millert
        !          17672:
        !          17673:        * parse.c: added hostcmp() to compare hostnames, ip addrs, and
        !          17674:          network addrs
        !          17675:
        !          17676: 1994-08-10 19:20  millert
        !          17677:
        !          17678:        * sudo.h: added ip_addrs def added load_ip_addrs prototype
        !          17679:
        !          17680: 1994-08-08 16:03  millert
        !          17681:
        !          17682:        * CHANGES: updated
        !          17683:
        !          17684: 1994-08-08 15:57  millert
        !          17685:
        !          17686:        * Makefile.in: removed multiple entries in DISTFILES
        !          17687:
        !          17688: 1994-08-08 13:05  millert
        !          17689:
        !          17690:        * visudo.c: ansified the !STDC_HEADERS decls
        !          17691:
        !          17692: 1994-08-08 13:05  millert
        !          17693:
        !          17694:        * find_path.c, getcwd.c, getwd.c, putenv.c, strdup.c: don't do
        !          17695:          malloc decl if gnuc
        !          17696:
        !          17697: 1994-08-08 13:04  millert
        !          17698:
        !          17699:        * sudo.c: can't use getopt(3) since it munges args to the command
        !          17700:          to be run as root don't do malloc decl if gnuc
        !          17701:
        !          17702: 1994-08-08 00:41  millert
        !          17703:
        !          17704:        * find_path.c, getcwd.c, getwd.c, putenv.c, strdup.c, sudo.c,
        !          17705:          sudo_realpath.c, sudo_setenv.c: ansi-fied !STDC_HEADER function
        !          17706:          prottypes
        !          17707:
        !          17708: 1994-08-08 00:27  millert
        !          17709:
        !          17710:        * getcwd.c, getwd.c: added missing paren
        !          17711:
        !          17712: 1994-08-08 00:23  millert
        !          17713:
        !          17714:        * Makefile.in: added putenv.c to DISTFILES
        !          17715:
        !          17716: 1994-08-08 00:08  millert
        !          17717:
        !          17718:        * sudo_setenv.c: added params to func decls when STDC_HEADERS is
        !          17719:          not defined now can count on putenv() being there
        !          17720:
        !          17721: 1994-08-08 00:08  millert
        !          17722:
        !          17723:        * sudo_realpath.c: took out errno decl since sudo.h does it for us
        !          17724:          fixed up a next cc warning added params to func decls when
        !          17725:          STDC_HEADERS is not defined
        !          17726:
        !          17727: 1994-08-08 00:07  millert
        !          17728:
        !          17729:        * sudo.h: took out environ extern added local declaratio of
        !          17730:          putenv() if local version is needed
        !          17731:
        !          17732: 1994-08-08 00:05  millert
        !          17733:
        !          17734:        * find_path.c, getcwd.c, getwd.c, strdup.c, sudo.c: added params to
        !          17735:          func decls when STDC_HEADERS is not defined
        !          17736:
        !          17737: 1994-08-08 00:04  millert
        !          17738:
        !          17739:        * config.h.in: added memcpy check check to see that ansi vs bsd
        !          17740:          macros are ntot already defiend before defining (ie: avoid
        !          17741:          redefinition)
        !          17742:
        !          17743: 1994-08-08 00:03  millert
        !          17744:
        !          17745:        * configure.in: removed fluff setenv check plus check w/ replace
        !          17746:          for putenv if also no setenv
        !          17747:
        !          17748: 1994-08-08 00:01  millert
        !          17749:
        !          17750:        * putenv.c: Initial revision
        !          17751:
        !          17752: 1994-08-06 19:19  millert
        !          17753:
        !          17754:        * sudo_setenv.c: Initial revision
        !          17755:
        !          17756: 1994-08-06 19:19  millert
        !          17757:
        !          17758:        * sudo.h: rm'd s realp[ath added sudo_realpath and sudo_setenv
        !          17759:
        !          17760: 1994-08-06 19:19  millert
        !          17761:
        !          17762:        * sudo.c: now use sudo_setenvc
        !          17763:
        !          17764: 1994-08-06 19:18  millert
        !          17765:
        !          17766:        * configure.in: added puteenv and setenv, removed realpath
        !          17767:
        !          17768: 1994-08-06 19:18  millert
        !          17769:
        !          17770:        * config.h.in: added putenv & setenv
        !          17771:
        !          17772: 1994-08-06 19:18  millert
        !          17773:
        !          17774:        * Makefile.in: added sudo_setenv
        !          17775:
        !          17776: 1994-08-06 19:16  millert
        !          17777:
        !          17778:        * version.h: ++
        !          17779:
        !          17780: 1994-08-05 19:43  millert
        !          17781:
        !          17782:        * configure.in: added MAN_POSTINSTALL and /usr/share/catman for
        !          17783:          irix
        !          17784:
        !          17785: 1994-08-05 19:43  millert
        !          17786:
        !          17787:        * Makefile.in: added MAN_POSTINSTALL
        !          17788:
        !          17789: 1994-08-05 19:43  millert
        !          17790:
        !          17791:        * CHANGES: added
        !          17792:
        !          17793: 1994-08-05 19:10  millert
        !          17794:
        !          17795:        * sudo.man: added SUDO_* plus new options
        !          17796:
        !          17797: 1994-08-05 19:10  millert
        !          17798:
        !          17799:        * CHANGES: added one
        !          17800:
        !          17801: 1994-08-05 19:07  millert
        !          17802:
        !          17803:        * configure.in: took out shadow lib
        !          17804:
        !          17805: 1994-08-05 18:35  millert
        !          17806:
        !          17807:        * TODO: adde done
        !          17808:
        !          17809: 1994-08-05 17:52  millert
        !          17810:
        !          17811:        * visudo.c: now use yyrestart() if flex now reset yylineno to 0
        !          17812:
        !          17813: 1994-08-05 17:49  millert
        !          17814:
        !          17815:        * Makefile.in: support for installing a cat page instead of a man
        !          17816:          page if no nroff
        !          17817:
        !          17818: 1994-08-05 17:48  millert
        !          17819:
        !          17820:        * configure.in: now defines HAVE_FLEX fixed up man stuff so that it
        !          17821:          looks for nroff to determine whether or not to install a cat or
        !          17822:          man page
        !          17823:
        !          17824: 1994-08-05 17:48  millert
        !          17825:
        !          17826:        * config.h.in: added HAVE_FLEX
        !          17827:
        !          17828: 1994-08-05 16:14  millert
        !          17829:
        !          17830:        * sudo.c: not set ret to MODE_RUN initially
        !          17831:
        !          17832: 1994-08-05 16:12  millert
        !          17833:
        !          17834:        * find_path.c: made command (and therefor cmnd dynamically
        !          17835:          allocated)
        !          17836:
        !          17837: 1994-08-04 20:25  millert
        !          17838:
        !          17839:        * TODO: did #8
        !          17840:
        !          17841: 1994-08-04 20:24  millert
        !          17842:
        !          17843:        * version.h: ++
        !          17844:
        !          17845: 1994-08-04 20:24  millert
        !          17846:
        !          17847:        * sudo_realpath.c: changed bufs from MAXPATHLEN to MAXPATHLEN+1
        !          17848:
        !          17849: 1994-08-04 20:24  millert
        !          17850:
        !          17851:        * sudo.h: added MODE_ removed validate_only and added
        !          17852:          remove_timestamp()
        !          17853:
        !          17854: 1994-08-04 20:22  millert
        !          17855:
        !          17856:        * sudo.c: usage() now takes an int (exit value) added parse_args()
        !          17857:          to parse command line arguments moved call to find_path() from
        !          17858:          load_globals to new function load_cmnd() removed validate_only
        !          17859:          global -- now use the concept of "modes" added -h and -k options
        !          17860:
        !          17861: 1994-08-04 20:21  millert
        !          17862:
        !          17863:        * parse.c: no longer use global validate_only now checks for
        !          17864:          command called "validate" removed check for non-fully qualified
        !          17865:          commands since that is done by find_path
        !          17866:
        !          17867: 1994-08-04 20:20  millert
        !          17868:
        !          17869:        * find_path.c: changed MAXPATHLEN r to MAXPATHLEN+1
        !          17870:
        !          17871: 1994-08-04 20:17  millert
        !          17872:
        !          17873:        * find_path.c: fixed off by one error with MAXPATHLEN and fixed a
        !          17874:          comment
        !          17875:
        !          17876: 1994-08-04 20:17  millert
        !          17877:
        !          17878:        * check.c: check_timestamp no longer runs reminder(), it is implied
        !          17879:          in the return val added remove_timestamp()
        !          17880:
        !          17881: 1994-08-04 20:16  millert
        !          17882:
        !          17883:        * CHANGES: updated
        !          17884:
        !          17885: 1994-08-04 16:38  millert
        !          17886:
        !          17887:        * BUGS: fixed on
        !          17888:
        !          17889: 1994-08-04 16:38  millert
        !          17890:
        !          17891:        * sudo_realpath.c: took out old_errno
        !          17892:
        !          17893: 1994-08-04 16:37  millert
        !          17894:
        !          17895:        * CHANGES: updated
        !          17896:
        !          17897: 1994-08-03 12:08  millert
        !          17898:
        !          17899:        * logging.c: moved send_mail to after syslog
        !          17900:
        !          17901: 1994-08-02 22:41  millert
        !          17902:
        !          17903:        * sudo.c: now set SUDO_ envariables
        !          17904:
        !          17905: 1994-08-01 13:40  millert
        !          17906:
        !          17907:        * version.h: ++
        !          17908:
        !          17909: 1994-08-01 13:39  millert
        !          17910:
        !          17911:        * sudo_realpath.c: now print error if chdir fails
        !          17912:
        !          17913: 1994-08-01 13:39  millert
        !          17914:
        !          17915:        * find_path.c: removed an XXX
        !          17916:
        !          17917: 1994-07-25 20:40  millert
        !          17918:
        !          17919:        * CHANGES: updated
        !          17920:
        !          17921: 1994-07-25 20:36  millert
        !          17922:
        !          17923:        * configure.in: no more static binaries for aix
        !          17924:
        !          17925: 1994-07-25 18:37  millert
        !          17926:
        !          17927:        * INSTALL: fixed typo
        !          17928:
        !          17929: 1994-07-25 18:33  millert
        !          17930:
        !          17931:        * sudo_realpath.c: took out stuff not needed for sudo now does
        !          17932:          be_root/be_user itself now uses cwd global
        !          17933:
        !          17934: 1994-07-25 18:32  millert
        !          17935:
        !          17936:        * version.h: +=2
        !          17937:
        !          17938: 1994-07-25 18:31  millert
        !          17939:
        !          17940:        * logging.c, sudo.c: be_root/be_user is now down in sudo_realpath()
        !          17941:
        !          17942: 1994-07-25 18:26  millert
        !          17943:
        !          17944:        * logging.c, sudo.h: now works with 4.2BSD syslog (blech)
        !          17945:
        !          17946: 1994-07-25 18:25  millert
        !          17947:
        !          17948:        * find_path.c: now use sudo_realpath()
        !          17949:
        !          17950: 1994-07-25 18:25  millert
        !          17951:
        !          17952:        * config.h.in: took out realpth() stuff since we now use
        !          17953:          sudo_realpath()
        !          17954:
        !          17955: 1994-07-25 18:25  millert
        !          17956:
        !          17957:        * configure.in: ultrix enhanced sec
        !          17958:
        !          17959: 1994-07-25 18:25  millert
        !          17960:
        !          17961:        * SUPPORTED: added ultrix enhanced sec.
        !          17962:
        !          17963: 1994-07-25 18:24  millert
        !          17964:
        !          17965:        * INSTALL: updated
        !          17966:
        !          17967: 1994-07-25 18:21  millert
        !          17968:
        !          17969:        * check.c: ultrix enhanced security suport
        !          17970:
        !          17971: 1994-07-25 18:20  millert
        !          17972:
        !          17973:        * Makefile.in: added sudo_realpath.c
        !          17974:
        !          17975: 1994-07-25 18:18  millert
        !          17976:
        !          17977:        * CHANGES: updated
        !          17978:
        !          17979: 1994-07-25 14:28  millert
        !          17980:
        !          17981:        * tgetpass.c: increased passwd len to 24 for c2 security
        !          17982:
        !          17983: 1994-07-25 13:17  millert
        !          17984:
        !          17985:        * BUGS: updated BUGS
        !          17986:
        !          17987: 1994-07-15 11:49  millert
        !          17988:
        !          17989:        * check.c: now use user global var
        !          17990:
        !          17991: 1994-07-15 11:48  millert
        !          17992:
        !          17993:        * configure.in: took out -ls
        !          17994:
        !          17995: 1994-07-14 19:11  millert
        !          17996:
        !          17997:        * configure.in: added AFS libs
        !          17998:
        !          17999: 1994-07-14 17:45  millert
        !          18000:
        !          18001:        * sudo.h: user is now a char * added epasswd
        !          18002:
        !          18003: 1994-07-14 17:43  millert
        !          18004:
        !          18005:        * sudo.c: added tzset() to load_globals added epasswd (encrypted
        !          18006:          password) global made user dynamically allocated
        !          18007:
        !          18008: 1994-07-14 17:43  millert
        !          18009:
        !          18010:        * configure.in: added tzset test
        !          18011:
        !          18012: 1994-07-14 17:43  millert
        !          18013:
        !          18014:        * config.h.in: added HAVE_TZSET
        !          18015:
        !          18016: 1994-07-14 17:42  millert
        !          18017:
        !          18018:        * check.c: cleaned up encrypted passwd grab somewhat
        !          18019:
        !          18020: 1994-07-14 12:34  millert
        !          18021:
        !          18022:        * configure.in: fixed AFS typo
        !          18023:
        !          18024: 1994-07-14 12:34  millert
        !          18025:
        !          18026:        * INSTALL: added AFS not
        !          18027:
        !          18028: 1994-07-14 12:34  millert
        !          18029:
        !          18030:        * CHANGES: udpated
        !          18031:
        !          18032: 1994-07-14 12:33  millert
        !          18033:
        !          18034:        * logging.c: can now log to both syslog & a file
        !          18035:
        !          18036: 1994-07-14 12:12  millert
        !          18037:
        !          18038:        * sudo.h: added BOTH_LOGS
        !          18039:
        !          18040: 1994-07-14 11:34  millert
        !          18041:
        !          18042:        * CHANGES: updated
        !          18043:
        !          18044: 1994-07-14 11:32  millert
        !          18045:
        !          18046:        * configure.in: --with-AFS
        !          18047:
        !          18048: 1994-07-14 11:32  millert
        !          18049:
        !          18050:        * config.h.in: added HAVE_AFS
        !          18051:
        !          18052: 1994-07-14 11:31  millert
        !          18053:
        !          18054:        * check.c: added afs changes
        !          18055:
        !          18056: 1994-07-14 11:21  millert
        !          18057:
        !          18058:        * sudo.h: removed AFS stuff :-)
        !          18059:
        !          18060: 1994-07-14 11:19  millert
        !          18061:
        !          18062:        * tgetpass.c: include sys/select for AIX
        !          18063:
        !          18064: 1994-07-14 11:17  millert
        !          18065:
        !          18066:        * sudo.h: added AFS
        !          18067:
        !          18068: 1994-07-14 11:16  millert
        !          18069:
        !          18070:        * version.h: ++
        !          18071:
        !          18072: 1994-07-07 14:45  millert
        !          18073:
        !          18074:        * SUPPORTED, CHANGES: updated
        !          18075:
        !          18076: 1994-07-07 14:44  millert
        !          18077:
        !          18078:        * logging.c: can now have MAILER undefined
        !          18079:
        !          18080: 1994-07-07 14:37  millert
        !          18081:
        !          18082:        * INSTALL: new sub-note about MAILER
        !          18083:
        !          18084: 1994-07-06 23:11  millert
        !          18085:
        !          18086:        * sudo.man: added blurb about password timeout
        !          18087:
        !          18088: 1994-07-06 20:52  millert
        !          18089:
        !          18090:        * configure.in: convex c2 changes
        !          18091:
        !          18092: 1994-07-06 20:52  millert
        !          18093:
        !          18094:        * aclocal.m4: took out duplicate define of _CONVEX_SOURCE
        !          18095:
        !          18096: 1994-07-06 20:51  millert
        !          18097:
        !          18098:        * Makefile.in: added OSDEFS
        !          18099:
        !          18100: 1994-07-06 20:46  millert
        !          18101:
        !          18102:        * config.h.in: added spaces
        !          18103:
        !          18104: 1994-07-06 20:08  millert
        !          18105:
        !          18106:        * tgetpass.c: added a goto if fgets fails
        !          18107:
        !          18108: 1994-07-06 20:08  millert
        !          18109:
        !          18110:        * sudo.h: use __hpux not hpux convex c2 stuff
        !          18111:
        !          18112: 1994-07-06 20:08  millert
        !          18113:
        !          18114:        * sudo.c: use __hpux not hpux
        !          18115:
        !          18116: 1994-07-06 20:08  millert
        !          18117:
        !          18118:        * logging.c: convex c2 stuff
        !          18119:
        !          18120: 1994-07-06 20:07  millert
        !          18121:
        !          18122:        * config.h.in: define ansi-ish cpp os defines if non-ansi are
        !          18123:          defined for hpux & convex
        !          18124:
        !          18125: 1994-07-06 20:07  millert
        !          18126:
        !          18127:        * INSTALL: updated to say we support sonvex C2
        !          18128:
        !          18129: 1994-07-06 20:05  millert
        !          18130:
        !          18131:        * check.c: added convex c2 support
        !          18132:
        !          18133: 1994-07-01 12:06  millert
        !          18134:
        !          18135:        * tgetpass.c: no more ioctl never returns NULL uses fgets() and
        !          18136:          select() to timeout
        !          18137:
        !          18138: 1994-06-29 17:04  millert
        !          18139:
        !          18140:        * configure.in: things were testing -n "$GCC" instead of -z "$GCC"
        !          18141:
        !          18142: 1994-06-29 16:39  millert
        !          18143:
        !          18144:        * tgetpass.c: now works + uses fgets()
        !          18145:
        !          18146: 1994-06-28 18:25  millert
        !          18147:
        !          18148:        * tgetpass.c: select doesn't seem to recognize a single '\n' as
        !          18149:          input waiting so we can;t use it, sigh.
        !          18150:
        !          18151: 1994-06-26 16:38  millert
        !          18152:
        !          18153:        * PORTING: updated tgetpass() blurb
        !          18154:
        !          18155: 1994-06-26 16:35  millert
        !          18156:
        !          18157:        * configure.in: added --with-getpass
        !          18158:
        !          18159: 1994-06-26 16:35  millert
        !          18160:
        !          18161:        * Makefile.in: added tgetpass stuff
        !          18162:
        !          18163: 1994-06-26 15:25  millert
        !          18164:
        !          18165:        * tgetpass.c: now uses stdio
        !          18166:
        !          18167: 1994-06-26 15:17  millert
        !          18168:
        !          18169:        * version.h: ++
        !          18170:
        !          18171: 1994-06-24 19:48  millert
        !          18172:
        !          18173:        * PORTING: updated ,.
        !          18174:
        !          18175: 1994-06-24 19:46  millert
        !          18176:
        !          18177:        * config.h.in: added USE_GETPASS && HAVE_C2_SECURITY
        !          18178:
        !          18179: 1994-06-24 19:45  millert
        !          18180:
        !          18181:        * configure.in: fixed a test aded --with-C2 and --with-tgetpass
        !          18182:
        !          18183: 1994-06-24 19:45  millert
        !          18184:
        !          18185:        * check.c: added hpux C2 shit
        !          18186:
        !          18187: 1994-06-24 19:45  millert
        !          18188:
        !          18189:        * Makefile.in: took out tgetpass.*
        !          18190:
        !          18191: 1994-06-24 19:45  millert
        !          18192:
        !          18193:        * INSTALL: added C2 blurb
        !          18194:
        !          18195: 1994-06-13 15:54  millert
        !          18196:
        !          18197:        * configure.in: no termio(s) for ultrix since it is broken
        !          18198:
        !          18199: 1994-06-13 15:41  millert
        !          18200:
        !          18201:        * check.c: added a space (yeah, anal)
        !          18202:
        !          18203: 1994-06-13 15:17  millert
        !          18204:
        !          18205:        * realpath.c, sudo_realpath.c: fixed it (duh, rtfm)
        !          18206:
        !          18207: 1994-06-08 14:34  millert
        !          18208:
        !          18209:        * config.h.in: took out bsd signal stuff for irix
        !          18210:
        !          18211: 1994-06-08 14:26  millert
        !          18212:
        !          18213:        * visudo.c: comments in #endif
        !          18214:
        !          18215: 1994-06-08 14:09  millert
        !          18216:
        !          18217:        * configure.in: don't define BSD signals for irix
        !          18218:
        !          18219: 1994-06-08 12:57  millert
        !          18220:
        !          18221:        * TODO: did some...
        !          18222:
        !          18223: 1994-06-08 12:57  millert
        !          18224:
        !          18225:        * CHANGES: updated
        !          18226:
        !          18227: 1994-06-08 12:56  millert
        !          18228:
        !          18229:        * realpath.c, sudo_realpath.c: took out unneeded code by changing
        !          18230:          where a strings was terminated
        !          18231:
        !          18232: 1994-06-07 19:21  millert
        !          18233:
        !          18234:        * realpath.c, sudo_realpath.c: fix bug where /dirname would return
        !          18235:          NULL
        !          18236:
        !          18237: 1994-06-07 17:40  millert
        !          18238:
        !          18239:        * sudo.h: move __P to config.h
        !          18240:
        !          18241: 1994-06-07 17:40  millert
        !          18242:
        !          18243:        * getcwd.c, getwd.c, realpath.c, sudo_realpath.c: added errno
        !          18244:          definition
        !          18245:
        !          18246: 1994-06-07 17:40  millert
        !          18247:
        !          18248:        * config.h.in: added __P
        !          18249:
        !          18250: 1994-06-07 17:21  millert
        !          18251:
        !          18252:        * config.h.in: added HAVE_FCHDIR
        !          18253:
        !          18254: 1994-06-07 17:18  millert
        !          18255:
        !          18256:        * strdup.c: now include stdio
        !          18257:
        !          18258: 1994-06-07 14:55  millert
        !          18259:
        !          18260:        * realpath.c, sudo_realpath.c: now works if no fchdir
        !          18261:
        !          18262: 1994-06-07 14:55  millert
        !          18263:
        !          18264:        * visudo.c: define SA_RESETHAND to null if not defined
        !          18265:
        !          18266: 1994-06-07 14:54  millert
        !          18267:
        !          18268:        * configure.in: added check & replace
        !          18269:
        !          18270: 1994-06-06 20:05  millert
        !          18271:
        !          18272:        * configure.in: took out -static for nextstep -- it doesn't work
        !          18273:
        !          18274: 1994-06-06 19:59  millert
        !          18275:
        !          18276:        * logging.c: moved #endif to where it belongs
        !          18277:
        !          18278: 1994-06-06 19:54  millert
        !          18279:
        !          18280:        * SUPPORTED: correction
        !          18281:
        !          18282: 1994-06-06 19:42  millert
        !          18283:
        !          18284:        * configure.in: now checks for strdup realpath getcwd bzero
        !          18285:
        !          18286: 1994-06-06 19:31  millert
        !          18287:
        !          18288:        * config.h.in: emulate bzero
        !          18289:
        !          18290: 1994-06-06 16:57  millert
        !          18291:
        !          18292:        * visudo.c: added posic signals
        !          18293:
        !          18294: 1994-06-06 16:57  millert
        !          18295:
        !          18296:        * tgetpass.c: bzero cast
        !          18297:
        !          18298: 1994-06-06 16:57  millert
        !          18299:
        !          18300:        * logging.c: added posix signals
        !          18301:
        !          18302: 1994-06-06 16:56  millert
        !          18303:
        !          18304:        * configure.in: removed BROKEN_GETPASS added  new srcs toreplace
        !          18305:          missing functions
        !          18306:
        !          18307: 1994-06-06 16:56  millert
        !          18308:
        !          18309:        * config.h.in: added posix signal stuff
        !          18310:
        !          18311: 1994-06-06 16:56  millert
        !          18312:
        !          18313:        * Makefile.in: added new srcs
        !          18314:
        !          18315: 1994-06-06 12:53  millert
        !          18316:
        !          18317:        * visudo.c: updated useag
        !          18318:
        !          18319: 1994-06-06 12:39  millert
        !          18320:
        !          18321:        * tgetpass.c: now uses posix signals
        !          18322:
        !          18323: 1994-06-05 20:17  millert
        !          18324:
        !          18325:        * PORTING: updated sto reflect major changes
        !          18326:
        !          18327: 1994-06-05 20:05  millert
        !          18328:
        !          18329:        * TODO, CHANGES: updated
        !          18330:
        !          18331: 1994-06-05 20:04  millert
        !          18332:
        !          18333:        * tgetpass.c: uses sysconf() if available
        !          18334:
        !          18335: 1994-06-05 20:04  millert
        !          18336:
        !          18337:        * sudo.h: added PASSWORD_TIMEOUT + prototypes for new functions
        !          18338:
        !          18339: 1994-06-05 20:04  millert
        !          18340:
        !          18341:        * realpath.c, sudo_realpath.c: for those w/o this in libc
        !          18342:
        !          18343: 1994-06-05 20:03  millert
        !          18344:
        !          18345:        * getcwd.c, getwd.c: Initial revision
        !          18346:
        !          18347: 1994-06-05 20:03  millert
        !          18348:
        !          18349:        * find_path.c: rewrote to use realpath(3) - nis now all my code
        !          18350:
        !          18351: 1994-06-05 20:02  millert
        !          18352:
        !          18353:        * config.h.in: added HAVE_REALPATH
        !          18354:
        !          18355: 1994-06-05 20:02  millert
        !          18356:
        !          18357:        * check.c: now use tgetpass
        !          18358:
        !          18359: 1994-06-05 20:02  millert
        !          18360:
        !          18361:        * Makefile.in: added LIBOBJS use tgetpass.c
        !          18362:
        !          18363: 1994-06-05 18:55  millert
        !          18364:
        !          18365:        * tgetpass.c: works now :-)
        !          18366:
        !          18367: 1994-06-05 18:27  millert
        !          18368:
        !          18369:        * tgetpass.c: Initial revision
        !          18370:
        !          18371: 1994-06-05 17:17  millert
        !          18372:
        !          18373:        * pathnames.h.in: added /dev/tty
        !          18374:
        !          18375: 1994-06-04 17:12  millert
        !          18376:
        !          18377:        * version.h: incremented
        !          18378:
        !          18379: 1994-06-04 15:29  millert
        !          18380:
        !          18381:        * sudo.c: always use getcwd
        !          18382:
        !          18383: 1994-06-04 14:49  millert
        !          18384:
        !          18385:        * config.h.in: added check for getwd
        !          18386:
        !          18387: 1994-06-04 14:48  millert
        !          18388:
        !          18389:        * configure.in: replace strdup & realpath & getcwd if missing
        !          18390:
        !          18391: 1994-06-04 14:47  millert
        !          18392:
        !          18393:        * pathnames.h.in: added _PATH_PWD
        !          18394:
        !          18395: 1994-06-04 14:46  millert
        !          18396:
        !          18397:        * aclocal.m4: added SUDO_PROG_PWD
        !          18398:
        !          18399: 1994-06-04 14:37  millert
        !          18400:
        !          18401:        * realpath.c, sudo_realpath.c, strdup.c: Initial revision
        !          18402:
        !          18403: 1994-06-03 11:31  millert
        !          18404:
        !          18405:        * configure.in: quoted quare brackets
        !          18406:
        !          18407: 1994-06-02 17:49  millert
        !          18408:
        !          18409:        * sudo.c: no need to strdup() a constant
        !          18410:
        !          18411: 1994-06-02 15:45  millert
        !          18412:
        !          18413:        * CHANGES: updated
        !          18414:
        !          18415: 1994-06-02 15:44  millert
        !          18416:
        !          18417:        * sudo.man: added validate
        !          18418:
        !          18419: 1994-06-02 15:42  millert
        !          18420:
        !          18421:        * sudo.c: added -v to usage
        !          18422:
        !          18423: 1994-06-02 15:41  millert
        !          18424:
        !          18425:        * parse.c, sudo.c, sudo.h: added validate_only stuff
        !          18426:
        !          18427: 1994-05-29 21:29  millert
        !          18428:
        !          18429:        * configure.in: now finds sed
        !          18430:
        !          18431: 1994-05-29 21:28  millert
        !          18432:
        !          18433:        * aclocal.m4: $OSREV is now an int
        !          18434:
        !          18435: 1994-05-29 19:13  millert
        !          18436:
        !          18437:        * configure.in: added mtxinu to caser
        !          18438:
        !          18439: 1994-05-29 18:37  millert
        !          18440:
        !          18441:        * sudo.h: added EXEC macro
        !          18442:
        !          18443: 1994-05-29 18:36  millert
        !          18444:
        !          18445:        * sudo.c: now use the EXEC nmacro now only do a gethostbyname() if
        !          18446:          FQDN is set
        !          18447:
        !          18448: 1994-05-29 18:36  millert
        !          18449:
        !          18450:        * logging.c: changed mail_argv[] def now use EXEC() macro
        !          18451:
        !          18452: 1994-05-29 18:35  millert
        !          18453:
        !          18454:        * check.c: took out crypt() definition
        !          18455:
        !          18456: 1994-05-29 17:23  millert
        !          18457:
        !          18458:        * version.h: upped the version
        !          18459:
        !          18460: 1994-05-29 15:52  millert
        !          18461:
        !          18462:        * configure.in: always look for -lnsl
        !          18463:
        !          18464: 1994-05-29 15:29  millert
        !          18465:
        !          18466:        * aclocal.m4: added an echo
        !          18467:
        !          18468: 1994-05-29 15:25  millert
        !          18469:
        !          18470:        * sudo.h: SHORT_MESSAGE is now the default
        !          18471:
        !          18472: 1994-05-29 15:18  millert
        !          18473:
        !          18474:        * config.h.in: fixed typo
        !          18475:
        !          18476: 1994-05-29 01:29  millert
        !          18477:
        !          18478:        * configure.in: added missing AC_DEFINE(SVR4) for solaris
        !          18479:
        !          18480: 1994-05-28 20:42  millert
        !          18481:
        !          18482:        * sudo.man: documented the -v flag
        !          18483:
        !          18484: 1994-05-28 20:34  millert
        !          18485:
        !          18486:        * SUPPORTED: updated
        !          18487:
        !          18488: 1994-05-28 20:31  millert
        !          18489:
        !          18490:        * check.c: proto-ized crypt()
        !          18491:
        !          18492: 1994-05-28 20:28  millert
        !          18493:
        !          18494:        * config.h.in: added LIBSHADOW undef
        !          18495:
        !          18496: 1994-05-28 20:18  millert
        !          18497:
        !          18498:        * configure.in: nwo set OS to be lowercase
        !          18499:
        !          18500: 1994-05-28 19:36  millert
        !          18501:
        !          18502:        * configure.in: now use SUDO_OSTYPE to set $OS
        !          18503:
        !          18504: 1994-05-28 19:36  millert
        !          18505:
        !          18506:        * aclocal.m4: now use uname to determine os
        !          18507:
        !          18508: 1994-05-28 16:23  millert
        !          18509:
        !          18510:        * visudo.c: added prototypes & moved sig handler around
        !          18511:
        !          18512: 1994-05-28 15:13  millert
        !          18513:
        !          18514:        * sudo.h: added prototyppes
        !          18515:
        !          18516: 1994-05-28 15:13  millert
        !          18517:
        !          18518:        * parse.c: added comment
        !          18519:
        !          18520: 1994-05-28 15:12  millert
        !          18521:
        !          18522:        * config.h.in: nwo use _BSD_SIGNALS not _BSD_COMPAT
        !          18523:
        !          18524: 1994-05-28 15:11  millert
        !          18525:
        !          18526:        * check.c, logging.c, sudo.c: added prototypes
        !          18527:
        !          18528: 1994-05-28 15:11  millert
        !          18529:
        !          18530:        * aixcrypt.exp: Initial revision
        !          18531:
        !          18532: 1994-05-28 15:11  millert
        !          18533:
        !          18534:        * Makefile.in: added aixcrypt.exp
        !          18535:
        !          18536: 1994-05-28 13:21  millert
        !          18537:
        !          18538:        * parse.lex, parse.yacc: moved config.h to top of includes
        !          18539:
        !          18540: 1994-05-25 15:48  millert
        !          18541:
        !          18542:        * find_path.c: now don't bitch if get EACCESS (treat like EPERM)
        !          18543:
        !          18544: 1994-05-24 23:08  millert
        !          18545:
        !          18546:        * visudo.c: added -v flag and usage()
        !          18547:
        !          18548: 1994-05-24 23:08  millert
        !          18549:
        !          18550:        * version.h: fixed a typo
        !          18551:
        !          18552: 1994-05-24 23:08  millert
        !          18553:
        !          18554:        * sudo.c: cast Argv to a const for exec added -v flag
        !          18555:
        !          18556: 1994-05-24 23:07  millert
        !          18557:
        !          18558:        * logging.c: mail_argv is now a const
        !          18559:
        !          18560: 1994-05-24 23:07  millert
        !          18561:
        !          18562:        * configure.in: only set RETSIGTYPE if it is not set already
        !          18563:
        !          18564: 1994-05-24 23:07  millert
        !          18565:
        !          18566:        * aclocal.m4: now defines  & STDC_HEADERS for Irix
        !          18567:
        !          18568: 1994-05-24 23:07  millert
        !          18569:
        !          18570:        * Makefile.in: added version.h
        !          18571:
        !          18572: 1994-05-24 21:25  millert
        !          18573:
        !          18574:        * insults.h, sudo.h: prevent multiple inclusion
        !          18575:
        !          18576: 1994-05-24 21:20  millert
        !          18577:
        !          18578:        * version.h: Initial revision
        !          18579:
        !          18580: 1994-05-24 21:09  millert
        !          18581:
        !          18582:        * parse.lex, parse.yacc: now includes config.h
        !          18583:
        !          18584: 1994-05-24 20:54  millert
        !          18585:
        !          18586:        * aclocal.m4: now talks about sunos 4.x
        !          18587:
        !          18588: 1994-05-24 20:23  millert
        !          18589:
        !          18590:        * visudo.c: calls to Exit now pass an arg
        !          18591:
        !          18592: 1994-05-24 18:00  millert
        !          18593:
        !          18594:        * visudo.c: signal handler now takes an int argument
        !          18595:
        !          18596: 1994-05-24 18:00  millert
        !          18597:
        !          18598:        * CHANGES: updated
        !          18599:
        !          18600: 1994-05-24 17:44  millert
        !          18601:
        !          18602:        * sudo.c: ok, the getcwd() is now *really* done as the user
        !          18603:
        !          18604: 1994-05-24 17:44  millert
        !          18605:
        !          18606:        * configure.in: changed AIX STATIC_FLAGS
        !          18607:
        !          18608: 1994-05-24 16:27  millert
        !          18609:
        !          18610:        * aclocal.m4: solaris now defines SVR4
        !          18611:
        !          18612: 1994-05-24 16:18  millert
        !          18613:
        !          18614:        * sudo.h: added cwd and fixed stupid core dump that makes no sense.
        !          18615:          sigh.
        !          18616:
        !          18617: 1994-05-24 16:18  millert
        !          18618:
        !          18619:        * sudo.c: moved getcwd stuff into load_globals
        !          18620:
        !          18621: 1994-05-24 16:18  millert
        !          18622:
        !          18623:        * parse.c: took out externs that are in suod.h
        !          18624:
        !          18625: 1994-05-24 16:18  millert
        !          18626:
        !          18627:        * logging.c: moved cwd into load_globals
        !          18628:
        !          18629: 1994-05-24 16:17  millert
        !          18630:
        !          18631:        * find_path.c: moved cwd stuff
        !          18632:
        !          18633: 1994-05-24 15:55  millert
        !          18634:
        !          18635:        * Makefile.in: fixed make distclean & realclean
        !          18636:
        !          18637: 1994-05-24 12:51  millert
        !          18638:
        !          18639:        * TODO: updated .,
        !          18640:
        !          18641: 1994-05-24 12:51  millert
        !          18642:
        !          18643:        * CHANGES: added solaris changes
        !          18644:
        !          18645: 1994-05-24 12:51  millert
        !          18646:
        !          18647:        * aclocal.m4: added solaris changes, need to rework
        !          18648:
        !          18649: 1994-05-24 12:50  millert
        !          18650:
        !          18651:        * configure.in: cleaned up for solaris
        !          18652:
        !          18653: 1994-05-24 12:13  millert
        !          18654:
        !          18655:        * logging.c: reinstall reapchild signal handler for non-bsd signals
        !          18656:
        !          18657: 1994-05-24 12:03  millert
        !          18658:
        !          18659:        * sudo.h: took out getdtablesize() emulation for HP-UX (no longer
        !          18660:          needed)
        !          18661:
        !          18662: 1994-05-24 12:03  millert
        !          18663:
        !          18664:        * sudo.c: support for HAVE_SYSCONF
        !          18665:
        !          18666: 1994-05-24 12:02  millert
        !          18667:
        !          18668:        * visudo.c: added <fcntl.h> for solaris & reorg'd the includes +
        !          18669:          minor prettying up /
        !          18670:
        !          18671: 1994-05-23 20:26  millert
        !          18672:
        !          18673:        * config.h.in: added HAVE_SYSCONF
        !          18674:
        !          18675: 1994-05-16 18:57  millert
        !          18676:
        !          18677:        * configure.in: now tells you what os you are running /.
        !          18678:
        !          18679: 1994-05-16 18:56  millert
        !          18680:
        !          18681:        * aclocal.m4: took out extra ','
        !          18682:
        !          18683: 1994-05-14 17:56  millert
        !          18684:
        !          18685:        * config.h.in: added _BSD_COMPAT
        !          18686:
        !          18687: 1994-05-14 17:56  millert
        !          18688:
        !          18689:        * aclocal.m4: fixed for irix5
        !          18690:
        !          18691: 1994-05-14 17:55  millert
        !          18692:
        !          18693:        * CHANGES: updated
        !          18694:
        !          18695: 1994-05-14 17:27  millert
        !          18696:
        !          18697:        * sudo.c: uid seinitialized to -2
        !          18698:
        !          18699: 1994-04-28 12:36  millert
        !          18700:
        !          18701:        * sudo.c: now removes LIBPATH for AIX
        !          18702:
        !          18703: 1994-03-12 20:41  millert
        !          18704:
        !          18705:        * configure.in: now uses ufc if it finds it
        !          18706:
        !          18707: 1994-03-12 17:42  millert
        !          18708:
        !          18709:        * sudo.h: no longer define yyval & yylval since yacc does it
        !          18710:
        !          18711: 1994-03-12 17:42  millert
        !          18712:
        !          18713:        * parse.lex: now defines yylval as extenr
        !          18714:
        !          18715: 1994-03-12 17:41  millert
        !          18716:
        !          18717:        * configure.in: BROKEN_GETPASS is now an OPTION
        !          18718:
        !          18719: 1994-03-12 17:41  millert
        !          18720:
        !          18721:        * config.h.in: took out BROKEN_GETPASS
        !          18722:
        !          18723: 1994-03-12 17:20  millert
        !          18724:
        !          18725:        * Makefile.in: took out big comment
        !          18726:
        !          18727: 1994-03-12 16:24  millert
        !          18728:
        !          18729:        * README: updated
        !          18730:
        !          18731: 1994-03-12 16:20  millert
        !          18732:
        !          18733:        * Makefile.in: took out README.beta
        !          18734:
        !          18735: 1994-03-12 16:19  millert
        !          18736:
        !          18737:        * SUPPORTED: Initial revision
        !          18738:
        !          18739: 1994-03-12 16:19  millert
        !          18740:
        !          18741:        * INSTALL: now reference SUPPORTED .,
        !          18742:
        !          18743: 1994-03-12 16:17  millert
        !          18744:
        !          18745:        * config.h.in: now check for convex OR __convex__
        !          18746:
        !          18747: 1994-03-12 16:16  millert
        !          18748:
        !          18749:        * aclocal.m4: now check for convex or __convex__
        !          18750:
        !          18751: 1994-03-12 16:15  millert
        !          18752:
        !          18753:        * Makefile.in: added dist target
        !          18754:
        !          18755: 1994-03-12 15:19  millert
        !          18756:
        !          18757:        * aclocal.m4: use __convex__
        !          18758:
        !          18759: 1994-03-12 14:33  millert
        !          18760:
        !          18761:        * find_path.c: now use _S_* stat stuff to be ansi-like
        !          18762:
        !          18763: 1994-03-12 14:11  millert
        !          18764:
        !          18765:        * INSTALL: updated for configure directions
        !          18766:
        !          18767: 1994-03-12 14:05  millert
        !          18768:
        !          18769:        * Makefile.in: distclean now removes config.h and pathnames.h
        !          18770:
        !          18771: 1994-03-12 14:03  millert
        !          18772:
        !          18773:        * CHANGES: updated
        !          18774:
        !          18775: 1994-03-12 14:00  millert
        !          18776:
        !          18777:        * TODO: fixed typoe
        !          18778:
        !          18779: 1994-03-12 13:57  millert
        !          18780:
        !          18781:        * Makefile.in, visudo.c: updated version
        !          18782:
        !          18783: 1994-03-12 13:57  millert
        !          18784:
        !          18785:        * config.h.in, pathnames.h.in: added copyright header
        !          18786:
        !          18787: 1994-03-12 13:55  millert
        !          18788:
        !          18789:        * check.c, find_path.c, insults.h, logging.c, parse.c, parse.lex,
        !          18790:          parse.yacc, sudo.c, sudo.h: udpated version
        !          18791:
        !          18792: 1994-03-12 13:39  millert
        !          18793:
        !          18794:        * visudo.c: udpated to use configure + pathnames.h
        !          18795:
        !          18796: 1994-03-12 13:37  millert
        !          18797:
        !          18798:        * Makefile.in, config.h.in, configure.in, aclocal.m4: updated
        !          18799:
        !          18800: 1994-03-12 13:37  millert
        !          18801:
        !          18802:        * sudo.h: now works with configure
        !          18803:
        !          18804: 1994-03-12 13:36  millert
        !          18805:
        !          18806:        * check.c, find_path.c, getpass.c, logging.c, parse.c, sudo.c:
        !          18807:          updated to work with configure + pathnames.h
        !          18808:
        !          18809: 1994-03-12 10:40  millert
        !          18810:
        !          18811:        * Makefile.in: added LEXLIB
        !          18812:
        !          18813: 1994-03-10 03:18  millert
        !          18814:
        !          18815:        * COPYING: updated gnu general licence to versio 2
        !          18816:
        !          18817: 1994-03-10 02:44  millert
        !          18818:
        !          18819:        * pathnames.h.in, config.h.in: Initial revision
        !          18820:
        !          18821: 1994-03-10 01:43  millert
        !          18822:
        !          18823:        * sudo.h: changed to work with configure
        !          18824:
        !          18825: 1994-03-09 18:51  millert
        !          18826:
        !          18827:        * Makefile.in, aclocal.m4, configure.in: Initial revision
        !          18828:
        !          18829: 1994-03-09 17:36  millert
        !          18830:
        !          18831:        * visudo.c: now uses defines used by configure
        !          18832:
        !          18833: 1994-03-01 16:31  millert
        !          18834:
        !          18835:        * find_path.c: sudo won't bitch about EPERM now, for real
        !          18836:
        !          18837: 1994-02-28 00:36  millert
        !          18838:
        !          18839:        * logging.c: renamed exec_argv to eliminate a libc name clash with
        !          18840:          ksros
        !          18841:
        !          18842: 1994-02-28 00:28  millert
        !          18843:
        !          18844:        * CHANGES: corrected
        !          18845:
        !          18846: 1994-02-28 00:27  millert
        !          18847:
        !          18848:        * logging.c, sudo.c, sudo.h: execve -> execv
        !          18849:
        !          18850: 1994-02-27 23:27  millert
        !          18851:
        !          18852:        * TODO: upated
        !          18853:
        !          18854: 1994-02-27 23:19  millert
        !          18855:
        !          18856:        * PORTING: added 2 mroe items
        !          18857:
        !          18858: 1994-02-27 23:12  millert
        !          18859:
        !          18860:        * CHANGES: updated
        !          18861:
        !          18862: 1994-02-27 23:11  millert
        !          18863:
        !          18864:        * sudo.h: added UMASK and mode_t declaration
        !          18865:
        !          18866: 1994-02-27 23:11  millert
        !          18867:
        !          18868:        * sudo.c: added UMASK
        !          18869:
        !          18870: 1994-02-27 20:55  millert
        !          18871:
        !          18872:        * logging.c: now opens log file with mode 077
        !          18873:
        !          18874: 1994-02-27 20:55  millert
        !          18875:
        !          18876:        * check.c: saved current umask ans restores it
        !          18877:
        !          18878: 1994-02-27 20:36  millert
        !          18879:
        !          18880:        * sudo.h: added MAXLOGFILELEN
        !          18881:
        !          18882: 1994-02-27 20:35  millert
        !          18883:
        !          18884:        * logging.c: split long log lines.  FOr syslog, split into multiple
        !          18885:          entries, for a log file, indent the extra for readability
        !          18886:
        !          18887: 1994-02-27 17:22  millert
        !          18888:
        !          18889:        * CHANGES: added changes
        !          18890:
        !          18891: 1994-02-27 17:18  millert
        !          18892:
        !          18893:        * sudo.h: MAXLOGLEN & MAXSYSLOGLEN are now different (as they
        !          18894:          should be)
        !          18895:
        !          18896: 1994-02-25 16:04  millert
        !          18897:
        !          18898:        * TODO: added input from Brett M Hogden <hogden@rge.com>
        !          18899:
        !          18900: 1994-02-16 13:35  millert
        !          18901:
        !          18902:        * sudo.c: added rmenv() to remove stuff from environ.  can now uses
        !          18903:          execvp() OR execve() becuase of this.
        !          18904:
        !          18905: 1994-02-16 13:35  millert
        !          18906:
        !          18907:        * logging.c: now uses execvp() OR execve()
        !          18908:
        !          18909: 1994-02-16 13:31  millert
        !          18910:
        !          18911:        * sudo.h: added USE_EXECVE
        !          18912:
        !          18913: 1994-02-16 13:27  millert
        !          18914:
        !          18915:        * sudo.h: added environ
        !          18916:
        !          18917: 1994-02-16 12:53  millert
        !          18918:
        !          18919:        * find_path.c: now ignore EPERM
        !          18920:
        !          18921: 1994-02-15 23:52  millert
        !          18922:
        !          18923:        * sudo.h: moved some func decls out of sudo.h and into sudo.c as
        !          18924:          statics /.
        !          18925:
        !          18926: 1994-02-15 23:52  millert
        !          18927:
        !          18928:        * CHANGES: updated
        !          18929:
        !          18930: 1994-02-15 23:40  millert
        !          18931:
        !          18932:        * sudo.h: took out Envp
        !          18933:
        !          18934: 1994-02-14 12:28  millert
        !          18935:
        !          18936:        * BUGS: Initial revision
        !          18937:
        !          18938: 1994-02-10 14:29  millert
        !          18939:
        !          18940:        * sudo.c, sudo.h, CHANGES: added SECURE_PATH
        !          18941:
        !          18942: 1994-02-10 14:05  millert
        !          18943:
        !          18944:        * sudo.h: added SECURE_PATH
        !          18945:
        !          18946: 1994-02-10 13:50  millert
        !          18947:
        !          18948:        * INSTALL: added sample.sudoers note
        !          18949:
        !          18950: 1994-02-10 13:47  millert
        !          18951:
        !          18952:        * sudoers: Initial revision
        !          18953:
        !          18954: 1994-02-09 14:54  millert
        !          18955:
        !          18956:        * find_path.c: fixed typo
        !          18957:
        !          18958: 1994-02-08 23:06  millert
        !          18959:
        !          18960:        * PORTING: took out SAVED_UID garbage
        !          18961:
        !          18962: 1994-02-08 22:55  millert
        !          18963:
        !          18964:        * INSTALL: mentioned HAL
        !          18965:
        !          18966: 1994-02-08 22:50  millert
        !          18967:
        !          18968:        * sudo.h: added HAL line
        !          18969:
        !          18970: 1994-02-08 22:48  millert
        !          18971:
        !          18972:        * insults.h: added HAL insults
        !          18973:
        !          18974: 1994-02-08 22:48  millert
        !          18975:
        !          18976:        * TODO: updated
        !          18977:
        !          18978: 1994-02-08 22:02  millert
        !          18979:
        !          18980:        * logging.c: more verbose error if mailer not found
        !          18981:
        !          18982: 1994-02-08 22:02  millert
        !          18983:
        !          18984:        * check.c: now do getpwent as root for soem shadow password systems
        !          18985:          (bsdi)
        !          18986:
        !          18987: 1994-02-08 13:22  millert
        !          18988:
        !          18989:        * sudo.h: took out SAVED_UID garbade
        !          18990:
        !          18991: 1994-02-08 13:21  millert
        !          18992:
        !          18993:        * sudo.c: took out SAVED_UID garbage since it don't work
        !          18994:
        !          18995: 1994-02-06 17:43  millert
        !          18996:
        !          18997:        * README: updated
        !          18998:
        !          18999: 1994-02-06 17:40  millert
        !          19000:
        !          19001:        * insults.h: added a missing space :-)
        !          19002:
        !          19003: 1994-02-05 19:48  millert
        !          19004:
        !          19005:        * sudo.c, sudo.h: took out multimax cruft
        !          19006:
        !          19007: 1994-02-05 19:30  millert
        !          19008:
        !          19009:        * INSTALL: minor update
        !          19010:
        !          19011: 1994-02-05 19:30  millert
        !          19012:
        !          19013:        * PORTING: finished
        !          19014:
        !          19015: 1994-02-05 19:19  millert
        !          19016:
        !          19017:        * sudo.c: fixed a typo + indentation
        !          19018:
        !          19019: 1994-02-05 18:43  millert
        !          19020:
        !          19021:        * sudo.h: took outumoved some defines to the config file ,.  ,.
        !          19022:
        !          19023: 1994-02-05 15:17  millert
        !          19024:
        !          19025:        * PORTING: Initial revision
        !          19026:
        !          19027: 1994-02-05 15:17  millert
        !          19028:
        !          19029:        * TODO: did #6
        !          19030:
        !          19031: 1994-02-05 15:16  millert
        !          19032:
        !          19033:        * sudo.h: added HAS_SAVED_UID
        !          19034:
        !          19035: 1994-02-05 15:16  millert
        !          19036:
        !          19037:        * sudo.c: put back AIX cruft
        !          19038:
        !          19039: 1994-02-03 00:44  millert
        !          19040:
        !          19041:        * sudo.c: aix changes
        !          19042:
        !          19043: 1994-02-02 01:31  millert
        !          19044:
        !          19045:        * CHANGES: updated
        !          19046:
        !          19047: 1994-02-02 01:30  millert
        !          19048:
        !          19049:        * check.c, logging.c, parse.c, sudo.c, sudo.h: now is only root
        !          19050:          when abs necesary
        !          19051:
        !          19052: 1994-02-01 22:21  millert
        !          19053:
        !          19054:        * check.c: added missing %s\n
        !          19055:
        !          19056: 1994-01-31 02:06  millert
        !          19057:
        !          19058:        * install-sh: Initial revision
        !          19059:
        !          19060: 1994-01-31 01:58  millert
        !          19061:
        !          19062:        * CHANGES, TODO: updated
        !          19063:
        !          19064: 1994-01-31 01:56  millert
        !          19065:
        !          19066:        * sudo.c: now removed _RLD_* for alphas
        !          19067:
        !          19068: 1994-01-31 01:50  millert
        !          19069:
        !          19070:        * INSTALL: updated for new config scheme
        !          19071:
        !          19072: 1994-01-30 19:42  millert
        !          19073:
        !          19074:        * find_path.c: more verbose eror messages
        !          19075:
        !          19076: 1994-01-27 14:08  millert
        !          19077:
        !          19078:        * TODO: now have solaris
        !          19079:
        !          19080: 1994-01-27 14:07  millert
        !          19081:
        !          19082:        * sudo.h: define __svr4__ for SOLARIS
        !          19083:
        !          19084: 1994-01-27 14:07  millert
        !          19085:
        !          19086:        * check.c: added svr4 junk for shadow pws for solaris 2.x
        !          19087:
        !          19088: 1994-01-27 13:19  millert
        !          19089:
        !          19090:        * check.c, sudo.c: took out setuid(0) and setreuid(udi) garbage.
        !          19091:          Its not needed since we start out setuid with the correct perms.
        !          19092:
        !          19093: 1994-01-26 19:51  millert
        !          19094:
        !          19095:        * check.c, sudo.c, sudo.h: now use setreuid()
        !          19096:
        !          19097: 1994-01-26 18:58  millert
        !          19098:
        !          19099:        * sudo.man: revised AUTHORS secrtion & added ENV_EDITOR stuff to
        !          19100:          VARIABLES sectoin
        !          19101:
        !          19102: 1994-01-26 18:52  millert
        !          19103:
        !          19104:        * visudo.c: now uses ENV_EDITOR if you want to use the EDITOR envar
        !          19105:
        !          19106: 1994-01-26 18:52  millert
        !          19107:
        !          19108:        * sudo.h: now uses ENV_EDITOR if you want to use the EDITOR envar
        !          19109:          >> .
        !          19110:
        !          19111: 1993-12-07 01:33  millert
        !          19112:
        !          19113:        * README: minor update + spell fix
        !          19114:
        !          19115: 1993-12-07 01:33  millert
        !          19116:
        !          19117:        * INSTALL: rewrote most of this
        !          19118:
        !          19119: 1993-12-07 01:13  millert
        !          19120:
        !          19121:        * sudo.h: added all options that are in the Makefile
        !          19122:
        !          19123: 1993-12-07 00:23  millert
        !          19124:
        !          19125:        * getpass.c: now use USE_TERMIO #define for sgi & hpux
        !          19126:
        !          19127: 1993-12-06 23:19  millert
        !          19128:
        !          19129:        * TODO: todo: posix sigs
        !          19130:
        !          19131: 1993-12-06 01:12  millert
        !          19132:
        !          19133:        * check.c, find_path.c: always include strings.h
        !          19134:
        !          19135: 1993-12-05 20:34  millert
        !          19136:
        !          19137:        * visudo.c: added STATICEDITOR
        !          19138:
        !          19139: 1993-12-05 20:30  millert
        !          19140:
        !          19141:        * sudo.h: sgi has vi in /usr/bin too
        !          19142:
        !          19143: 1993-12-05 20:23  millert
        !          19144:
        !          19145:        * sudo.man: added VISUAL
        !          19146:
        !          19147: 1993-12-02 22:20  millert
        !          19148:
        !          19149:        * sudo.h: sue /usr/bin/vi on some systems
        !          19150:
        !          19151: 1993-12-02 22:19  millert
        !          19152:
        !          19153:        * sudo.c: fixed warning (include strings.h)
        !          19154:
        !          19155: 1993-12-02 22:06  millert
        !          19156:
        !          19157:        * sudo.man: added John_Rouillard@dl5000.bc.edu's changes (new
        !          19158:          features)
        !          19159:
        !          19160: 1993-12-02 21:38  millert
        !          19161:
        !          19162:        * CHANGES: changes from John_Rouillard@dl5000.bc.edu
        !          19163:
        !          19164: 1993-12-02 21:35  millert
        !          19165:
        !          19166:        * visudo.c: added EDITOR envar
        !          19167:
        !          19168: 1993-12-02 21:34  millert
        !          19169:
        !          19170:        * check.c, find_path.c, parse.c, sudo.c: added patches from
        !          19171:          John_Rouillard      directory spec  uses EDITOR
        !          19172:
        !          19173: 1993-12-01 19:32  millert
        !          19174:
        !          19175:        * getpass.c: added flush for hpux
        !          19176:
        !          19177: 1993-11-30 13:37  millert
        !          19178:
        !          19179:        * sudo.c: no longer assume malloc returns a char *
        !          19180:
        !          19181: 1993-11-29 20:35  millert
        !          19182:
        !          19183:        * sudo.c: alpha change to remove LD_-like thing fixed SHLIB_PATH
        !          19184:          stuff -- now gets removed correctly
        !          19185:
        !          19186: 1993-11-29 19:31  millert
        !          19187:
        !          19188:        * sudo.h: added STD_HEADERS macro
        !          19189:
        !          19190: 1993-11-29 19:14  millert
        !          19191:
        !          19192:        * sudo.c: now uses STD_HEADERS macor for ansi
        !          19193:
        !          19194: 1993-11-29 19:14  millert
        !          19195:
        !          19196:        * find_path.c: now uses STD_HEADERS macro
        !          19197:
        !          19198: 1993-11-29 19:13  millert
        !          19199:
        !          19200:        * check.c: niceties for C compiler bitches -- no real change
        !          19201:
        !          19202: 1993-11-29 13:04  millert
        !          19203:
        !          19204:        * visudo.c: now doesn't fclose a file never opened.
        !          19205:
        !          19206: 1993-11-28 16:35  millert
        !          19207:
        !          19208:        * sudo.man: added visudo line
        !          19209:
        !          19210: 1993-11-28 16:31  millert
        !          19211:
        !          19212:        * sudo.man: added error stuff added me in there...
        !          19213:
        !          19214: 1993-11-28 03:12  millert
        !          19215:
        !          19216:        * CHANGES: noted insults
        !          19217:
        !          19218: 1993-11-28 03:01  millert
        !          19219:
        !          19220:        * INSTALL: added blurb about reading stuff
        !          19221:
        !          19222: 1993-11-28 03:00  millert
        !          19223:
        !          19224:        * sudo.h: added insults
        !          19225:
        !          19226: 1993-11-28 03:00  millert
        !          19227:
        !          19228:        * insults.h: corrected somments and removed newlines
        !          19229:
        !          19230: 1993-11-28 03:00  millert
        !          19231:
        !          19232:        * check.c: now uses insults
        !          19233:
        !          19234: 1993-11-28 02:45  millert
        !          19235:
        !          19236:        * insults.h: Initial revision
        !          19237:
        !          19238: 1993-11-27 19:46  millert
        !          19239:
        !          19240:        * INSTALL: added dec syslog note
        !          19241:
        !          19242: 1993-11-27 19:25  millert
        !          19243:
        !          19244:        * sample.sudoers: added real stuff in there
        !          19245:
        !          19246: 1993-11-27 19:24  millert
        !          19247:
        !          19248:        * TODO: added a todo
        !          19249:
        !          19250: 1993-11-27 19:10  millert
        !          19251:
        !          19252:        * TODO: added one
        !          19253:
        !          19254: 1993-11-27 18:59  millert
        !          19255:
        !          19256:        * sample.sudoers: Initial revision
        !          19257:
        !          19258: 1993-11-27 18:59  millert
        !          19259:
        !          19260:        * sudo.man: updated with changes
        !          19261:
        !          19262: 1993-11-27 18:52  millert
        !          19263:
        !          19264:        * sudo.man: Initial revision
        !          19265:
        !          19266: 1993-11-27 18:48  millert
        !          19267:
        !          19268:        * CHANGES, COPYING, INSTALL, README, TODO, indent.pro: Initial
        !          19269:          revision
        !          19270:
        !          19271: 1993-11-27 18:46  millert
        !          19272:
        !          19273:        * visudo.c: updated version number and took out jeff's old addr
        !          19274:          since it is no good
        !          19275:
        !          19276: 1993-11-27 18:42  millert
        !          19277:
        !          19278:        * sudo.h, check.c, find_path.c, logging.c, parse.c, parse.lex,
        !          19279:          parse.yacc, sudo.c: updated version number and took out jeff's
        !          19280:          email (since it is invalid)
        !          19281:
        !          19282: 1993-10-28 09:36  millert
        !          19283:
        !          19284:        * check.c: added fflush()
        !          19285:
        !          19286: 1993-10-22 20:46  millert
        !          19287:
        !          19288:        * find_path.c: now return NULL instead pfof exiting for
        !          19289:          nopnn-fatal errors
        !          19290:
        !          19291: 1993-10-21 16:57  millert
        !          19292:
        !          19293:        * check.c: new banner
        !          19294:
        !          19295: 1993-10-21 16:42  millert
        !          19296:
        !          19297:        * parse.lex: now sudo.h gets included first
        !          19298:
        !          19299: 1993-10-17 20:31  millert
        !          19300:
        !          19301:        * parse.lex: now can use flex
        !          19302:
        !          19303: 1993-10-17 20:31  millert
        !          19304:
        !          19305:        * sudo.h: linux patch
        !          19306:
        !          19307: 1993-10-17 20:30  millert
        !          19308:
        !          19309:        * sudo.c: hpux 9 fix, removes SHLIB_PATH linux patch
        !          19310:
        !          19311: 1993-10-17 20:30  millert
        !          19312:
        !          19313:        * check.c: linux diff
        !          19314:
        !          19315: 1993-10-15 16:03  millert
        !          19316:
        !          19317:        * find_path.c: stat now ignores EINVAL
        !          19318:
        !          19319: 1993-10-05 21:48  millert
        !          19320:
        !          19321:        * find_path.c, sudo.c: now declare strdup as extern
        !          19322:
        !          19323: 1993-10-04 15:23  millert
        !          19324:
        !          19325:        * visudo.c: reformatted with indent + by hand
        !          19326:
        !          19327: 1993-10-04 15:10  millert
        !          19328:
        !          19329:        * check.c, find_path.c, getpass.c, logging.c, parse.c, sudo.c,
        !          19330:          sudo.h: used indent to "fix" coding style
        !          19331:
        !          19332: 1993-10-03 20:12  millert
        !          19333:
        !          19334:        * find_path.c: now checks '.' or '.' or '' in PATH -- but does it
        !          19335:          LAST should maybe move the code that does this into the loop
        !          19336:          body.  makes it messier tho.  hmmm.
        !          19337:
        !          19338: 1993-09-08 11:53  millert
        !          19339:
        !          19340:        * find_path.c: redid the fix for non-executable files in an easier
        !          19341:          to read way plus some minor aethetic changes
        !          19342:
        !          19343: 1993-09-08 11:39  millert
        !          19344:
        !          19345:        * find_path.c: fixed bug with non-executable tings of same name in
        !          19346:          path introduced by checkig errno after stat(2).
        !          19347:
        !          19348: 1993-09-05 10:02  millert
        !          19349:
        !          19350:        * sudo.c: fixed off by one error
        !          19351:
        !          19352: 1993-09-05 09:55  millert
        !          19353:
        !          19354:        * find_path.c: now handles decending below '/' correctly
        !          19355:
        !          19356: 1993-09-05 08:35  millert
        !          19357:
        !          19358:        * sudo.c: now actually builds Envp instead of munging envp
        !          19359:
        !          19360: 1993-09-04 15:42  millert
        !          19361:
        !          19362:        * parse.yacc: now  includes sys/param.h
        !          19363:
        !          19364: 1993-09-04 15:41  millert
        !          19365:
        !          19366:        * visudo.c: now includes sys/param.h
        !          19367:
        !          19368: 1993-09-04 15:30  millert
        !          19369:
        !          19370:        * sudo.h: fixed ifndef -> ifdef
        !          19371:
        !          19372: 1993-09-04 15:19  millert
        !          19373:
        !          19374:        * qualify.c: make more like find_path.c
        !          19375:
        !          19376: 1993-09-04 15:18  millert
        !          19377:
        !          19378:        * find_path.c: rewritten by millert
        !          19379:
        !          19380: 1993-09-04 15:17  millert
        !          19381:
        !          19382:        * sudo.h: fixed MAXCOMMANDLENGTH now uses USE_CWD and NEED_STRDUP
        !          19383:          added info about new defines in the comment
        !          19384:
        !          19385: 1993-09-04 15:15  millert
        !          19386:
        !          19387:        * logging.c: now uses USE_CWD
        !          19388:
        !          19389: 1993-09-04 14:10  millert
        !          19390:
        !          19391:        * sudo.h: added delc for clean_envp() and Envp
        !          19392:
        !          19393: 1993-09-04 14:09  millert
        !          19394:
        !          19395:        * sudo.c: now rips LD_* env vars out of envp and passed sanitized
        !          19396:          Envp to exec
        !          19397:
        !          19398: 1993-09-04 14:09  millert
        !          19399:
        !          19400:        * logging.c: now uses execve()
        !          19401:
        !          19402: 1993-09-04 14:08  millert
        !          19403:
        !          19404:        * find_path.c: ENOTDIR is ok now too (in case part of the path is
        !          19405:          bogus)
        !          19406:
        !          19407: 1993-09-04 08:17  millert
        !          19408:
        !          19409:        * qualify.c: now works correctly (ttaltotal rewrite)
        !          19410:
        !          19411: 1993-09-04 07:59  millert
        !          19412:
        !          19413:        * parse.lex: now includes sys/param.h didn't match trailing / --
        !          19414:          fix from rouilj@cs.umb.edu
        !          19415:
        !          19416: 1993-06-11 18:04  millert
        !          19417:
        !          19418:        * sudo.c: moved around the #ifndef _AIX
        !          19419:
        !          19420: 1993-06-11 18:03  millert
        !          19421:
        !          19422:        * check.c, logging.c, parse.c: Initial revision
        !          19423:
        !          19424: 1993-03-20 07:57  millert
        !          19425:
        !          19426:        * qualify.c: Initial revision
        !          19427:
        !          19428: 1993-03-13 15:09  millert
        !          19429:
        !          19430:        * find_path.c: now works if you do sudo bin/test
        !          19431:
        !          19432: 1993-03-13 14:20  millert
        !          19433:
        !          19434:        * find_path.c: works
        !          19435:
        !          19436: 1993-03-02 18:28  millert
        !          19437:
        !          19438:        * sudo.h: Initial revision
        !          19439:
        !          19440: 1993-03-02 11:35  millert
        !          19441:
        !          19442:        * visudo.c: Initial revision
        !          19443:
        !          19444: 1993-03-02 11:32  millert
        !          19445:
        !          19446:        * parse.lex, parse.yacc: Initial revision
        !          19447:
        !          19448: 1993-02-16 13:24  millert
        !          19449:
        !          19450:        * sudo.c: took out errno.h
        !          19451:
        !          19452: 1993-02-16 13:22  millert
        !          19453:
        !          19454:        * sudo.c: now spews error if exec fails and exits with -1
        !          19455:
        !          19456: 1993-02-16 12:07  millert
        !          19457:
        !          19458:        * sudo.c: Initial revision
        !          19459:
        !          19460: 1993-02-15 22:27  millert
        !          19461:
        !          19462:        * find_path.c: now only execs files with (an) executable bit set.
        !          19463:
        !          19464: 1993-02-15 22:01  millert
        !          19465:
        !          19466:        * find_path.c: Initial revision
        !          19467:
        !          19468: 1993-02-15 14:32  millert
        !          19469:
        !          19470:        * getpass.c: added nice comment
        !          19471:
        !          19472: 1993-02-15 14:19  millert
        !          19473:
        !          19474:        * getpass.c: now works on sgi's
        !          19475:
        !          19476: 1993-02-15 13:57  millert
        !          19477:
        !          19478:        * getpass.c: Initial revision
        !          19479: