Bug 248536

Summary: periodic(8) /absolute/path/where/basename/contains-hyphens interpreted as options to mail(1)
Product: Base System Reporter: danielsh
Component: binAssignee: freebsd-bugs (Nobody) <bugs>
Status: Open ---    
Severity: Affects Some People CC: 0mp, emaste, yzhong
Priority: ---    
Version: CURRENT   
Hardware: Any   
OS: Any   

Description danielsh 2020-08-08 12:28:15 UTC
I ran «periodic /usr/local/etc/periodic/one-off» from /etc/crontab and got the following output:

[[[
Subject: Cron <root@zsh> periodic /usr/local/etc/periodic/one-off

mail: illegal option -- o
Usage: mail [-dEiInv] [-s subject] [-c cc-addr] [-b bcc-addr] [-F] to-addr ...
            [-sendmail-option ...]
       mail [-dEHiInNv] [-F] -f [name]
       mail [-dEHiInNv] [-F] [-u user]
       mail [-d] -e [-f name]
]]]

What happens: The function output_pipe() is called with a first argument of «/usr/local/etc/periodic/one-off», which then runs «eval» on the string «output=$one-off_output», which sets the variable $output to the value «-off_output» (because $one expands to nothing), and that variable is then used to build the mail command in $pipe, which works out to «mail -E -s '…' -off_output», which produces the above output.

Reproduced in 11.2R, but by source inspection applies to CURRENT too.
Comment 1 Yang Zhong 2020-10-05 13:57:07 UTC
https://reviews.freebsd.org/D26609