diff --git a/MANIFEST b/MANIFEST index 395b02658..228a59812 100644 --- a/MANIFEST +++ b/MANIFEST @@ -761,6 +761,8 @@ plugins/sudoers/regress/cvtsudoers/test33.out.ok plugins/sudoers/regress/cvtsudoers/test33.sh plugins/sudoers/regress/cvtsudoers/test34.out.ok plugins/sudoers/regress/cvtsudoers/test34.sh +plugins/sudoers/regress/cvtsudoers/test35.out.ok +plugins/sudoers/regress/cvtsudoers/test35.sh plugins/sudoers/regress/cvtsudoers/test4.out.ok plugins/sudoers/regress/cvtsudoers/test4.sh plugins/sudoers/regress/cvtsudoers/test5.out.ok diff --git a/plugins/sudoers/cvtsudoers_merge.c b/plugins/sudoers/cvtsudoers_merge.c index 044c1354f..2a8d5a702 100644 --- a/plugins/sudoers/cvtsudoers_merge.c +++ b/plugins/sudoers/cvtsudoers_merge.c @@ -659,7 +659,7 @@ defaults_has_conflict(struct defaults *def, while ((parse_tree = TAILQ_NEXT(parse_tree, entries)) != NULL) { struct defaults *d; TAILQ_FOREACH(d, &parse_tree->defaults, entries) { - if (defaults_var_matches(def, d, true)) { + if (defaults_var_matches(def, d, parse_tree->lhost == NULL)) { if (!defaults_val_matches(def, d)) { log_warnx(U_("%s:%d:%d: conflicting Defaults entry \"%s\" host-specific in %s:%d:%d"), def->file, def->line, def->column, def->var, diff --git a/plugins/sudoers/regress/cvtsudoers/test35.out.ok b/plugins/sudoers/regress/cvtsudoers/test35.out.ok new file mode 100644 index 000000000..80bb99884 --- /dev/null +++ b/plugins/sudoers/regress/cvtsudoers/test35.out.ok @@ -0,0 +1,15 @@ +Defaults@xerxes log_output +Defaults@xyzzy log_output +Defaults!/usr/bin/sudoreplay !log_output +Defaults!/usr/local/bin/sudoreplay !log_output +Defaults!REBOOT !log_output + +User_Alias ADMINS = millert, dowdy, mikef +Cmnd_Alias PROCESSES = /usr/bin/nice, /bin/kill, /usr/bin/renice,\ + /usr/bin/pkill, /usr/bin/top +Cmnd_Alias REBOOT = /sbin/halt, /sbin/reboot, /sbin/poweroff +Host_Alias WEBSERVERS = www1, www2, www3 +Host_Alias WEBSERVERS_1 = www1, www2, www3, www5 +Host_Alias WEBSERVERS_2 = www1, www2, www3, www4 + +root ALL = (ALL) ALL diff --git a/plugins/sudoers/regress/cvtsudoers/test35.sh b/plugins/sudoers/regress/cvtsudoers/test35.sh new file mode 100644 index 000000000..bec0a84e1 --- /dev/null +++ b/plugins/sudoers/regress/cvtsudoers/test35.sh @@ -0,0 +1,8 @@ +#!/bin/sh +# +# Test cvtsudoers merge +# + +: ${CVTSUDOERS=cvtsudoers} + +$CVTSUDOERS -f sudoers -l /dev/null xerxes:${TESTDIR}/sudoers1 xyzzy:${TESTDIR}/sudoers2 ${TESTDIR}/sudoers3