Source-Changes archive

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

Re: CVS commit: src/sys/dev/pci



On Mon, Apr 17, 2006 at 07:06:51PM +0000, Rui Paulo wrote:
  | 
  | Module Name:        src
  | Committed By:       rpaulo
  | Date:               Mon Apr 17 19:06:51 UTC 2006
  | 
  | Modified Files:
  |     src/sys/dev/pci: if_ipw.c if_ipwvar.h
  | 
  | Log Message:
  | Oops, 16 is not enough to store the firmware filenames, use 24.
  | 
  | 
  | To generate a diff of this commit:
  | cvs rdiff -r1.17 -r1.18 src/sys/dev/pci/if_ipw.c
  | cvs rdiff -r1.9 -r1.10 src/sys/dev/pci/if_ipwvar.h


I believe that it's far better style (and less error prone) to use:
        char foo[24];
        strncpy(foo, bar, sizeof(foo));
than
        char foo[24];
        strncpy(foo, bar, 24);
I.e, use sizeof() appropriately.

For that matter, I think in this situation it's even
better to use strlcpy():
        strlcpy(foo, bar, sizeof(foo));
since strncpy() does not NUL terminate if the length
of the src (excluding NUL) is the provided size, and
you're calling firmware_open() which expects the filename
to be NUL terminated.


IMHO, strncpy() should only be used when copying to a destination
where the API for that destination doesn't need a NUL termination,
such as the disklabel(5) type & pack fields, or utmp(5) fields.


cheers,
Luke.

Attachment: pgpd6pWx4eXlo.pgp
Description: PGP signature



Home | Main Index | Thread Index | Old Index