cvs commit: src/usr.sbin/setfmac setfmac.c
Robert Watson
rwatson at FreeBSD.org
Sun Jan 27 02:51:18 PST 2008
On Sun, 27 Jan 2008, Yar Tikhiy wrote:
> The format strings in question might just have a bug in them. My guess is
> that the author of the format strings feared that fts_path might not be
> NUL-terminated, so he explicitly specified variable precision of
> fts_pathlen; but he forgot to left-justify the field as well.
>
> In fact, fts_path in a fresh FTSENT just returned by fts_read() is always
> NUL-terminated. (See fts(3).) Tricks with fts_pathlen are necessary only
> if referring to old, saved FTSENTs, but this is dangerous and unportable
> anyway. setfmac seems to refer to fresh FTSENTs only, so the format can be
> changed safely from "%.*s" to just "%s". It will eliminate the fts_pathlen
> arguments to the printf-like functions completely.
>
> It was Robert Watson who committed the lines to setfmac.c, according to cvs
> annotate, so I added him to Cc:.
>
> Robert, do you think it's OK to simplify the format strings by changing
> "%.*s" to "%s" along with removing the fts_pathlen arguments? E.g.:
I think Brian Feldman may have originally submitted this part of the code
code, and likely it was a concern about nul-termination. I'm fine with the
change, especially if the concern about nul-termination was unfounded :-).
Robert N M Watson
Computer Laboratory
University of Cambridge
>
> case FTS_NS:
> - err(1, "traversing %.*s", ftsent->fts_pathlen,
> - ftsent->fts_path);
> + err(1, "traversing %s", ftsent->fts_path);
> default:
>
> Thanks!
>
> Yar
>
More information about the cvs-src
mailing list