From e72473d9c43a579ea64cb79fd410d37df23c3445 Mon Sep 17 00:00:00 2001 From: Jason Stephenson Date: Sun, 18 Feb 2018 12:12:13 -0500 Subject: [PATCH] LP1340982: Ignore both 'comment' and '#comment' nodes in Settings Parse. Modify the XML2perl helper function in OpenSRF::Utils::SettingsParser to ignore comment nodes that have names of comment and #comment. To reproduce the bug: 1. Stop OpenSRF services. 2. Add a XML comment, any text betwen , in the list of MARC templates in the opensrf.xml file. 3. Restart OpenSRF services. 4. In the staff client, go to Cataloging->Create New MARC Record. 5. In the list of templates, you will #comment where you added the comment. (NOTE: I only tested with 1 comment. Things may get worse with more than 1 comment.) 6. There will be an error like the following in the open-ils.cat_stderr.log if you attempt to choose the #comment entry: Caught error from 'run' method: Exception: OpenSRF::EX::ERROR 2018-02-18T11:24:30 OpenSRF::Application /usr/local/share/perl/5.22.1/OpenSRF/Application.pm:240 System ERROR: Unable to open MARC template file: HASH(0x2249928) : To test the fix: 1. Leave the comments in the opensrf.xml file from before. 2. Apply this commit, do make and make install for OpenSRF. 3. Just to make sure, do make and make install for Evergreen. 4. Repeat steps 3 and 4 from above. 5. You should NOT see any templates named #comment. Signed-off-by: Jason Stephenson Signed-off-by: Galen Charlton --- src/perl/lib/OpenSRF/Utils/SettingsParser.pm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/perl/lib/OpenSRF/Utils/SettingsParser.pm b/src/perl/lib/OpenSRF/Utils/SettingsParser.pm index 8d5e5fe..6b84572 100644 --- a/src/perl/lib/OpenSRF/Utils/SettingsParser.pm +++ b/src/perl/lib/OpenSRF/Utils/SettingsParser.pm @@ -126,7 +126,7 @@ sub XML2perl { return _check_for_int($kids[0]->textContent); } else { for my $kid ( @kids ) { - next if ($kid->nodeName eq 'comment'); + next if ($kid->nodeName =~ /^#?comment$/); if (exists $output{$kid->nodeName}) { if (ref $output{$kid->nodeName} ne 'ARRAY') { $output{$kid->nodeName} = [$output{$kid->nodeName}, XML2perl($kid)]; -- 2.43.2