On Sun, Mar 18, 2007 at 11:47:46AM -0500, [EMAIL PROTECTED] wrote:
> In the ports I maintain I usually silence all the str*/sprintf warnings
> by replacing them with strl* or snprintf.  However in more than one port
> update I'm working on, I notice that the authors have chosen to do this
> rather than use strl*/strn*:
> 
> [...]
>       char             kdir[ MAXPATHLEN ];
>       [...]
>       if ( strlen( path ) >= MAXPATHLEN ) {
>           fprintf( stderr, "%s: path too long\n", path );
>           exit( 2 );
>       }
>       strcpy( kdir, path );
> [...]
> 
> So my question is:  should I leave the above code alone, or
> is it preferred to always replace strcat/strcpy/sprintf with
> strlcat/strlcpy/snprintf (checking return values of course)?
> 
> Thanks.

One large benefit of strlcpy is that it's hard to go wrong, and the
code does not need to be looked at, thus giving you more time to fix
other issues.

The best practice is to try to convince the authors of the software to
use strlcpy and snprintf, and to point them to the existing replacements
in OpenBSD.

In fact, it would make *a lot* of sense if someone were to produce some
autoconf/automake macro that checks for strlcpy and friends, and 
automatically provides replacements if they're not there...

Reply via email to