Project

General

Profile

Bug #12674

Policies regeneration error when using a parameters with " char

Added by Vincent DAVY 7 months ago. Updated 6 months ago.

Status:
Released
Priority:
N/A
Category:
Web - Config management
Target version:
Severity:
User visibility:
Effort required:
Priority:
0

Description

If I create a parameter (in menu "Configuration policy > Parameters") with a value containing a " char, and then I use the parameter in a directive, I got a policies regeneration error.
Here is a sample :

Policy update error for process '197' at 2018-05-22 10:12:35 <- Cannot write configuration node <- Exit code=1 for hook: '/opt/rudder/etc/hooks.d/policy-generation-node-ready/10-cf-promise-check'.
 stdout:    error: There are syntax errors in policy files

 stderr: '/var/rudder/share/fae5f18c-a543-4ed2-9a74-0a8991017bbf/rules.new/cfengine-community/common/1.0/rudder-parameters.cf:42:27: error: syntax error
   "test" string => "'"toto"'";
                          ^
/var/rudder/share/fae5f18c-a543-4ed2-9a74-0a8991017bbf/rules.new/cfengine-community/common/1.0/rudder-parameters.cf:42:27: error: Check previous line, Expected ',', got 'toto'
   "test" string => "'"toto"'";
                          ^
/var/rudder/share/fae5f18c-a543-4ed2-9a74-0a8991017bbf/rules.new/cfengine-community/common/1.0/rudder-parameters.cf:42:30: error: Expected promiser string, got '"'"'
   "test" string => "'"toto"'";

The global log is attached to this report.

I got the error after a upgrade from 4.3.0 rc to 4.3.1 installed through debian packages.

Seems to be a bit equivalent to this : https://www.rudder-project.org/redmine/issues/12101

error.txt (28 KB) error.txt Vincent DAVY, 2018-05-22 09:19

Subtasks

Bug #12679: Add a test for escaped " in promise writerReleasedFrançois ARMAND

Related issues

Related to Rudder - Bug #12101: Escaping issue in Users Technique ParameterReleased
Related to Rudder - Bug #12390: (breaking change) In Windows Agent, a '\' in a directive parameter value is escaped but it should notReleased

Associated revisions

Revision d30fdc8f (diff)
Added by François ARMAND 7 months ago

Fixes #12674: Policies regeneration error when using a parameters with \" char

History

#1 Updated by Alexis MOUSSET 7 months ago

  • Related to Bug #12101: Escaping issue in Users Technique Parameter added

#2 Updated by Vincent DAVY 7 months ago

Using a single quote ' works. Using a double quote " is giving errors

#3 Updated by Vincent DAVY 7 months ago

Here is a step by step guide to reproduce (please apologize my frenglish) :
1. Install Rudder in a Virtualbox following this guide using a Debian 9 base OS
2. Login into Rudder interface with admin password
3. Go to "Configuration policy > Parameters", create a "test" parameter and enter a value with a double quote (example : "toto")
4. Go to "Configuration policy > Directives", create a new "File content" directive with a file path /root/toto and use ${rudder.param.test} for file content (referencing the created param)
5. Go to "Configuration polocy > Rules" and create a new rule using the previously created directive and applying it on all nodes (for exemple)
6. Check the status with the heart logo in the top right corner near the "documentation" link : the heart is sick with a red cross on it asking you to check the status, click on it
7. You got an "Error during policy update"
8. click on "Details". You got this error :

⇨ Policy update error for process '6' at 2018-05-22 12:05:19 
⇨ Cannot write configuration node 
⇨ Exit code=1 for hook: '/opt/rudder/etc/hooks.d/policy-generation-node-ready/10-cf-promise-check'.
stdout: 
stderr: '/var/rudder/cfengine-community/inputs.new/common/1.0/rudder-parameters.cf:49:740: error: syntax error
"test" string => "test"";
^
/var/rudder/cfengine-community/inputs.new/common/1.0/rudder-parameters.cf:49:740: error: Check previous line, Expected ';', got '";

}

You can get the full error in the logs (Menu "Utilities > Event logs")

Hope this guide can help.

#4 Updated by François ARMAND 7 months ago

  • Project changed from Rudder websites to Rudder

#5 Updated by Nicolas CHARLES 7 months ago

  • Target version set to 410

This happens only in Rudder 4.3 (works as expected in 4.1 and 4.2)

#6 Updated by Nicolas CHARLES 7 months ago

  • Target version changed from 410 to 4.2.7

actually, 4.2.5 is broken also (4.2.4 is fine)

#7 Updated by Nicolas CHARLES 7 months ago

  • Related to Bug #12390: (breaking change) In Windows Agent, a '\' in a directive parameter value is escaped but it should not added

#8 Updated by Nicolas CHARLES 7 months ago

This is most likely introduced by #12390

#9 Updated by François ARMAND 7 months ago

  • Status changed from New to In progress
  • Assignee set to François ARMAND

#10 Updated by François ARMAND 7 months ago

  • Status changed from In progress to Pending technical review
  • Assignee changed from François ARMAND to Nicolas CHARLES
  • Pull Request set to https://github.com/Normation/rudder/pull/1941

#11 Updated by François ARMAND 7 months ago

In windows, it does nothing as we don't have a "rudder-parameters" file.

#12 Updated by Normation Quality Assistant 7 months ago

  • Assignee changed from Nicolas CHARLES to François ARMAND

#13 Updated by François ARMAND 7 months ago

  • Status changed from Pending technical review to Pending release

#14 Updated by Vincent MEMBRÉ 7 months ago

  • Target version changed from 4.2.7 to 4.2.6

#15 Updated by Benoît PECCATTE 7 months ago

  • Status changed from Pending release to Released

This bug has been fixed in Rudder 4.2.6 and 4.3.1 which were released today.

#16 Updated by Vincent MEMBRÉ 6 months ago

  • Category set to Web - Config management

Also available in: Atom PDF