Re: [BUG] Broken code in orb.c



Raja R Harinath wrote:
> 
> "Momchil 'Velco' Velikov" <velco@fadata.bg> writes:
> > Well, the code is just wrong ... here's a patch
> >
> > Regards,
> > -velco--- orb.c.old   Sat Jan 23 03:23:58 1999
> > +++ orb.c     Sat Jan 23 03:25:12 1999
> > @@ -306,8 +306,8 @@
> >
> >               ctmp = g_get_home_dir();
> >
> > -             buf = alloca(strlen(ctmp) + sizeof("/.orbitrc"));
> > -             sprintf(ctmp, "%s/.orbitrc", buf);
> > +             buf = alloca(strlen(ctmp) + 9 /* strlen("/.orbitrc") */ + 1 );
> > +             sprintf(buf, "%s/.orbitrc", ctmp);
> >               ORBit_rc_load(buf, options);
> >       }
> 
> What?...
> 
> What's wrong with `sizeof("/.orbitrc")'.  The C compiler is smart
> enough to figure out the size occupied by a string literal (and yes,
> it also takes into account the trailing \0).


Shame, shame, shame ...
sizeof() is perfectly OK. The problem is in the sprintf(), it caused
e.g. gnome-name-service to coredump in CORBA_ORB_init (or a few calls
deeper.),
and it went away when I swapped the parameters.

Regards,
-velco



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]