]> git.ipfire.org Git - thirdparty/freeradius-server.git/log
thirdparty/freeradius-server.git
2 years agoCID 1504058
Arran Cudbard-Bell [Sun, 11 Dec 2022 22:03:25 +0000 (16:03 -0600)] 
CID 1504058

2 years agoCID 1469156
Arran Cudbard-Bell [Sun, 11 Dec 2022 21:51:41 +0000 (15:51 -0600)] 
CID 1469156

2 years agoWas an actual error
Arran Cudbard-Bell [Sun, 11 Dec 2022 21:40:30 +0000 (15:40 -0600)] 
Was an actual error

2 years agoTypo
Arran Cudbard-Bell [Sun, 11 Dec 2022 21:26:17 +0000 (15:26 -0600)] 
Typo

2 years agoFix tmpl_attr_unspec not declared extern
Arran Cudbard-Bell [Sun, 11 Dec 2022 21:25:55 +0000 (15:25 -0600)] 
Fix tmpl_attr_unspec not declared extern

2 years agoTypo
Arran Cudbard-Bell [Sun, 11 Dec 2022 21:22:31 +0000 (15:22 -0600)] 
Typo

2 years agoFix errors when clangd can't find sanitizer/lsan_interface.h
Arran Cudbard-Bell [Sun, 11 Dec 2022 21:22:25 +0000 (15:22 -0600)] 
Fix errors when clangd can't find sanitizer/lsan_interface.h

2 years agoMissed
Arran Cudbard-Bell [Sun, 11 Dec 2022 21:18:20 +0000 (15:18 -0600)] 
Missed

2 years agoCID 1506690
Arran Cudbard-Bell [Sun, 11 Dec 2022 21:16:53 +0000 (15:16 -0600)] 
CID 1506690

2 years agoCID 1508479
Arran Cudbard-Bell [Sun, 11 Dec 2022 21:08:13 +0000 (15:08 -0600)] 
CID 1508479

2 years agoDon't use the unsafe value box copy macro
Arran Cudbard-Bell [Sun, 11 Dec 2022 21:04:48 +0000 (15:04 -0600)] 
Don't use the unsafe value box copy macro

2 years agoCoverity fixes
Arran Cudbard-Bell [Sun, 11 Dec 2022 20:34:44 +0000 (14:34 -0600)] 
Coverity fixes

2 years agoUse the latest commit from freebsd-vm
Arran Cudbard-Bell [Sun, 11 Dec 2022 20:34:08 +0000 (14:34 -0600)] 
Use the latest commit from freebsd-vm

2 years agoFix ordering issue
Arran Cudbard-Bell [Sun, 11 Dec 2022 15:25:26 +0000 (09:25 -0600)] 
Fix ordering issue

2 years agoSee if SSHFS is any more reliable
Arran Cudbard-Bell [Sun, 11 Dec 2022 04:08:47 +0000 (22:08 -0600)] 
See if SSHFS is any more reliable

2 years agoFix arg order
Arran Cudbard-Bell [Sat, 10 Dec 2022 23:24:49 +0000 (17:24 -0600)] 
Fix arg order

2 years agoRemove nonnull until we can figure out how to make it work correctly with NDEBUG
Arran Cudbard-Bell [Sat, 10 Dec 2022 23:19:08 +0000 (17:19 -0600)] 
Remove nonnull until we can figure out how to make it work correctly with NDEBUG

2 years agoMinor fixes
Arran Cudbard-Bell [Sat, 10 Dec 2022 21:56:47 +0000 (15:56 -0600)] 
Minor fixes

2 years ago100000 was a bit silly anyway
Arran Cudbard-Bell [Sat, 10 Dec 2022 21:41:11 +0000 (15:41 -0600)] 
100000 was a bit silly anyway

2 years agoSet NOTE_EXIT in fr_event_pid_early_exit to avoid assert
Arran Cudbard-Bell [Sat, 10 Dec 2022 21:19:28 +0000 (15:19 -0600)] 
Set NOTE_EXIT in fr_event_pid_early_exit to avoid assert

2 years agoRework our wrapper code around user events, and add a surrogate user event on process...
Arran Cudbard-Bell [Sat, 10 Dec 2022 21:01:45 +0000 (15:01 -0600)] 
Rework our wrapper code around user events, and add a surrogate user event on process early exit

