Apply by doing: cd /usr/src patch -p0 < 018_sudo.patch The rebuild sudo: usr.bin/sudo make obj make depend make make install Index: usr.bin/sudo/parse.yacc =================================================================== RCS file: /home/cvs/openbsd/src/usr.bin/sudo/parse.yacc,v retrieving revision 1.9 diff -u -r1.9 parse.yacc --- usr.bin/sudo/parse.yacc 19 Apr 2003 21:57:17 -0000 1.9 +++ usr.bin/sudo/parse.yacc 20 Jun 2005 14:16:49 -0000 @@ -652,10 +652,6 @@ } $$ = TRUE; - - if (safe_cmnd) - free(safe_cmnd); - safe_cmnd = estrdup(user_cmnd); } | ALIAS { aliasinfo *aip; Index: usr.bin/sudo/sudo.c =================================================================== RCS file: /home/cvs/openbsd/src/usr.bin/sudo/sudo.c,v retrieving revision 1.22 diff -u -r1.22 sudo.c --- usr.bin/sudo/sudo.c 12 Jan 2004 19:13:21 -0000 1.22 +++ usr.bin/sudo/sudo.c 20 Jun 2005 14:16:49 -0000 @@ -296,6 +296,8 @@ if (runas_pw == NULL) log_error(NO_MAIL|MSG_ONLY, "no passwd entry for %s!", *user_runas); } + if (safe_cmnd == NULL) + safe_cmnd = user_cmnd; /* * Look up the timestamp dir owner if one is specified. @@ -378,14 +380,6 @@ else if (sudo_mode == MODE_LIST) { list_matches(); exit(0); - } - - /* This *must* have been set if we got a match but... */ - if (safe_cmnd == NULL) { - log_error(MSG_ONLY, - "internal error, safe_cmnd never got set for %s; %s", - user_cmnd, - "please report this error at http://courtesan.com/sudo/bugs/"); } /* Override user's umask if configured to do so. */ Index: usr.bin/sudo/version.h =================================================================== RCS file: /home/cvs/openbsd/src/usr.bin/sudo/version.h,v retrieving revision 1.23 diff -u -r1.23 version.h --- usr.bin/sudo/version.h 8 May 2003 20:55:05 -0000 1.23 +++ usr.bin/sudo/version.h 20 Jun 2005 14:17:21 -0000 @@ -41,6 +41,6 @@ #ifndef _SUDO_VERSION_H #define _SUDO_VERSION_H -static const char version[] = "1.6.7p5"; +static const char version[] = "1.6.7p5+race_fix"; #endif /* _SUDO_VERSION_H */