Todd C. Miller
52e3fcc795
Free struct sudo_user in sudoers_policy_close() and sudoers_cleanup().
...
Also, do not NULL out the close function if NO_LEAKS is defined.
2021-02-15 08:29:47 -07:00
Todd C. Miller
7f3c670a13
Fix sudoers garbage collection and run it in policy fuzzer.
2021-02-14 14:01:31 -07:00
Todd C. Miller
561740cd54
Always dynamically allocate user_role, user_type, user_privs, user_limitprivs
2021-02-14 07:47:48 -07:00
Todd C. Miller
776c57a81e
Move create_admin_success_flag() to timestamp.c.
2021-02-13 15:48:21 -07:00
Todd C. Miller
651a225a4a
The push() function was not updating the size after reallocating.
2021-02-13 12:54:22 -07:00
Todd C. Miller
df2931588a
Fuzz sudoers policy module API.
...
Includes a test case to reproduce CVE-2021-3156.
2021-02-12 15:36:18 -07:00
Todd C. Miller
aae168c485
Make open_sudoers() always return NULL like fuzz_sudoers.c
2021-02-08 14:20:40 -07:00
Todd C. Miller
19d8d4a549
Update *.toke.ok now that lexer doesn't call sudoerserror() itself.
2021-02-08 13:46:33 -07:00
Todd C. Miller
63a3f62547
Add fuzz Makefile target and run fuzzer corpus in make check.
2021-02-08 04:56:17 -07:00
Todd C. Miller
30d9497eb6
Add stub library that just feeds files to the fuzzing target.
...
This will allow the fuzzers to be run as part of "make check".
2021-02-07 15:43:51 -07:00
Todd C. Miller
a72d743ec8
Fall back to a temp file if fmemopen() is not available().
2021-02-07 13:56:15 -07:00
Todd C. Miller
4480e26972
Build (but don't run) fuzzers as part of "make check".
...
Uses a stub to make it possible to link w/o libfuzzer.
The goal is to ensure the fuzzers are always buildable and avoid bit rot.
2021-02-06 08:38:38 -07:00
Todd C. Miller
e675f4c078
Don't allow the sudoers fuzzer to open include files.
...
If we allow the fuzzer to choose include paths it will include
random files in the file system. This leads to bug reports that
cannot be reproduced.
2021-02-03 15:20:54 -07:00
Todd C. Miller
63a63680b6
Push lexer leak tracking down into check_fill.c.
...
This lets us track things correctly when buffers are realloc()d.
Rewrote fill() and append() to be more readable.
2021-02-03 12:57:04 -07:00
Todd C. Miller
3237a18ee3
Use sudoersrestart() in fuzz_sudoers.c
...
Since we run the parser multiple times we need to restart it each time.
2021-02-03 12:52:15 -07:00
Todd C. Miller
e66b132d76
Parser needs user_shost for the %h escape in @include expansion.
...
Fixes oss-fuzz issue #30238
2021-02-03 08:56:32 -07:00
Todd C. Miller
8f2254594f
close sudoersin, not fp, and reset it to be safe
2021-02-02 14:12:43 -07:00
Todd C. Miller
20b3904f4f
Add missing fclose(3) of fmemopen(3) stream; it does not modify the data.
2021-02-02 13:58:31 -07:00
Todd C. Miller
0d34fa4285
Parse into a local parse_tree and add missing cleanup.
...
Since parsed_policy is for the sudoers parser we should declare our own.
2021-02-01 21:04:49 -07:00
Todd C. Miller
d3735b98e9
Call init_parser() after parsing to clean up completely.
2021-02-01 20:37:59 -07:00
Todd C. Miller
f30670a42f
Plug a few more parser leaks.
2021-02-01 19:56:52 -07:00
Todd C. Miller
1e3cecc608
Add initial fuzzers to be used by oss-fuzz.
...
These are not yet hooked up to the sudo build.
2021-02-01 15:17:57 -07:00
Todd C. Miller
66cd61a9bd
The parser should be leak free, re-enable leak detection in ASAN.
2021-02-01 15:07:10 -07:00
Todd C. Miller
c9eff93854
strvec_join: free result on error and actually use separator char
2021-01-28 05:57:23 -07:00
Todd C. Miller
888f63a9c8
Test strvec_join() using strlcpy_unesc().
...
Emulates an overflow like: sudoedit -s '\' `perl -e 'print "A" x 65536'`
2021-01-27 21:46:19 -07:00
Todd C. Miller
2804c2c78e
Add strlcpy_unescape() function to undo escaping from front-end.
...
Includes unit test.
2021-01-27 15:41:54 -07:00
Todd C. Miller
95fb8eb727
Add sudoerserrorf(), a printf-style yyerror() function.
...
Use this to display a better error message when using a reserved
work in an alias definition.
2020-11-14 06:17:41 -07:00
Todd C. Miller
6286ce1d16
Store column number for aliases, defaults and userspecs too.
...
This is used to provided the column number along with the line
number in error messages. For aliases we store the column of the
alias name, not the value since that is what visudo generally needs.
2020-11-02 05:39:06 -07:00
Todd C. Miller
982012dbb1
Display column number in parse error messages too.
...
Bug #841
2020-11-01 15:34:11 -07:00
Todd C. Miller
fdae4bdbbb
Add support for file log line wrapping in libeventlog.
2020-10-26 16:16:46 -06:00
Todd C. Miller
db72498257
Use struct eventlog in place of struct iolog_info.
2020-10-26 15:31:41 -06:00
Todd C. Miller
b0a6e1c1e7
Pass path to testsudoers, visudo or cvtsudoers in the environment.
...
Falls back on the unqualified command if the environment variable
is not set.
2020-10-10 07:07:37 -06:00
Todd C. Miller
e8747a33f8
Add a newline at end of line if one is missing.
...
This is simpler than having to support entries that end at EOF too.
2020-09-27 20:21:05 -06:00
Todd C. Miller
32db528689
Add tests for entries without a newline.
2020-09-27 10:31:14 -06:00
Todd C. Miller
ddc1383838
Fix line number accounting when a string contains a newline.
...
Strings are not allowed to span multiple lines without a continuation
character. Also provide a better error message if we are in the
middle of a string and hit EOF.
2020-09-27 06:47:19 -06:00
Todd C. Miller
7a36d70fc1
Add test for syntax error when defining an alias using a reserved word.
2020-09-25 15:09:36 -06:00
Todd C. Miller
e561f5b857
Use the same pattern of redefining TESTDIR as test10.sh.
...
Adapted from a diff from Tim Rice.
2020-09-04 17:24:09 -06:00
Todd C. Miller
a51d194a73
Add test of multiple syntax errors.
...
Where possible, the portion of the line before the error should be
still be interpreted.
2020-09-02 12:40:39 -06:00
Todd C. Miller
9ff960457a
Add support for runchroot and runcwd to "sudo -l" and cvtsudoers.
2020-09-01 06:26:05 -06:00
Todd C. Miller
86513c78b6
Unit test for exptilde
2020-09-01 06:26:05 -06:00
Todd C. Miller
6bdfd010d2
Add CHROOT and CWD sudoers options.
...
Also matching runchroot and runcwd Defaults settings.
2020-09-01 06:26:00 -06:00
Todd C. Miller
360c264760
Make this test pass with bison's verbose error messages.
2020-08-17 07:41:48 -06:00
Todd C. Miller
11803027c6
Add explicit end-of-line matching in the parser for better error messages.
...
A valid line in sudoers must end in a newline or EOF.
Previously, it was possible (though not documented) to have multiple
user specs on a single line. Now, each must be on its own line.
2020-08-16 14:59:45 -06:00
Todd C. Miller
94eb14c214
Add error recovery for unexpected tokens after include/includedir.
2020-08-15 11:29:46 -06:00
Todd C. Miller
fb8ed8ba66
Use angle quotes when including gram.h and def_data.c.
...
Otherwise, we can include the wrong file when doing an out-of-source
build when configured using --with-devel.
2020-08-12 10:28:33 -06:00
Todd C. Miller
985af422d2
Rename __dso_public -> sudo_dso_public and move to config.h.
2020-08-12 09:57:42 -06:00
Todd C. Miller
5f5f28ac7c
Require that a @include line end with a newline or EOF.
...
We now parse the entire line before reading the include file. This
is less surprising behavior and results in better error messages.
2020-08-07 14:22:24 -06:00
Todd C. Miller
3235e4353c
Display more specific parser error messages when possible.
2020-08-07 14:20:45 -06:00
Todd C. Miller
91cc68d7fd
Keep track of the position of the current token for error messages.
2020-08-07 14:13:25 -06:00
Todd C. Miller
99f43f8a00
Store the current line in our own buffer for better error messages.
2020-08-06 21:16:35 -06:00