Defect #35421
closedUnhandled exception when a YAML syntax error is detected in configuration.yml
0%
Description
Redmine will abort with Psych::SyntaxError during startup if a YAML syntax error in configuration.yml is detected.
/Users/somebody/.rbenv/versions/3.0.0/lib/ruby/3.0.0/psych.rb:456:in `parse': (<unknown>): did not find expected key while parsing a block mapping at line 11 column 1 (Psych::SyntaxError)
from /Users/somebody/.rbenv/versions/3.0.0/lib/ruby/3.0.0/psych.rb:456:in `parse_stream'
from /Users/somebody/.rbenv/versions/3.0.0/lib/ruby/3.0.0/psych.rb:390:in `parse'
from /Users/somebody/.rbenv/versions/3.0.0/lib/ruby/3.0.0/psych.rb:280:in `load'
from /path/to/redmine/lib/redmine/configuration.rb:95:in `load_from_yaml'
from /path/to/redmine/lib/redmine/configuration.rb:45:in `load'
from /path/to/redmine/lib/redmine/configuration.rb:76:in `[]'
Although the code at source:tags/4.2.1/lib/redmine/configuration.rb#L98 tries to catch the exception, the code never catches it because the rescue statement should handle Psych::SyntaxError instead of SyntaxError.
rescue SyntaxError => e
abort "A syntax error occurred when parsing your Redmine configuration file located at #{filename} with ERB:\n#{e.message}"
Files
Related issues
Updated by Go MAEDA over 4 years ago
- File 35421.patch 35421.patch added
The attached patch fixes the issue.
Updated by Go MAEDA over 4 years ago
- File 35421-v2.patch 35421-v2.patch added
Go MAEDA wrote:
Although the code at source:tags/4.2.1/lib/redmine/configuration.rb#L98 tries to catch the exception, the code never catches it because the
rescuestatement should handlePsych::SyntaxErrorinstead ofSyntaxError.
According to #9748 and #16878, the code that is intended to handle a YAML syntax error is not source:tags/4.2.1/lib/redmine/configuration.rb#L98 but source:tags/4.2.1/lib/redmine/configuration.rb#L96. So, the patch 35421.patch is wrong.
rescue ArgumentError
abort "Your Redmine configuration file located at #{filename} is not a valid YAML file and could not be loaded."
rescue SyntaxError => e
abort "A syntax error occurred when parsing your Redmine configuration file located at #{filename} with ERB:\n#{e.message}"
end
Attaching an updated patch.
Updated by Go MAEDA over 4 years ago
- Related to Defect #9748: Error about configuration.yml validness should mention file path added
Updated by Go MAEDA over 4 years ago
- Target version set to 5.0.0
Setting the target version to 5.0.0.
Updated by Go MAEDA over 4 years ago
- File 35421-v2.patch 35421-v2.patch added
Update the patch to display Exception#message. This is necessary for users to know where the syntax error occurred.
Updated by Go MAEDA over 4 years ago
- Status changed from New to Closed
- Assignee set to Go MAEDA
- Resolution set to Fixed
Committed the patch.