Fix panic due to invalid schedule string #365
Closed
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Fix a bug where cron panics if the schedule string ("spec") has a particular format, namely exactly "TZ=" or "CRON_TZ=". If this string is user controlled that user may be able to cause a panic and thereby exit the program that is using cron. Alternatively, if the string is constructed dynamically by the program and there is a mistake in that logic, the program would panic unexpectedly.
The solution I propose is simply to check against the condition that causes cron to panic. There are alternative solution, e.g.:
"provided bad location"
error is returned. I opted away from this as I figured it might be useful to distinguish these two scenarios.I also added some tests for these strings to ensure they're properly accounted for in the future.
Disclosure: I found this bug using https://github.com/dvyukov/go-fuzz and did not encounter any other parsing issues.