2 years agoFix crash on start introduced by 181ae63889075fd475f007c62eabc78ac9e83265
Arran Cudbard-Bell [Sat, 10 Dec 2022 15:55:42 +0000 (09:55 -0600)] 
Fix crash on start introduced by 181ae63889075fd475f007c62eabc78ac9e83265

2 years agoIncrease timeout for fuzzers
Arran Cudbard-Bell [Sat, 10 Dec 2022 15:22:15 +0000 (09:22 -0600)] 
Increase timeout for fuzzers

Some tweaks to try and get backtraces on timeout

2 years agoReturn a more useful exit status
Arran Cudbard-Bell [Sat, 10 Dec 2022 00:26:13 +0000 (18:26 -0600)] 
Return a more useful exit status

2 years agoTypo
Arran Cudbard-Bell [Sat, 10 Dec 2022 00:13:59 +0000 (18:13 -0600)] 
Typo

2 years agoAdd ocspd verifycert boolean (#4800)
Craig Huckabee [Sat, 10 Dec 2022 00:11:36 +0000 (19:11 -0500)] 
Add ocspd verifycert boolean (#4800)

* Add verifycert boolean to disable OCSP server certificate validation

* Fix typo

Co-authored-by: Craig Huckabee <craig.huckabee@niwc.navy.mil>
2 years agolua_release_cmd: fix returning device mismatch (#4725)
Max Khon [Sat, 10 Dec 2022 00:11:09 +0000 (00:11 +0000)] 
lua_release_cmd: fix returning device mismatch (#4725)

2 years agoDeal with dl_open_by_name() toctou (CIS #1400053) (#4799)
James Jones [Sat, 10 Dec 2022 00:09:09 +0000 (18:09 -0600)] 
Deal with dl_open_by_name() toctou (CIS #1400053) (#4799)

* Deal with dl_open_by_name() toctou (CIS #1400053)

dl_open_by_name() gives you the option of looking though a list of
directories for a library, using the dlopen() function. If a dlopen()
succeeds, dl_open_by_name() succeeds and all is well. If it fails,
though, the question is why? If it doesn't exist in that directory,
you want to try the next on the list. If it does, permissions are
likely to be the problem, so report the issue and return failure.

The previous code uses access() on the path if the dlopen() fails,
hence toctou.

Unfortunately, there's not a good way to deal with it.

There is no dlopenat(), so one can't avoid toctou with dlopenat()
followed by accessat(). The only indication of why dlopen() failed
is in the string returned by dlerror()... which only guarantees
that the string is human-readable, NUL-terminated, and doesn't end
with a newline.

Looking at the result of dlerror() when the dlopen() for the
directory list fails suggests that it has the following format:

path COLON SPACE <message> COLON SPACE strerror_output

In the particular cases in the tests, that last part was always
"No such file or directory", what strerror() returns for the
ENOENT dl_open_by_name() is checking for.

As the least bad alternative, the code looks in the dlerror()
output for fr_syserror(ENOENT) to decide.

* Add note

Co-authored-by: Arran Cudbard-Bell <a.cudbardb@freeradius.org>
2 years agoCheck return on encoding of max values (CID #1517909) (#4803)
James Jones [Sat, 10 Dec 2022 00:07:38 +0000 (18:07 -0600)] 
Check return on encoding of max values (CID #1517909) (#4803)

Coverity only gripes about FLAG_LENGTH_UINT16, but if it needs
checking, so does the FLAG_LENGTH_UINT8 case.

2 years agoHandle fr_event_timer_in_query() error return in ldap_xlat() (CID #1504007) (#4804)
James Jones [Sat, 10 Dec 2022 00:07:23 +0000 (18:07 -0600)] 
Handle fr_event_timer_in_query() error return in ldap_xlat() (CID #1504007) (#4804)

2 years agoIncrease the max number of -e commands (#4812)
Max Khon [Sat, 10 Dec 2022 00:06:44 +0000 (00:06 +0000)] 
Increase the max number of -e commands (#4812)

2 years agoAdd support for setting timeouts in jlibtool
Arran Cudbard-Bell [Sat, 10 Dec 2022 00:00:54 +0000 (18:00 -0600)] 
Add support for setting timeouts in jlibtool

For tests, this means the child receives kill(SIGKILL) after 30 seconds if it's not completed, so we don't block CI indefinitely.

2 years agoEither clang 15 or whatever standard library is being used complains about it bitterly
Arran Cudbard-Bell [Fri, 9 Dec 2022 21:41:43 +0000 (15:41 -0600)] 
Either clang 15 or whatever standard library is being used complains about it bitterly

2 years agoMake sure the file descriptors are available in case the PID wait callback is trigger...
Arran Cudbard-Bell [Fri, 9 Dec 2022 20:25:34 +0000 (14:25 -0600)] 
Make sure the file descriptors are available in case the PID wait callback is triggered early

2 years agodon't remove the .d file, it's an output file
Alan T. DeKok [Fri, 9 Dec 2022 16:17:05 +0000 (11:17 -0500)] 
don't remove the .d file, it's an output file

which is needed by the target rule

2 years agoadd docs for redundant, etc. as modules and as xlats
Alan T. DeKok [Fri, 9 Dec 2022 15:34:56 +0000 (10:34 -0500)] 
add docs for redundant, etc. as modules and as xlats

2 years agoFix exec issues on macOS
Arran Cudbard-Bell [Fri, 9 Dec 2022 14:30:07 +0000 (08:30 -0600)] 
Fix exec issues on macOS

This appears to be a behavioural difference between macOS and Linux, where waitid will non-deterministically return 0 or 1 even if the process has exited consistently.

2 years agoRemove EXEC_SYNC_WITH_CHILD hacks
Arran Cudbard-Bell [Fri, 9 Dec 2022 14:09:31 +0000 (08:09 -0600)] 
Remove EXEC_SYNC_WITH_CHILD hacks

They don't work...

2 years agoTypo
Arran Cudbard-Bell [Fri, 9 Dec 2022 13:37:03 +0000 (07:37 -0600)] 
Typo

2 years agoWait for the child to be live before continuing
Arran Cudbard-Bell [Fri, 9 Dec 2022 13:24:50 +0000 (07:24 -0600)] 
Wait for the child to be live before continuing

2 years agorest: Duplicate the pool section (#4825)
Terry Burton [Fri, 9 Dec 2022 13:12:17 +0000 (13:12 +0000)] 
rest: Duplicate the pool section (#4825)

2 years agoAmend comments for rest module "pool" to reflect code behaviour
Nick Porter [Fri, 9 Dec 2022 12:20:52 +0000 (12:20 +0000)] 
Amend comments for rest module "pool" to reflect code behaviour

2 years agoHandle changes in libcurl options
Nick Porter [Fri, 9 Dec 2022 10:20:55 +0000 (10:20 +0000)] 
Handle changes in libcurl options

2 years agoUse FR_CURL_REQUEST_SET_OPTION where request is available
Nick Porter [Fri, 9 Dec 2022 09:58:55 +0000 (09:58 +0000)] 
Use FR_CURL_REQUEST_SET_OPTION where request is available

So errors are RERROR rather than ERROR

2 years agoDon't set CURLOPT_PROTOCOLS twice
Nick Porter [Fri, 9 Dec 2022 09:57:24 +0000 (09:57 +0000)] 
Don't set CURLOPT_PROTOCOLS twice

2 years agoAlways use error4
Arran Cudbard-Bell [Fri, 9 Dec 2022 03:57:26 +0000 (21:57 -0600)] 
Always use error4

2 years agoTry pausing the child processes until the parent signals on macOS
Arran Cudbard-Bell [Fri, 9 Dec 2022 02:40:15 +0000 (20:40 -0600)] 
Try pausing the child processes until the parent signals on macOS

2 years agoCleaner version of waitid hack on macOS
Arran Cudbard-Bell [Thu, 8 Dec 2022 23:28:36 +0000 (17:28 -0600)] 
Cleaner version of waitid hack on macOS

2 years agoDiagnose macos CI failures
Arran Cudbard-Bell [Thu, 8 Dec 2022 22:40:07 +0000 (16:40 -0600)] 
Diagnose macos CI failures

2 years agoShould be waitid not waitpid...
Arran Cudbard-Bell [Thu, 8 Dec 2022 22:29:01 +0000 (16:29 -0600)] 
Should be waitid not waitpid...

2 years agoFix tmpl_dcursor_test warnings and make it possible to easily step into the tmpl...
Arran Cudbard-Bell [Thu, 8 Dec 2022 21:47:37 +0000 (15:47 -0600)] 
Fix tmpl_dcursor_test warnings and make it possible to easily step into the tmpl tokenizer on failing tests

2 years agomark the parent redundant xlat as taking "void"
Alan T. DeKok [Thu, 8 Dec 2022 22:02:22 +0000 (17:02 -0500)] 
mark the parent redundant xlat as taking "void"

so that we can free it's args, and they don't be expanded.

The arguments will still be used for the parser, so it's not
all lost.

2 years agochange !~ to !(... =~ ...)
Alan T. DeKok [Tue, 6 Dec 2022 20:21:49 +0000 (15:21 -0500)] 
change !~ to !(... =~ ...)

2 years agoTry bumping CI to macos-12
Arran Cudbard-Bell [Thu, 8 Dec 2022 20:51:03 +0000 (14:51 -0600)] 
Try bumping CI to macos-12

2 years agoParam is now used
Arran Cudbard-Bell [Thu, 8 Dec 2022 20:41:27 +0000 (14:41 -0600)] 
Param is now used

2 years agorest: Search for pool in the right place
Arran Cudbard-Bell [Thu, 8 Dec 2022 20:24:35 +0000 (14:24 -0600)] 
rest: Search for pool in the right place

2 years agoFormatting
Arran Cudbard-Bell [Thu, 8 Dec 2022 20:11:52 +0000 (14:11 -0600)] 
Formatting

2 years agoDon't warn about unreachable generic types when the lvalue is case (unreachable-code...
Arran Cudbard-Bell [Thu, 8 Dec 2022 20:11:40 +0000 (14:11 -0600)] 
Don't warn about unreachable generic types when the lvalue is case (unreachable-code-generic-assoc)

What a completely useless and utterly stupid warning

2 years agoFixes for running with a non system version of clangd on macos
Arran Cudbard-Bell [Thu, 8 Dec 2022 20:10:58 +0000 (14:10 -0600)] 
Fixes for running with a non system version of clangd on macos

2 years agoRemove accidentally comitted tests
Arran Cudbard-Bell [Thu, 8 Dec 2022 19:50:00 +0000 (13:50 -0600)] 
Remove accidentally comitted tests

This reverts commit d18cd6caf55d5c210211fd14b6bf817d972f4614.

2 years agoFormatting
Arran Cudbard-Bell [Thu, 8 Dec 2022 19:16:08 +0000 (13:16 -0600)] 
Formatting

2 years agojson: Set the default output mode correctly
Arran Cudbard-Bell [Thu, 8 Dec 2022 17:23:18 +0000 (11:23 -0600)] 
json: Set the default output mode correctly

2 years agocurl: Similar signal fix for smtp and imap
Arran Cudbard-Bell [Thu, 8 Dec 2022 17:18:49 +0000 (11:18 -0600)] 
curl: Similar signal fix for smtp and imap

2 years agocurl: Deal with socket closures in a more libcurl friendly way
Arran Cudbard-Bell [Thu, 8 Dec 2022 17:08:06 +0000 (11:08 -0600)] 
curl: Deal with socket closures in a more libcurl friendly way

2 years agoevent: Call the read event on EV_EOF if we're reading and have pending data
Arran Cudbard-Bell [Thu, 8 Dec 2022 16:50:40 +0000 (10:50 -0600)] 
event: Call the read event on EV_EOF if we're reading and have pending data

2 years agoCorrect bounds check for max_request_time
Arran Cudbard-Bell [Thu, 8 Dec 2022 16:16:39 +0000 (10:16 -0600)] 
Correct bounds check for max_request_time

2 years agorlm_rest: Always install a signal handler for unlang_module_yield calls
Arran Cudbard-Bell [Thu, 8 Dec 2022 16:10:16 +0000 (10:10 -0600)] 
rlm_rest: Always install a signal handler for unlang_module_yield calls

2 years agorlm_rest: Formatting
Arran Cudbard-Bell [Thu, 8 Dec 2022 16:09:53 +0000 (10:09 -0600)] 
rlm_rest: Formatting

2 years agoFix lua_alloc_cmd (#4813)
Max Khon [Tue, 6 Dec 2022 17:55:35 +0000 (17:55 +0000)] 
Fix lua_alloc_cmd (#4813)

(0)      redis_ippool - ERROR: (0) error   : ERR Error running script (call to f_555f9a10a670669b1725edfc4b558c4c5eb3f9ad): @user_script:14: user_script:14: attempt to compare number with string

2 years agoWe don't need to do "%{Attr-Name[#]}" either
Alan T. DeKok [Tue, 6 Dec 2022 16:59:42 +0000 (11:59 -0500)] 
We don't need to do "%{Attr-Name[#]}" either

Just bare xlats are fine now

2 years agochange "%{Attr-Name}" to &Attr-Name
Alan T. DeKok [Tue, 6 Dec 2022 16:54:06 +0000 (11:54 -0500)] 
change "%{Attr-Name}" to &Attr-Name

It's really not clear where this obsession with quoting came from,
but it's unnecessary.

2 years agoTime delta check only needs lt and gt comparisons
Nick Porter [Tue, 6 Dec 2022 16:36:15 +0000 (16:36 +0000)] 
Time delta check only needs lt and gt comparisons

2 years agoRename fr_equality_op to reflect its actual meaning (#4823)
James Jones [Tue, 6 Dec 2022 15:36:15 +0000 (09:36 -0600)] 
Rename fr_equality_op to reflect its actual meaning (#4823)

The array contains true values for comparison operators, not
just equals and not equals. A rename to fr_comparison_op
makes a positive logic version of the distinction between
comparisons (which will coompare any number of values)
and other binary operators (which only do one value) clearer.

2 years agoScheduled fuzzing: Update src/tests/fuzzer-corpus/radius.tar
github-actions[bot] [Tue, 6 Dec 2022 09:34:48 +0000 (09:34 +0000)] 
Scheduled fuzzing: Update src/tests/fuzzer-corpus/radius.tar

2 years agoScheduled fuzzing: Update src/tests/fuzzer-corpus/tacacs.tar
github-actions[bot] [Tue, 6 Dec 2022 09:34:37 +0000 (09:34 +0000)] 
Scheduled fuzzing: Update src/tests/fuzzer-corpus/tacacs.tar

2 years agoScheduled fuzzing: Update src/tests/fuzzer-corpus/dns.tar
github-actions[bot] [Tue, 6 Dec 2022 09:34:33 +0000 (09:34 +0000)] 
Scheduled fuzzing: Update src/tests/fuzzer-corpus/dns.tar

2 years agoScheduled fuzzing: Update src/tests/fuzzer-corpus/dhcpv6.tar
github-actions[bot] [Tue, 6 Dec 2022 09:34:31 +0000 (09:34 +0000)] 
Scheduled fuzzing: Update src/tests/fuzzer-corpus/dhcpv6.tar

2 years agoScheduled fuzzing: Update src/tests/fuzzer-corpus/dhcpv4.tar
github-actions[bot] [Tue, 6 Dec 2022 09:34:28 +0000 (09:34 +0000)] 
Scheduled fuzzing: Update src/tests/fuzzer-corpus/dhcpv4.tar

2 years agoScheduled fuzzing: Update src/tests/fuzzer-corpus/util.tar
github-actions[bot] [Tue, 6 Dec 2022 09:34:22 +0000 (09:34 +0000)] 
Scheduled fuzzing: Update src/tests/fuzzer-corpus/util.tar

2 years agoScheduled fuzzing: Update src/tests/fuzzer-corpus/tftp.tar
github-actions[bot] [Tue, 6 Dec 2022 09:34:19 +0000 (09:34 +0000)] 
Scheduled fuzzing: Update src/tests/fuzzer-corpus/tftp.tar

2 years agoScheduled fuzzing: Update src/tests/fuzzer-corpus/vmps.tar
github-actions[bot] [Tue, 6 Dec 2022 09:34:16 +0000 (09:34 +0000)] 
Scheduled fuzzing: Update src/tests/fuzzer-corpus/vmps.tar

2 years agoadd RPEDEBUG wehn failing assigment and update tests
Alan T. DeKok [Mon, 5 Dec 2022 20:43:32 +0000 (15:43 -0500)] 
add RPEDEBUG wehn failing assigment and update tests

2 years agoclean up and add new docs
Alan T. DeKok [Mon, 5 Dec 2022 18:30:31 +0000 (13:30 -0500)] 
clean up and add new docs

2 years agomore != to !(==)
Alan T. DeKok [Mon, 5 Dec 2022 15:32:41 +0000 (10:32 -0500)] 
more != to !(==)

2 years agoglobal search and replace
Alan T. DeKok [Mon, 5 Dec 2022 03:07:27 +0000 (22:07 -0500)] 
global search and replace

perl -p -i -e 's/\(([^ ]+) != ([^ ]+)\)/(!($1 == $2))/g'

2 years agomake redundant xlats work
Alan T. DeKok [Sun, 4 Dec 2022 14:33:04 +0000 (09:33 -0500)] 
make redundant xlats work

via hackity hack,  The real solution is not to copy the input
(unexpanded) arguments.  Instead, the xlat_redundant() call
should simply copy it's expanded arguments, and call each
function in turn.

i.e. xlat_redundant() has no need to call xlat push or xlat
yield, as it already has all of the arguments it needs.

That also stops the inputs from being epanded repeatedly.

2 years agomore a!=b --> !(a==b)
Alan T. DeKok [Sat, 3 Dec 2022 20:31:38 +0000 (15:31 -0500)] 
more a!=b --> !(a==b)

perl -p -i -e 's/\(([^ ]+) != ("[^"]+")\)/(!($1 == $2))/g'
             's/\("([^"]+)" != ([^ ]+)\)/(!($1 == $2))/g'
     's/\("([^"]+)" != ("[^"]+")\)/(!($1 == $2))/g' ...

2 years agolets initialize fields, m'kay?
Alan T. DeKok [Sat, 3 Dec 2022 19:52:13 +0000 (14:52 -0500)] 
lets initialize fields, m'kay?

2 years agoopen files passed on command line
Alan T. DeKok [Sat, 3 Dec 2022 13:52:12 +0000 (08:52 -0500)] 
open files passed on command line

2 years agoallow -f to specify all file names
Alan T. DeKok [Sat, 3 Dec 2022 13:07:36 +0000 (08:07 -0500)] 
allow -f to specify all file names

2 years agoEnsure output directory exists for extracted pcap
Nick Porter [Mon, 5 Dec 2022 12:41:37 +0000 (12:41 +0000)] 
Ensure output directory exists for extracted pcap

2 years agoshut up clang scan
Alan T. DeKok [Fri, 2 Dec 2022 22:40:16 +0000 (17:40 -0500)] 
shut up clang scan

2 years agoadd CoA filter and reply file to rc_file_pair_t
Alan T. DeKok [Fri, 2 Dec 2022 22:13:40 +0000 (17:13 -0500)] 
add CoA filter and reply file to rc_file_pair_t

2 years agouse dlists for filenames
Alan T. DeKok [Fri, 2 Dec 2022 21:54:10 +0000 (16:54 -0500)] 
use dlists for filenames

that way they get processed in the order that they appear in
on the command line, and not in some random order by sorting
the filename.

This isn't stricyly needed here, but will be needed for receiving
CoA packets.

2 years agoAdd -A Foo-Bar
Alan T. DeKok [Fri, 2 Dec 2022 21:19:27 +0000 (16:19 -0500)] 
Add -A Foo-Bar

so we can use an arbitrary attribute to match CoA packets to
outgoing requests

2 years agofirst pass at allowing radclient to read CoA packets
Alan T. DeKok [Fri, 2 Dec 2022 21:14:54 +0000 (16:14 -0500)] 
first pass at allowing radclient to read CoA packets

2 years agosimplify code.
Alan T. DeKok [Thu, 1 Dec 2022 21:55:52 +0000 (16:55 -0500)] 
simplify code.

xlat's have not been supported for a while.  So there's no reason
to manually root through the list looking for things.

2 years agouse dlist functions instead of hand-rolled things
Alan T. DeKok [Thu, 1 Dec 2022 20:11:30 +0000 (15:11 -0500)] 
use dlist functions instead of hand-rolled things

2 years agoadd === and !==
Alan T. DeKok [Thu, 1 Dec 2022 19:31:55 +0000 (14:31 -0500)] 
add === and !==

After other languages which have the same thing.

This is less useful for FreeRADIUS, as all "variables" are strongly
typed.  But it could be used for non-quoted xlats, and it could
be used in the future for "void" types

2 years agotests for expr with non-existent attributes
Alan T. DeKok [Tue, 29 Nov 2022 23:34:28 +0000 (18:34 -0500)] 
tests for expr with non-existent attributes