On Fri, Dec 18, 2020 at 01:46:49PM +0100, Theo Buehler wrote:
> On Fri, Dec 18, 2020 at 11:43:40AM +0100, Claudio Jeker wrote:
> > On Wed, Dec 02, 2020 at 05:06:28PM +0100, Claudio Jeker wrote:
> > > rpki-client passes both empty strings and NULL strings as zero length
> > > objects. The unmarshal code then allocates memory in any case and so a
> > > NULL string is unmarshalled as empty string. This is not great, currently
> > > there are no empty strings but a fair amount of NULL strings.
> > > This diff changes the behaviour and now NULL is passed as NULL.
> > > This should simplify passing optional strings (e.g. in the entity queue
> > > code).
> > 
> > I will commit this later today. It will help with some further cleanup of
> > the codebase.
> 
> I'm a bit torn about this. Some of the callers clearly do not expect
> having to deal with NULL.
> 
> I see some *printf("%s", NULL) (for example in proc_rsync()) that should
> never happen but can now happen with this change. I'm unsure that there
> are no NULL derefs that this introduces. I'm fine with this going in if
> you intend to address this as part of the further cleanup work you
> envision.
> 

In most cases the code expects a non-empty string. For example in the
rsync.c case neither host nor mod are allowed to be NULL or "".
I guess adding an assert(host && mod) would be enough there.
I actually prefer the code to blow up since as mentioned
empty strings are almost always wrong (e.g. empty filenames or hashes).
Indeed in all those cases a check for NULL should be added in the
unmarshal function.

-- 
:wq Claudio

Reply via email to