[vdr] trouble with asprintf
Ludwig Nussel
ludwig.nussel at suse.de
Mon Feb 11 22:30:34 CET 2008
Udo Richter wrote:
> Wolfgang Rohdewald wrote:
> > char *s;
> > asprintf(&s,"%ld-%.9s",random(),artist.original());
> >
> > segfaults only if illegal utf8 chars appear in artist.original()
> >
> > asprintf returns -1, so s is nothing that could be freed,
> > and this gives a nice backtrace:
>
> So its basically just free'ing an uninitialized pointer.
>
> Well, that leads to the question whether s is unchanged in case of a -1
> error return, and whether this would work:
>
> char *s = NULL;
> asprintf(&s,"%ld-%.9s",random(),artist.original());
The manpage explicitly says that the content of s is undefined in
case of error. So even if it works you can't really count on it. You
can't get around checking the return value.
cu
Ludwig
--
(o_ Ludwig Nussel
//\ SUSE LINUX Products GmbH, Development
V_/_ http://www.suse.de/
More information about the vdr
mailing list