Current-Users archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: Question about tmpfs



christos%astron.com@localhost (Christos Zoulas) wrote:
> In article <52713DFF.2000807%m00nbsd.net@localhost>,
> Maxime Villard  <max%m00nbsd.net@localhost> wrote:
> >Hi,
> >I have a question regarding the function tmpfs_alloc_node() in
> >fs/tmpfs/tmpfs_subr.c. When alloc'ing the area for symlinks,
> >there's this code:
> >
> >l.171
> >     nnode->tn_size = strlen(target);
> >     if (nnode->tn_size == 0) {
> >             nnode->tn_spec.tn_lnk.tn_link = NULL;
> >             break;
> >     }
> >     nnode->tn_spec.tn_lnk.tn_link =
> >         tmpfs_strname_alloc(tmp, nnode->tn_size);
> >     if (nnode->tn_spec.tn_lnk.tn_link == NULL) {
> >             tmpfs_node_put(tmp, nnode);
> >             return ENOSPC;
> >     }
> >     memcpy(nnode->tn_spec.tn_lnk.tn_link, target, nnode->tn_size);
> >
> >Only strlen(target) bytes are allocated for 'target', and only
> >strlen(target) bytes are copied from 'target' to 'tn_link'.
> >
> >Why isn't the '\0' taken into account? Is this intentional?
> 
> I don't think it is from a quick reading. The only reason it works,
> is because most of the time it rounds up.

It is not a bug, but it is potentially error-prone.  I adjusted the code:

http://mail-index.netbsd.org/source-changes/2013/10/31/msg048829.html

-- 
Mindaugas


Home | Main Index | Thread Index | Old Index