The real question is why is this NULL on redhat and not elsewhere

Eygene Ryabinkin wrote:
> Thu, Nov 12, 2009 at 01:23:50PM -0500, Matt Richards wrote:
>> 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,
> 
> Pardon me?  I think that all OSes can deal with "sp = str", but on only
> a small subset [1] the program will survive "*sp" when sp is NULL.  And
> this small subset tries to be polite to the programmers who don't bother
> checking for NULL pointers.
> 
> May be I am missing something?
> 
>> 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.
> 
> I would say that if something passes NULL to the IsCf3VarString(),
> then we should nail down the caller and fix it -- it is obvious that
> NULL can't be VarString, so, possibly, there is a bug in the caller
> code.
> 
> [1] HP-UX and System V comes to my mind.

-- 
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