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

Reply via email to