Can you please provide a backtrace? Matt Richards wrote: > Greetings. > > Another issue with RedHat not being like everyone else. Consider the > following file: > > # cat /tmp/test > test:a:b:c > > With the following testcase: > > ########################################################################## > > body common control { > > bundlesequence => { "test"}; > > } > > ########################################################################## > > > bundle agent test { > > files: > > "/tmp/test_copy" > comment => "create a test file", > copy_from => local_copy("/tmp/test"), > create => "true", > classes => cdefine("copied","not_copied"), > edit_line => test_edit; > > } > > ########################################################################## > > bundle edit_line test_edit { > > vars: > > copied:: > "no" int => getfields("test:.*","/tmp/test_copy",":","data"); > > delete_lines: > > ".*"; > > > reports: > > cfengine_3:: > > "teststring:$(data[2])"; > > } > > > ########################################################################## > > body classes cdefine(pass,fail) { > > promise_repaired => { "$(pass)" }; > repair_failed => { "$(fail)" }; > > } > > ########################################################################## > > body copy_from local_copy(from) { > > source => "$(from)"; > force_update => "true"; > > } > > ########################################################################## > > > > On other OS'es, the result should be: > R: teststring:a > > However, on RedHat it core dumps. The problem lies in IsCf3VarString > (vars.c ~line 485): > > int IsCf3VarString(char *str) > > { char *sp; > char left = 'x', right = 'x'; > int dollar = false; > int bracks = 0, vars = 0; > > Debug1("IsCf3VarString(%s) - syntax verify\n",str); > > for (sp = str; *sp != '\0' ; sp++) /* check for varitems */ > > When RedHat core dumps, str is NULL. Other OS'es can deal with sp = > str, but RedHat does not. In a layman's attempt to patch, I just did: > > int IsCf3VarString(char *str) > > { char *sp; > char left = 'x', right = 'x'; > int dollar = false; > int bracks = 0, vars = 0; > > Debug1("IsCf3VarString(%s) - syntax verify\n",str); > > if ( str == NULL ) { > Debug("Found %d variables in (%s)\n",vars,str); > return vars; > } > > for (sp = str; *sp != '\0' ; sp++) /* check for varitems */ > > > It appears to work. I am not sure if this is the right way to do it, > but you get the idea. > > Thanks! > _______________________________________________ > Bug-cfengine mailing list > Bug-cfengine@cfengine.org > https://cfengine.org/mailman/listinfo/bug-cfengine
-- Mark Burgess ------------------------------------------------- Professor of Network and System Administration Oslo University College, Norway Personal Web: http://www.iu.hio.no/~mark Office Telf : +47 22453272 ------------------------------------------------- _______________________________________________ Bug-cfengine mailing list Bug-cfengine@cfengine.org https://cfengine.org/mailman/listinfo/bug-cfengine