git: 37cd6c20dbcf - main - cron: consume blanks in system crontabs before options

Oleksandr Tymoshenko gonzo at FreeBSD.org
Thu Mar 4 07:34:29 UTC 2021


The branch main has been updated by gonzo:

URL: https://cgit.FreeBSD.org/src/commit/?id=37cd6c20dbcf251e38d6dfb9d3e02022941f6fc7

commit 37cd6c20dbcf251e38d6dfb9d3e02022941f6fc7
Author:     Oleksandr Tymoshenko <gonzo at FreeBSD.org>
AuthorDate: 2021-03-04 07:23:31 +0000
Commit:     Oleksandr Tymoshenko <gonzo at FreeBSD.org>
CommitDate: 2021-03-04 07:23:31 +0000

    cron: consume blanks in system crontabs before options
    
    On system crontabs, multiple blanks are not being consumed after reading the
    username. This change adds blank consumption before parsing any -[qn] options.
    Without this change, an entry like:
    
      * * * * * username  -n true  # Two spaces between username and option.
    
    will fail, as the shell will try to execute (' -n true'), while an entry like:
    
      * * * * * username -n true   # One space between username and option.
    
    works as expected (executes 'true').
    
    For user crontabs, this is not an issue as the preceding (day of week
    or @shortcut) processing consumes any leading whitespace.
    
    PR:             253699
    Submitted by:   Eric A. Borisch <eborisch at gmail.com>
    MFC after:      1 week
---
 usr.sbin/cron/lib/entry.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/usr.sbin/cron/lib/entry.c b/usr.sbin/cron/lib/entry.c
index 66ead885bea8..2693c9c8d07a 100644
--- a/usr.sbin/cron/lib/entry.c
+++ b/usr.sbin/cron/lib/entry.c
@@ -315,6 +315,9 @@ load_entry(file, error_func, pw, envp)
 			goto eof;
 		}
 
+		/* need to have consumed blanks when checking options below */
+		Skip_Blanks(ch, file)
+		unget_char(ch, file);
 #ifdef LOGIN_CAP
 		if ((s = strrchr(username, '/')) != NULL) {
 			*s = '\0';


More information about the dev-commits-src-all mailing list