On Thu, Apr 17, 2008 at 04:02:25PM +0200, Nico Golde wrote:
> Hi Mohammed,
> * Mohammed Sameer <[EMAIL PROTECTED]> [2008-04-17 15:53]:
> > On Wed, Apr 16, 2008 at 10:21:13PM +0200, Nico Golde wrote:
> > > * [EMAIL PROTECTED] [2008-04-16 22:05]:
> > > >   Thanks for the help. I have made a patch that would fix the possible 
> > > >   buffer overflows. Please check the attached patch.
> > > [...] 
> > > >         if(path[0]!='/')
> > > > -               sprintf(tmp,"%s/translations/%s",DATAPATH,path);
> > > > +               snprintf(tmp,302,"%s/translations/%s",DATAPATH,path);
> > > 
> > > off-by two. Why don't you just use sizeof(tmp)?
> > 
> > And why use sizeof(tmp) with the possibility of truncating the resulting 
> > string while we can
> > properly malloc() enough size to hold the whole path ?
> 
> Cause you have a maximum length for these values specified 
> by the shell and malloc(foo + somelength) operations often 
> lead to integer overflows (well not in this case).
> 
> Anyway, the 302 was fine since it was tmp from a different 
> source file where it is specified to have 302 bytes.


A maximum length for $HOME ? Never heard of that.
If you malloc(strlen(DATAPATH) + 1); then you won't overflow.

Cheers,

-- 
GPG-Key: 0xA3FD0DF7 - 9F73 032E EAC9 F7AD 951F  280E CB66 8E29 A3FD 0DF7
Debian User and Developer.
Homepage: www.foolab.org

Attachment: signature.asc
Description: Digital signature

Reply via email to