Current-Users archive

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

Re: Possible unsafe use of strncat in sbin/sysctl/sysctl.c



Am 23.08.11 23:44, schrieb Jimmy Johansson:
> On Tue, Aug 23, 2011 at 11:29:32PM +0200, Marc Balmer wrote:
>> Am 23.08.11 23:23, schrieb Jimmy Johansson:
>>> Hi,
>>>
>>>
> 
> [snip, patch that makes eyes bleed]
> 
>>
>> I don't like how functions, which return values are ignored, are casted
>> to (void).
>>
>> Who invented that idiom?  What is that good for, other than making your
>> eyes bleed?
>>
>> I think it is no more than quieting cc or lint.
> 
> I don't care either way, but it seems to be the suggested way to write
> code for NetBSD according to KFN. I even think that it mentioned casting
> return values from functions where you didn't handle the return value
> specifically at some point, but it doesn't do so now.
> 
> I don't want the eyes of anymore NetBSD developer to bleed though, so
> new patch. :-)

(void)wait!  That was a pure personal remark.  I really don't know where
that (void)bla idiom comes from, and I obviously don't (void)like it.

Some folks seems to (void)love it.

> 
> Index: sbin/sysctl/sysctl.c
> ===================================================================
> RCS file: /cvsroot/src/sbin/sysctl/sysctl.c,v
> retrieving revision 1.136
> diff -u -w -p -r1.136 sysctl.c
> --- sbin/sysctl/sysctl.c        3 Aug 2011 01:58:30 -0000       1.136
> +++ sbin/sysctl/sysctl.c        23 Aug 2011 21:41:15 -0000
> @@ -579,8 +579,8 @@ print_tree(int *name, u_int namelen, str
>                 for (ni = 0; ni < namelen; ni++) {
>                         (void)snprintf(n, sizeof(n), "%d", name[ni]);
>                         if (ni > 0)
> -                               strncat(gdname, ".", sizeof(gdname));
> -                       strncat(gdname, n, sizeof(gdname));
> +                               strlcat(gdname, ".", sizeof(gdname));
> +                       strlcat(gdname, n, sizeof(gdname));
>                 }
>         }
>  
> @@ -589,11 +589,11 @@ print_tree(int *name, u_int namelen, str
>         else if (add) {
>                 snprintf(n, sizeof(n), "%d", pnode->sysctl_num);
>                 if (namelen > 1) {
> -                       strncat(gsname, sep, sizeof(gsname));
> -                       strncat(gdname, ".", sizeof(gdname));
> +                       strlcat(gsname, sep, sizeof(gsname));
> +                       strlcat(gdname, ".", sizeof(gdname));
>                 }
> -               strncat(gsname, pnode->sysctl_name, sizeof(gsname));
> -               strncat(gdname, n, sizeof(gdname));
> +               strlcat(gsname, pnode->sysctl_name, sizeof(gsname));
> +               strlcat(gdname, n, sizeof(gdname));
>         }
>  
>         if (Mflag && pnode != &my_root) {
> 
> This is uniform with the other strlcat in the file too, so it might be
> for the better.
> 
> Regards,
> 
> Jimmy


-- 
  \~~~~~.                The NetBSD Foundation
   \~~~~~'               Marc Balmer, Developer / Marketing
  NetBSD
     \                   mbalmer%NetBSD.org@localhost   http://www.NetBSD.org/


Home | Main Index | Thread Index | Old Index