[PATCH] drivers/* strlcpy conversions

Ben Collins (bcollins@debian.org)
Mon, 26 May 2003 01:45:16 -0400


Well, this is it for me and strlcpy. I'll leave the rest of the
non-obvious usages of strncpy to the kernel janitors. Seems like quite a
few uses really wanted memcpy instead, but I don't have time to
investigate them all. It does appear that nearly all strncpy's will be
removable. Obsoleting strncpy will probably atleast make the remaining
few think about how they are using it.

This is the patch for my trip through drivers/*.

Index: linux-2.5/drivers/media/video/zr36067.c
===================================================================
--- linux-2.5/drivers/media/video/zr36067.c (revision 10182)
+++ linux-2.5/drivers/media/video/zr36067.c (working copy)
@@ -3356,7 +3356,7 @@
struct video_capability b;
DEBUG2(printk("%s: ioctl VIDIOCGCAP\n", zr->name));

- strncpy(b.name, zr->video_dev.name,
+ strlcpy(b.name, zr->video_dev.name,
sizeof(b.name));
b.type =
VID_TYPE_CAPTURE | VID_TYPE_OVERLAY |
Index: linux-2.5/drivers/media/video/bttv-driver.c
===================================================================
--- linux-2.5/drivers/media/video/bttv-driver.c (revision 10182)
+++ linux-2.5/drivers/media/video/bttv-driver.c (working copy)
@@ -2309,7 +2309,7 @@
if (0 == v4l2)
return -EINVAL;
strcpy(cap->driver,"bttv");
- strncpy(cap->card,btv->video_dev.name,sizeof(cap->card));
+ strlcpy(cap->card,btv->video_dev.name,sizeof(cap->card));
sprintf(cap->bus_info,"PCI:%s",btv->dev->slot_name);
cap->version = BTTV_VERSION_CODE;
cap->capabilities =
@@ -2367,7 +2367,7 @@
f->index = index;
f->type = type;
f->pixelformat = bttv_formats[i].fourcc;
- strncpy(f->description,bttv_formats[i].name,31);
+ strlcpy(f->description,bttv_formats[i].name,sizeof(f->description));
return 0;
}

Index: linux-2.5/drivers/media/video/saa7185.c
===================================================================
--- linux-2.5/drivers/media/video/saa7185.c (revision 10182)
+++ linux-2.5/drivers/media/video/saa7185.c (working copy)
@@ -202,7 +202,7 @@


memset(encoder, 0, sizeof(*encoder));
- strncpy(client->dev.name, "saa7185", DEVICE_NAME_SIZE);
+ strlcpy(client->dev.name, "saa7185", DEVICE_NAME_SIZE);
encoder->client = client;
i2c_set_clientdata(client, encoder);
encoder->addr = addr;
Index: linux-2.5/drivers/media/video/adv7175.c
===================================================================
--- linux-2.5/drivers/media/video/adv7175.c (revision 10182)
+++ linux-2.5/drivers/media/video/adv7175.c (working copy)
@@ -191,7 +191,7 @@
// We should never get here!!!
dname = unknown_name;
}
- strncpy(client->dev.name, dname, DEVICE_NAME_SIZE);
+ strlcpy(client->dev.name, dname, DEVICE_NAME_SIZE);
init_MUTEX(&encoder->lock);
encoder->client = client;
i2c_set_clientdata(client, encoder);
Index: linux-2.5/drivers/media/video/saa7134/saa7134-oss.c
===================================================================
--- linux-2.5/drivers/media/video/saa7134/saa7134-oss.c (revision 10182)
+++ linux-2.5/drivers/media/video/saa7134/saa7134-oss.c (working copy)
@@ -636,8 +636,8 @@
{
mixer_info info;
memset(&info,0,sizeof(info));
- strncpy(info.id, "TV audio", sizeof(info.id)-1);
- strncpy(info.name, dev->name, sizeof(info.name)-1);
+ strlcpy(info.id, "TV audio", sizeof(info.id));
+ strlcpy(info.name, dev->name, sizeof(info.name));
info.modify_counter = dev->oss.count;
if (copy_to_user((void *)arg, &info, sizeof(info)))
return -EFAULT;
@@ -647,8 +647,8 @@
{
_old_mixer_info info;
memset(&info,0,sizeof(info));
- strncpy(info.id, "TV audio", sizeof(info.id)-1);
- strncpy(info.name, dev->name, sizeof(info.name)-1);
+ strlcpy(info.id, "TV audio", sizeof(info.id));
+ strlcpy(info.name, dev->name, sizeof(info.name));
if (copy_to_user((void *)arg, &info, sizeof(info)))
return -EFAULT;
return 0;
Index: linux-2.5/drivers/media/video/saa7134/saa7134-video.c
===================================================================
--- linux-2.5/drivers/media/video/saa7134/saa7134-video.c (revision 10182)
+++ linux-2.5/drivers/media/video/saa7134/saa7134-video.c (working copy)
@@ -1501,7 +1501,7 @@

memset(cap,0,sizeof(*cap));
strcpy(cap->driver, "saa7134");
- strncpy(cap->card, saa7134_boards[dev->board].name,
+ strlcpy(cap->card, saa7134_boards[dev->board].name,
sizeof(cap->card));
sprintf(cap->bus_info,"PCI:%s",dev->pci->slot_name);
cap->version = SAA7134_VERSION_CODE;
@@ -1733,7 +1733,7 @@
memset(f,0,sizeof(*f));
f->index = index;
f->type = type;
- strncpy(f->description,formats[index].name,31);
+ strlcpy(f->description,formats[index].name,sizeof(f->description));
f->pixelformat = formats[index].fourcc;
break;
case V4L2_BUF_TYPE_VBI_CAPTURE:
@@ -1901,7 +1901,7 @@

memset(cap,0,sizeof(*cap));
strcpy(cap->driver, "saa7134");
- strncpy(cap->card, saa7134_boards[dev->board].name,
+ strlcpy(cap->card, saa7134_boards[dev->board].name,
sizeof(cap->card));
sprintf(cap->bus_info,"PCI:%s",dev->pci->slot_name);
cap->version = SAA7134_VERSION_CODE;
Index: linux-2.5/drivers/media/video/saa7134/saa7134-ts.c
===================================================================
--- linux-2.5/drivers/media/video/saa7134/saa7134-ts.c (revision 10182)
+++ linux-2.5/drivers/media/video/saa7134/saa7134-ts.c (working copy)
@@ -251,7 +251,7 @@

memset(cap,0,sizeof(*cap));
strcpy(cap->driver, "saa7134");
- strncpy(cap->card, saa7134_boards[dev->board].name,
+ strlcpy(cap->card, saa7134_boards[dev->board].name,
sizeof(cap->card));
sprintf(cap->bus_info,"PCI:%s",dev->pci->slot_name);
cap->version = SAA7134_VERSION_CODE;
@@ -300,7 +300,7 @@

memset(f,0,sizeof(*f));
f->index = index;
- strncpy(f->description, "MPEG TS", 31);
+ strlcpy(f->description, "MPEG TS", sizeof(f->description));
f->type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
f->pixelformat = V4L2_PIX_FMT_MPEG;
return 0;
Index: linux-2.5/drivers/media/video/bt856.c
===================================================================
--- linux-2.5/drivers/media/video/bt856.c (revision 10182)
+++ linux-2.5/drivers/media/video/bt856.c (working copy)
@@ -123,7 +123,7 @@


memset(encoder, 0, sizeof(struct bt856));
- strncpy(client->dev.name, "bt856", DEVICE_NAME_SIZE);
+ strlcpy(client->dev.name, "bt856", DEVICE_NAME_SIZE);
encoder->client = client;
i2c_set_clientdata(client, encoder);
encoder->addr = client->addr;
Index: linux-2.5/drivers/media/video/saa7110.c
===================================================================
--- linux-2.5/drivers/media/video/saa7110.c (revision 10182)
+++ linux-2.5/drivers/media/video/saa7110.c (working copy)
@@ -176,7 +176,7 @@

/* clear our private data */
memset(decoder, 0, sizeof(*decoder));
- strncpy(client->dev.name, IF_NAME, DEVICE_NAME_SIZE);
+ strlcpy(client->dev.name, IF_NAME, DEVICE_NAME_SIZE);
decoder->client = client;
i2c_set_clientdata(client, decoder);
decoder->addr = addr;
Index: linux-2.5/drivers/media/video/v4l2-common.c
===================================================================
--- linux-2.5/drivers/media/video/v4l2-common.c (revision 10182)
+++ linux-2.5/drivers/media/video/v4l2-common.c (working copy)
@@ -113,7 +113,7 @@
vs->frameperiod.denominator = 25;
vs->framelines = 625;
}
- strncpy(vs->name,name,sizeof(vs->name));
+ strlcpy(vs->name,name,sizeof(vs->name));
return 0;
}

Index: linux-2.5/drivers/media/video/saa5249.c
===================================================================
--- linux-2.5/drivers/media/video/saa5249.c (revision 10182)
+++ linux-2.5/drivers/media/video/saa5249.c (working copy)
@@ -171,7 +171,7 @@
return -ENOMEM;
}
memset(t, 0, sizeof(*t));
- strncpy(client->dev.name, IF_NAME, DEVICE_NAME_SIZE);
+ strlcpy(client->dev.name, IF_NAME, DEVICE_NAME_SIZE);
init_MUTEX(&t->lock);

/*
Index: linux-2.5/drivers/media/video/tvmixer.c
===================================================================
--- linux-2.5/drivers/media/video/tvmixer.c (revision 10182)
+++ linux-2.5/drivers/media/video/tvmixer.c (working copy)
@@ -83,8 +83,8 @@

if (cmd == SOUND_MIXER_INFO) {
mixer_info info;
- strncpy(info.id, "tv card", sizeof(info.id));
- strncpy(info.name, i2c_clientname(client), sizeof(info.name));
+ strlcpy(info.id, "tv card", sizeof(info.id));
+ strlcpy(info.name, i2c_clientname(client), sizeof(info.name));
info.modify_counter = 42 /* FIXME */;
if (copy_to_user((void *)arg, &info, sizeof(info)))
return -EFAULT;
@@ -92,8 +92,8 @@
}
if (cmd == SOUND_OLD_MIXER_INFO) {
_old_mixer_info info;
- strncpy(info.id, "tv card", sizeof(info.id));
- strncpy(info.name, i2c_clientname(client), sizeof(info.name));
+ strlcpy(info.id, "tv card", sizeof(info.id));
+ strlcpy(info.name, i2c_clientname(client), sizeof(info.name));
if (copy_to_user((void *)arg, &info, sizeof(info)))
return -EFAULT;
return 0;
Index: linux-2.5/drivers/media/video/bt819.c
===================================================================
--- linux-2.5/drivers/media/video/bt819.c (revision 10182)
+++ linux-2.5/drivers/media/video/bt819.c (working copy)
@@ -172,7 +172,7 @@
}

memset(decoder, 0, sizeof(struct bt819));
- strncpy(client->dev.name, "bt819", DEVICE_NAME_SIZE);
+ strlcpy(client->dev.name, "bt819", DEVICE_NAME_SIZE);
i2c_set_clientdata(client, decoder);
decoder->client = client;
decoder->addr = addr;
Index: linux-2.5/drivers/media/video/saa7111.c
===================================================================
--- linux-2.5/drivers/media/video/saa7111.c (revision 10182)
+++ linux-2.5/drivers/media/video/saa7111.c (working copy)
@@ -122,7 +122,7 @@
}

memset(decoder, 0, sizeof(*decoder));
- strncpy(client->dev.name, "saa7111", DEVICE_NAME_SIZE);
+ strlcpy(client->dev.name, "saa7111", DEVICE_NAME_SIZE);
decoder->client = client;
i2c_set_clientdata(client, decoder);
decoder->addr = addr;
Index: linux-2.5/drivers/media/video/tuner.c
===================================================================
--- linux-2.5/drivers/media/video/tuner.c (revision 10182)
+++ linux-2.5/drivers/media/video/tuner.c (working copy)
@@ -824,7 +824,7 @@
if (type < TUNERS) {
t->type = type;
printk("tuner(bttv): type forced to %d (%s) [insmod]\n",t->type,tuners[t->type].name);
- strncpy(client->dev.name, tuners[t->type].name, DEVICE_NAME_SIZE);
+ strlcpy(client->dev.name, tuners[t->type].name, DEVICE_NAME_SIZE);
}
i2c_attach_client(client);
if (t->type == TUNER_MT2032)
@@ -875,7 +875,7 @@
t->type = *iarg;
printk("tuner: type set to %d (%s)\n",
t->type,tuners[t->type].name);
- strncpy(client->dev.name, tuners[t->type].name, DEVICE_NAME_SIZE);
+ strlcpy(client->dev.name, tuners[t->type].name, DEVICE_NAME_SIZE);
if (t->type == TUNER_MT2032)
mt2032_init(client);
break;
Index: linux-2.5/drivers/media/common/saa7146_video.c
===================================================================
--- linux-2.5/drivers/media/common/saa7146_video.c (revision 10182)
+++ linux-2.5/drivers/media/common/saa7146_video.c (working copy)
@@ -801,7 +801,7 @@
DEB_EE(("VIDIOC_QUERYCAP\n"));

strcpy(cap->driver, "saa7146 v4l2");
- strncpy(cap->card, dev->ext->name, sizeof(cap->card));
+ strlcpy(cap->card, dev->ext->name, sizeof(cap->card));
sprintf(cap->bus_info,"PCI:%s",dev->pci->slot_name);
cap->version = SAA7146_VERSION_CODE;
cap->capabilities =
@@ -868,7 +868,7 @@
}
memset(f,0,sizeof(*f));
f->index = index;
- strncpy(f->description,formats[index].name,31);
+ strlcpy(f->description,formats[index].name,sizeof(f->description));
f->pixelformat = formats[index].pixelformat;
break;
}
Index: linux-2.5/drivers/media/common/saa7146_fops.c
===================================================================
--- linux-2.5/drivers/media/common/saa7146_fops.c (revision 10182)
+++ linux-2.5/drivers/media/common/saa7146_fops.c (working copy)
@@ -430,7 +430,7 @@
DEB_EE(("dev:%p, name:'%s'\n",dev,name));

*vid = device_template;
- strncpy(vid->name, name, 32);
+ strlcpy(vid->name, name, sizeof(vid->name));
vid->priv = dev;

// fixme: -1 should be an insmod parameter *for the extension* (like "video_nr");
Index: linux-2.5/drivers/hotplug/pci_hotplug_core.c
===================================================================
--- linux-2.5/drivers/hotplug/pci_hotplug_core.c (revision 10182)
+++ linux-2.5/drivers/hotplug/pci_hotplug_core.c (working copy)
@@ -529,7 +529,7 @@
if ((slot->info == NULL) || (slot->ops == NULL))
return -EINVAL;

- strncpy(slot->kobj.name, slot->name, KOBJ_NAME_LEN);
+ strlcpy(slot->kobj.name, slot->name, KOBJ_NAME_LEN);
kobj_set_kset_s(slot, hotplug_slots_subsys);

/* this can fail if we have already registered a slot with the same name */
Index: linux-2.5/drivers/message/fusion/mptctl.c
===================================================================
--- linux-2.5/drivers/message/fusion/mptctl.c (revision 10182)
+++ linux-2.5/drivers/message/fusion/mptctl.c (working copy)
@@ -1317,7 +1317,7 @@

/* Set the Version Strings.
*/
- strncpy (karg.driverVersion, MPT_LINUX_PACKAGE_NAME, MPT_IOCTL_VERSION_LENGTH);
+ strlcpy (karg.driverVersion, MPT_LINUX_PACKAGE_NAME, MPT_IOCTL_VERSION_LENGTH);

karg.busChangeEvent = 0;
karg.hostId = ioc->pfacts[port].PortSCSIID;
@@ -1517,8 +1517,8 @@
#else
karg.chip_type = ioc->chip_type;
#endif
- strncpy (karg.name, ioc->name, MPT_MAX_NAME);
- strncpy (karg.product, ioc->prod_name, MPT_PRODUCT_LENGTH);
+ strlcpy (karg.name, ioc->name, MPT_MAX_NAME);
+ strlcpy (karg.product, ioc->prod_name, MPT_PRODUCT_LENGTH);

/* Copy the data from kernel memory to user memory
*/
@@ -2488,7 +2488,7 @@
cfg.dir = 0; /* read */
cfg.timeout = 10;

- strncpy(karg.serial_number, " ", 24);
+ strlcpy(karg.serial_number, " ", sizeof(karg.serial_number));
if (mpt_config(ioc, &cfg) == 0) {
if (cfg.hdr->PageLength > 0) {
/* Issue the second config page request */
@@ -2500,7 +2500,8 @@
if (mpt_config(ioc, &cfg) == 0) {
ManufacturingPage0_t *pdata = (ManufacturingPage0_t *) pbuf;
if (strlen(pdata->BoardTracerNumber) > 1)
- strncpy(karg.serial_number, pdata->BoardTracerNumber, 24);
+ strlcpy(karg.serial_number, pdata->BoardTracerNumber,
+ sizeof(karg.serial_number));
}
pci_free_consistent(ioc->pcidev, hdr.PageLength * 4, pbuf, buf_dma);
pbuf = NULL;
Index: linux-2.5/drivers/mtd/cmdline.c
===================================================================
--- linux-2.5/drivers/mtd/cmdline.c (revision 10182)
+++ linux-2.5/drivers/mtd/cmdline.c (working copy)
@@ -187,8 +187,7 @@
parts[this_part].mask_flags = mask_flags;
if (name)
{
- strncpy(extra_mem, name, name_len);
- extra_mem[name_len] = 0;
+ strlcpy(extra_mem, name, name_len + 1);
}
else
{
@@ -267,8 +266,7 @@
this_mtd->parts = parts;
this_mtd->num_parts = num_parts;
this_mtd->mtd_id = (char*)(this_mtd + 1);
- strncpy(this_mtd->mtd_id, mtd_id, mtd_id_len);
- this_mtd->mtd_id[mtd_id_len] = 0;
+ strlcpy(this_mtd->mtd_id, mtd_id, mtd_id_len + 1);

/* link into chain */
this_mtd->next = partitions;
Index: linux-2.5/drivers/mtd/chips/jedec.c
===================================================================
--- linux-2.5/drivers/mtd/chips/jedec.c (revision 10182)
+++ linux-2.5/drivers/mtd/chips/jedec.c (working copy)
@@ -168,8 +168,7 @@
/* Generate a part name that includes the number of different chips and
other configuration information */
count = 1;
- strncpy(Part,map->name,sizeof(Part)-10);
- Part[sizeof(Part)-11] = 0;
+ strlcpy(Part,map->name,sizeof(Part)-10);
strcat(Part," ");
Uniq = 0;
for (I = 0; priv->chips[I].jedec != 0 && I < MAX_JEDEC_CHIPS; I++)
@@ -246,8 +245,7 @@
// printk("Part: '%s'\n",Part);

memset(MTD,0,sizeof(*MTD));
- // strncpy(MTD->name,Part,sizeof(MTD->name));
- // MTD->name[sizeof(MTD->name)-1] = 0;
+ // strlcpy(MTD->name,Part,sizeof(MTD->name));
MTD->name = map->name;
MTD->type = MTD_NORFLASH;
MTD->flags = MTD_CAP_NORFLASH;
Index: linux-2.5/drivers/isdn/isdnloop/isdnloop.c
===================================================================
--- linux-2.5/drivers/isdn/isdnloop/isdnloop.c (revision 10182)
+++ linux-2.5/drivers/isdn/isdnloop/isdnloop.c (working copy)
@@ -125,7 +125,7 @@
char *s = strpbrk(t, ",");

*s++ = '\0';
- strncpy(cmd->parm.setup.phone, t, sizeof(cmd->parm.setup.phone));
+ strlcpy(cmd->parm.setup.phone, t, sizeof(cmd->parm.setup.phone));
s = strpbrk(t = s, ",");
*s++ = '\0';
if (!strlen(t))
@@ -139,7 +139,7 @@
else
cmd->parm.setup.si2 =
simple_strtoul(t, NULL, 10);
- strncpy(cmd->parm.setup.eazmsn, s, sizeof(cmd->parm.setup.eazmsn));
+ strlcpy(cmd->parm.setup.eazmsn, s, sizeof(cmd->parm.setup.eazmsn));
cmd->parm.setup.plan = 0;
cmd->parm.setup.screen = 0;
}
@@ -228,21 +228,21 @@
break;
case 5:
/* CIF */
- strncpy(cmd.parm.num, status + 3, sizeof(cmd.parm.num) - 1);
+ strlcpy(cmd.parm.num, status + 3, sizeof(cmd.parm.num));
break;
case 6:
/* AOC */
- sprintf(cmd.parm.num, "%d",
+ snprintf(cmd.parm.num, sizeof(cmd.parm.num), "%d",
(int) simple_strtoul(status + 7, NULL, 16));
break;
case 7:
/* CAU */
status += 3;
if (strlen(status) == 4)
- sprintf(cmd.parm.num, "%s%c%c",
+ snprintf(cmd.parm.num, sizeof(cmd.parm.num), "%s%c%c",
status + 2, *status, *(status + 1));
else
- strncpy(cmd.parm.num, status + 1, sizeof(cmd.parm.num) - 1);
+ strlcpy(cmd.parm.num, status + 1, sizeof(cmd.parm.num));
break;
case 8:
/* Misc Errors on L1 and L2 */
@@ -1467,7 +1467,7 @@
ISDN_FEATURE_L3_TRANS |
ISDN_FEATURE_P_UNKNOWN;
card->ptype = ISDN_PTYPE_UNKNOWN;
- strncpy(card->interface.id, id, sizeof(card->interface.id) - 1);
+ strlcpy(card->interface.id, id, sizeof(card->interface.id));
card->msg_buf_write = card->msg_buf;
card->msg_buf_read = card->msg_buf;
card->msg_buf_end = &card->msg_buf[sizeof(card->msg_buf) - 1];
Index: linux-2.5/drivers/isdn/i4l/isdn_net_lib.c
===================================================================
--- linux-2.5/drivers/isdn/i4l/isdn_net_lib.c (revision 10182)
+++ linux-2.5/drivers/isdn/i4l/isdn_net_lib.c (working copy)
@@ -270,8 +270,7 @@
int chidx = -1;
char drvid[25];

- strncpy(drvid, cfg->drvid, 24);
- drvid[24] = 0;
+ strlcpy(drvid, cfg->drvid, sizeof(drvid));

if (cfg->exclusive && !strlen(drvid)) {
/* If we want to bind exclusively, need to specify drv/chan */
@@ -562,8 +561,7 @@
if (retval)
goto out;

- strncpy(mlp->msn, cfg->eaz, ISDN_MSNLEN-1);
- mlp->msn[ISDN_MSNLEN-1] = 0;
+ strlcpy(mlp->msn, cfg->eaz, sizeof(mlp->msn));
mlp->onhtime = cfg->onhtime;
idev->charge = cfg->charge;
mlp->l2_proto = cfg->l2_proto;
@@ -864,7 +862,7 @@

slot = idev->isdn_slot;

- strncpy(phone->phone, slot->num, ISDN_MSNLEN);
+ strlcpy(phone->phone, slot->num, sizeof(phone->phone));
phone->outgoing = USG_OUTGOING(slot->usage);

if (copy_to_user(peer, phone, sizeof(*peer)))
Index: linux-2.5/drivers/isdn/i4l/isdn_ppp.c
===================================================================
--- linux-2.5/drivers/isdn/i4l/isdn_ppp.c (revision 10182)
+++ linux-2.5/drivers/isdn/i4l/isdn_ppp.c (working copy)
@@ -467,11 +467,11 @@
memset(&pci, 0, sizeof(pci));

mlp = idev->mlp;
- strncpy(pci.local_num, mlp->msn, 63);
+ strlcpy(pci.local_num, mlp->msn, sizeof(pci.local_num));
i = 0;
list_for_each_entry(phone, &mlp->phone[1], list) {
if (i++ == idev->dial) {
- strncpy(pci.remote_num,phone->num,63);
+ strlcpy(pci.remote_num,phone->num,sizeof(pci.remote_num));
break;
}
}
Index: linux-2.5/drivers/isdn/eicon/eicon_idi.c
===================================================================
--- linux-2.5/drivers/isdn/eicon/eicon_idi.c (revision 10182)
+++ linux-2.5/drivers/isdn/eicon/eicon_idi.c (working copy)
@@ -1118,8 +1118,7 @@
//eicon_log(NULL, 128, "sT30:universal_7 = %x\n", t30->universal_7);
eicon_log(NULL, 128, "sT30:station_id_len = %x\n", t30->station_id_len);
eicon_log(NULL, 128, "sT30:head_line_len = %x\n", t30->head_line_len);
- strncpy(st, t30->station_id, t30->station_id_len);
- st[t30->station_id_len] = 0;
+ strlcpy(st, t30->station_id, t30->station_id_len + 1);
eicon_log(NULL, 128, "sT30:station_id = <%s>\n", st);
}
return(sizeof(eicon_t30_s));
@@ -1195,8 +1194,7 @@
//eicon_log(ccard, 128, "rT30:universal_7 = %x\n", p->universal_7);
eicon_log(ccard, 128, "rT30:station_id_len = %x\n", p->station_id_len);
eicon_log(ccard, 128, "rT30:head_line_len = %x\n", p->head_line_len);
- strncpy(st, p->station_id, p->station_id_len);
- st[p->station_id_len] = 0;
+ strlcpy(st, p->station_id, p->station_id_len + 1);
eicon_log(ccard, 128, "rT30:station_id = <%s>\n", st);
}
if (!chan->fax) {
Index: linux-2.5/drivers/isdn/eicon/eicon_mod.c
===================================================================
--- linux-2.5/drivers/isdn/eicon/eicon_mod.c (revision 10182)
+++ linux-2.5/drivers/isdn/eicon/eicon_mod.c (working copy)
@@ -848,7 +848,7 @@
ISDN_FEATURE_P_UNKNOWN;
card->interface.hl_hdrlen = 20;
card->ptype = ISDN_PTYPE_UNKNOWN;
- strncpy(card->interface.id, id, sizeof(card->interface.id) - 1);
+ strlcpy(card->interface.id, id, sizeof(card->interface.id));
card->myid = -1;
card->type = Type;
switch (Type) {
Index: linux-2.5/drivers/isdn/hardware/avm/b1.c
===================================================================
--- linux-2.5/drivers/isdn/hardware/avm/b1.c (revision 10182)
+++ linux-2.5/drivers/isdn/hardware/avm/b1.c (working copy)
@@ -433,9 +433,9 @@
j++, i += cinfo->versionbuf[i] + 1)
cinfo->version[j] = &cinfo->versionbuf[i + 1];

- strncpy(ctrl->serial, cinfo->version[VER_SERIAL], CAPI_SERIAL_LEN);
+ strlcpy(ctrl->serial, cinfo->version[VER_SERIAL], sizeof(ctrl->serial));
memcpy(&ctrl->profile, cinfo->version[VER_PROFILE],sizeof(capi_profile));
- strncpy(ctrl->manu, "AVM GmbH", CAPI_MANUFACTURER_LEN);
+ strlcpy(ctrl->manu, "AVM GmbH", sizeof(ctrl->manu));
dversion = cinfo->version[VER_DRIVER];
ctrl->version.majorversion = 2;
ctrl->version.minorversion = 0;
@@ -785,8 +785,7 @@
char rev[32];

if ((p = strchr(revision, ':')) != 0 && p[1]) {
- strncpy(rev, p + 2, sizeof(rev));
- rev[sizeof(rev)-1] = 0;
+ strlcpy(rev, p + 2, sizeof(rev));
if ((p = strchr(rev, '$')) != 0 && p > rev)
*(p-1) = 0;
} else
Index: linux-2.5/drivers/isdn/hardware/avm/b1dma.c
===================================================================
--- linux-2.5/drivers/isdn/hardware/avm/b1dma.c (revision 10182)
+++ linux-2.5/drivers/isdn/hardware/avm/b1dma.c (working copy)
@@ -945,8 +945,7 @@
char rev[32];

if ((p = strchr(revision, ':')) != 0 && p[1]) {
- strncpy(rev, p + 2, sizeof(rev));
- rev[sizeof(rev)-1] = 0;
+ strlcpy(rev, p + 2, sizeof(rev));
if ((p = strchr(rev, '$')) != 0 && p > rev)
*(p-1) = 0;
} else
Index: linux-2.5/drivers/isdn/hardware/avm/avm_cs.c
===================================================================
--- linux-2.5/drivers/isdn/hardware/avm/avm_cs.c (revision 10182)
+++ linux-2.5/drivers/isdn/hardware/avm/avm_cs.c (working copy)
@@ -320,7 +320,7 @@

devname[0] = 0;
if( !first_tuple(handle, &tuple, &parse) && parse.version_1.ns > 1 ) {
- strncpy(devname,parse.version_1.str + parse.version_1.ofs[1],
+ strlcpy(devname,parse.version_1.str + parse.version_1.ofs[1],
sizeof(devname));
}
/*
Index: linux-2.5/drivers/isdn/hardware/eicon/um_idi.c
===================================================================
--- linux-2.5/drivers/isdn/hardware/eicon/um_idi.c (revision 10182)
+++ linux-2.5/drivers/isdn/hardware/eicon/um_idi.c (working copy)
@@ -66,8 +66,8 @@
sync_req.GetName.Req = 0;
sync_req.GetName.Rc = IDI_SYNC_REQ_GET_NAME;
(*(a->d.request)) ((ENTITY *) & sync_req);
- strncpy(features->name, sync_req.GetName.name,
- sizeof(features->name) - 1);
+ strlcpy(features->name, sync_req.GetName.name,
+ sizeof(features->name));

sync_req.GetSerial.Req = 0;
sync_req.GetSerial.Rc = IDI_SYNC_REQ_GET_SERIAL;
Index: linux-2.5/drivers/isdn/hardware/eicon/i4l_idi.c
===================================================================
--- linux-2.5/drivers/isdn/hardware/eicon/i4l_idi.c (revision 10182)
+++ linux-2.5/drivers/isdn/hardware/eicon/i4l_idi.c (working copy)
@@ -1127,8 +1127,7 @@
//eicon_log(NULL, 128, "sT30:universal_7 = %x\n", t30->universal_7);
eicon_log(NULL, 128, "sT30:station_id_len = %x\n", t30->station_id_len);
eicon_log(NULL, 128, "sT30:head_line_len = %x\n", t30->head_line_len);
- strncpy(st, t30->station_id, t30->station_id_len);
- st[t30->station_id_len] = 0;
+ strlcpy(st, t30->station_id, t30->station_id_len + 1);
eicon_log(NULL, 128, "sT30:station_id = <%s>\n", st);
}
return(sizeof(eicon_t30_s));
@@ -1204,8 +1203,7 @@
//eicon_log(ccard, 128, "rT30:universal_7 = %x\n", p->universal_7);
eicon_log(ccard, 128, "rT30:station_id_len = %x\n", p->station_id_len);
eicon_log(ccard, 128, "rT30:head_line_len = %x\n", p->head_line_len);
- strncpy(st, p->station_id, p->station_id_len);
- st[p->station_id_len] = 0;
+ strlcpy(st, p->station_id, p->station_id_len + 1);
eicon_log(ccard, 128, "rT30:station_id = <%s>\n", st);
}
if (!chan->fax) {
Index: linux-2.5/drivers/isdn/hardware/eicon/divasfunc.c
===================================================================
--- linux-2.5/drivers/isdn/hardware/eicon/divasfunc.c (revision 10182)
+++ linux-2.5/drivers/isdn/hardware/eicon/divasfunc.c (working copy)
@@ -77,16 +77,10 @@
d.features = IoAdapters[card - 1]->Properties.Features;
DBG_TRC(("DIDD register A(%d) channels=%d", card,
d.channels))
- /* workaround for different Name in structure */
- strncpy(IoAdapters[card - 1]->Name,
- IoAdapters[card - 1]->Properties.Name, MIN(30,
- strlen
- (IoAdapters
- [card
- -
- 1]->
- Properties.
- Name)));
+ /* workaround for different Name in structure */
+ strlcpy(IoAdapters[card - 1]->Name,
+ IoAdapters[card - 1]->Properties.Name,
+ sizeof(IoAdapters[card - 1]->Name));
req.didd_remove_adapter.e.Req = 0;
req.didd_add_adapter.e.Rc = IDI_SYNC_REQ_DIDD_ADD_ADAPTER;
req.didd_add_adapter.info.descriptor = (void *) &d;
Index: linux-2.5/drivers/isdn/hardware/eicon/capifunc.c
===================================================================
--- linux-2.5/drivers/isdn/hardware/eicon/capifunc.c (revision 10182)
+++ linux-2.5/drivers/isdn/hardware/eicon/capifunc.c (working copy)
@@ -512,7 +512,7 @@
sync_req.GetName.Req = 0;
sync_req.GetName.Rc = IDI_SYNC_REQ_GET_NAME;
card->d.request((ENTITY *) & sync_req);
- strncpy(card->name, sync_req.GetName.name, sizeof(card->name));
+ strlcpy(card->name, sync_req.GetName.name, sizeof(card->name));
ctrl = &card->capi_ctrl;
strcpy(ctrl->name, card->name);
ctrl->register_appl = diva_register_appl;
@@ -528,7 +528,7 @@
return (0);
}
card->Id = find_free_id();
- strncpy(ctrl->manu, M_COMPANY, CAPI_MANUFACTURER_LEN);
+ strlcpy(ctrl->manu, M_COMPANY, sizeof(ctrl->manu));
ctrl->version.majorversion = 2;
ctrl->version.minorversion = 0;
ctrl->version.majormanuversion = DRRELMAJOR;
@@ -544,7 +544,7 @@
sprintf(serial, "%ld", sync_req.GetSerial.serial);
}
serial[CAPI_SERIAL_LEN - 1] = 0;
- strncpy(ctrl->serial, serial, CAPI_SERIAL_LEN);
+ strlcpy(ctrl->serial, serial, sizeof(ctrl->serial));

a = &adapter[card->Id - 1];
card->adapter = a;
Index: linux-2.5/drivers/isdn/act2000/module.c
===================================================================
--- linux-2.5/drivers/isdn/act2000/module.c (revision 10182)
+++ linux-2.5/drivers/isdn/act2000/module.c (working copy)
@@ -601,7 +601,7 @@
ISDN_FEATURE_P_UNKNOWN;
card->interface.hl_hdrlen = 20;
card->ptype = ISDN_PTYPE_EURO;
- strncpy(card->interface.id, id, sizeof(card->interface.id) - 1);
+ strlcpy(card->interface.id, id, sizeof(card->interface.id));
for (i=0; i<ACT2000_BCH; i++) {
card->bch[i].plci = 0x8000;
card->bch[i].ncci = 0x8000;
Index: linux-2.5/drivers/isdn/icn/icn.c
===================================================================
--- linux-2.5/drivers/isdn/icn/icn.c (revision 10182)
+++ linux-2.5/drivers/isdn/icn/icn.c (working copy)
@@ -509,7 +509,7 @@
char *s = strpbrk(t, ",");

*s++ = '\0';
- strncpy(cmd.parm.setup.phone, t,
+ strlcpy(cmd.parm.setup.phone, t,
sizeof(cmd.parm.setup.phone));
s = strpbrk(t = s, ",");
*s++ = '\0';
@@ -525,7 +525,7 @@
else
cmd.parm.setup.si2 =
simple_strtoul(t, NULL, 10);
- strncpy(cmd.parm.setup.eazmsn, s,
+ strlcpy(cmd.parm.setup.eazmsn, s,
sizeof(cmd.parm.setup.eazmsn));
}
cmd.parm.setup.plan = 0;
@@ -540,19 +540,19 @@
cmd.parm.setup.screen = 0;
break;
case 5:
- strncpy(cmd.parm.num, status + 3, sizeof(cmd.parm.num) - 1);
+ strlcpy(cmd.parm.num, status + 3, sizeof(cmd.parm.num));
break;
case 6:
- sprintf(cmd.parm.num, "%d",
+ snprintf(cmd.parm.num, sizeof(cmd.parm.num), "%d",
(int) simple_strtoul(status + 7, NULL, 16));
break;
case 7:
status += 3;
if (strlen(status) == 4)
- sprintf(cmd.parm.num, "%s%c%c",
+ snprintf(cmd.parm.num, sizeof(cmd.parm.num), "%s%c%c",
status + 2, *status, *(status + 1));
else
- strncpy(cmd.parm.num, status + 1, sizeof(cmd.parm.num) - 1);
+ strlcpy(cmd.parm.num, status + 1, sizeof(cmd.parm.num));
break;
case 8:
card->flags &= ~ICN_FLAGS_B1ACTIVE;
@@ -1558,7 +1558,7 @@
ISDN_FEATURE_L3_TRANS |
ISDN_FEATURE_P_UNKNOWN;
card->ptype = ISDN_PTYPE_UNKNOWN;
- strncpy(card->interface.id, id, sizeof(card->interface.id) - 1);
+ strlcpy(card->interface.id, id, sizeof(card->interface.id));
card->msg_buf_write = card->msg_buf;
card->msg_buf_read = card->msg_buf;
card->msg_buf_end = &card->msg_buf[sizeof(card->msg_buf) - 1];
Index: linux-2.5/drivers/isdn/capi/capifs.c
===================================================================
--- linux-2.5/drivers/isdn/capi/capifs.c (revision 10182)
+++ linux-2.5/drivers/isdn/capi/capifs.c (working copy)
@@ -234,8 +234,7 @@
int err;

if ((p = strchr(revision, ':')) != 0 && p[1]) {
- strncpy(rev, p + 2, sizeof(rev));
- rev[sizeof(rev)-1] = 0;
+ strlcpy(rev, p + 2, sizeof(rev));
if ((p = strchr(rev, '$')) != 0 && p > rev)
*(p-1) = 0;
} else
Index: linux-2.5/drivers/isdn/capi/kcapi.c
===================================================================
--- linux-2.5/drivers/isdn/capi/kcapi.c (revision 10182)
+++ linux-2.5/drivers/isdn/capi/kcapi.c (working copy)
@@ -631,14 +631,14 @@
struct capi_ctr *card;

if (contr == 0) {
- strncpy(buf, capi_manufakturer, CAPI_MANUFACTURER_LEN);
+ strlcpy(buf, capi_manufakturer, sizeof(buf));
return CAPI_NOERROR;
}
card = get_capi_ctr_by_nr(contr);
if (!card || card->cardstate != CARD_RUNNING)
return CAPI_REGNOTINSTALLED;

- strncpy(buf, card->manu, CAPI_MANUFACTURER_LEN);
+ strlcpy(buf, card->manu, sizeof(buf));
return CAPI_NOERROR;
}

@@ -667,14 +667,14 @@
struct capi_ctr *card;

if (contr == 0) {
- strncpy(serial, driver_serial, CAPI_SERIAL_LEN);
+ strlcpy(serial, driver_serial, sizeof(serial));
return CAPI_NOERROR;
}
card = get_capi_ctr_by_nr(contr);
if (!card || card->cardstate != CARD_RUNNING)
return CAPI_REGNOTINSTALLED;

- strncpy((void *) serial, card->serial, CAPI_SERIAL_LEN);
+ strlcpy((void *) serial, card->serial, sizeof(serial));
return CAPI_NOERROR;
}

@@ -873,8 +873,7 @@
kcapi_proc_init();

if ((p = strchr(revision, ':')) != 0 && p[1]) {
- strncpy(rev, p + 2, sizeof(rev));
- rev[sizeof(rev)-1] = 0;
+ strlcpy(rev, p + 2, sizeof(rev));
if ((p = strchr(rev, '$')) != 0 && p > rev)
*(p-1) = 0;
} else
Index: linux-2.5/drivers/isdn/capi/capi.c
===================================================================
--- linux-2.5/drivers/isdn/capi/capi.c (revision 10182)
+++ linux-2.5/drivers/isdn/capi/capi.c (working copy)
@@ -1460,8 +1460,7 @@


if ((p = strchr(revision, ':')) != 0 && p[1]) {
- strncpy(rev, p + 2, sizeof(rev));
- rev[sizeof(rev)-1] = 0;
+ strlcpy(rev, p + 2, sizeof(rev));
if ((p = strchr(rev, '$')) != 0 && p > rev)
*(p-1) = 0;
} else
Index: linux-2.5/drivers/isdn/hisax/avma1_cs.c
===================================================================
--- linux-2.5/drivers/isdn/hisax/avma1_cs.c (revision 10182)
+++ linux-2.5/drivers/isdn/hisax/avma1_cs.c (working copy)
@@ -335,7 +335,7 @@

devname[0] = 0;
if( !first_tuple(handle, &tuple, &parse) && parse.version_1.ns > 1 ) {
- strncpy(devname,parse.version_1.str + parse.version_1.ofs[1],
+ strlcpy(devname,parse.version_1.str + parse.version_1.ofs[1],
sizeof(devname));
}
/*
Index: linux-2.5/drivers/isdn/hisax/callc.c
===================================================================
--- linux-2.5/drivers/isdn/hisax/callc.c (revision 10182)
+++ linux-2.5/drivers/isdn/hisax/callc.c (working copy)
@@ -1478,11 +1478,11 @@
return;
switch(cm->para[3]) {
case 4: /* Suspend */
- strncpy(chanp->setup.phone, &cm->para[5], cm->para[5] +1);
+ strlcpy(chanp->setup.phone, &cm->para[5], cm->para[5] +1);
FsmEvent(&chanp->fi, EV_SUSPEND, cm);
break;
case 5: /* Resume */
- strncpy(chanp->setup.phone, &cm->para[5], cm->para[5] +1);
+ strlcpy(chanp->setup.phone, &cm->para[5], cm->para[5] +1);
if (chanp->fi.state == ST_NULL) {
FsmEvent(&chanp->fi, EV_RESUME, cm);
} else {
Index: linux-2.5/drivers/pnp/core.c
===================================================================
--- linux-2.5/drivers/pnp/core.c (revision 10182)
+++ linux-2.5/drivers/pnp/core.c (working copy)
@@ -69,7 +69,7 @@

protocol->number = nodenum;
sprintf(protocol->dev.bus_id, "pnp%d", nodenum);
- strncpy(protocol->dev.name,protocol->name,DEVICE_NAME_SIZE);
+ strlcpy(protocol->dev.name,protocol->name,DEVICE_NAME_SIZE);
return device_register(&protocol->dev);
}

Index: linux-2.5/drivers/s390/net/ctcmain.c
===================================================================
--- linux-2.5/drivers/s390/net/ctcmain.c (revision 10182)
+++ linux-2.5/drivers/s390/net/ctcmain.c (working copy)
@@ -2915,7 +2915,7 @@

ctc_add_attributes(&cgdev->dev);

- strncpy(privptr->fsm->name, dev->name, sizeof (privptr->fsm->name));
+ strlcpy(privptr->fsm->name, dev->name, sizeof (privptr->fsm->name));

print_banner();

Index: linux-2.5/drivers/s390/net/fsm.c
===================================================================
--- linux-2.5/drivers/s390/net/fsm.c (revision 10182)
+++ linux-2.5/drivers/s390/net/fsm.c (working copy)
@@ -26,7 +26,7 @@
return NULL;
}
memset(this, 0, sizeof(fsm_instance));
- strncpy(this->name, name, sizeof(this->name));
+ strlcpy(this->name, name, sizeof(this->name));

f = (fsm *)kmalloc(sizeof(fsm), order);
if (f == NULL) {
Index: linux-2.5/drivers/s390/net/cu3088.c
===================================================================
--- linux-2.5/drivers/s390/net/cu3088.c (revision 10182)
+++ linux-2.5/drivers/s390/net/cu3088.c (working copy)
@@ -80,8 +80,7 @@
if (!(end = strchr(start, delim[i])))
return count;
len = min_t(ptrdiff_t, BUS_ID_SIZE, end - start);
- strncpy (bus_ids[i], start, len);
- bus_ids[i][len] = '\0';
+ strlcpy (bus_ids[i], start, len);
argv[i] = bus_ids[i];
start = end + 1;
}
Index: linux-2.5/drivers/s390/cio/css.c
===================================================================
--- linux-2.5/drivers/s390/cio/css.c (revision 10182)
+++ linux-2.5/drivers/s390/cio/css.c (working copy)
@@ -97,7 +97,7 @@
sch->dev.bus = &css_bus_type;

/* Set a name for the subchannel */
- strncpy (sch->dev.name, subchannel_types[sch->st], DEVICE_NAME_SIZE);
+ strlcpy (sch->dev.name, subchannel_types[sch->st], DEVICE_NAME_SIZE);
snprintf (sch->dev.bus_id, DEVICE_ID_SIZE, "0:%04x", sch->irq);

/* make it known to the system */
Index: linux-2.5/drivers/input/misc/uinput.c
===================================================================
--- linux-2.5/drivers/input/misc/uinput.c (revision 10182)
+++ linux-2.5/drivers/input/misc/uinput.c (working copy)
@@ -192,15 +192,14 @@
if (NULL != dev->name)
kfree(dev->name);

- size = strnlen(user_dev->name, UINPUT_MAX_NAME_SIZE);
- dev->name = kmalloc(size + 1, GFP_KERNEL);
+ size = strnlen(user_dev->name, UINPUT_MAX_NAME_SIZE) + 1;
+ dev->name = kmalloc(size, GFP_KERNEL);
if (!dev->name) {
retval = -ENOMEM;
goto exit;
}

- strncpy(dev->name, user_dev->name, size);
- dev->name[size] = '\0';
+ strlcpy(dev->name, user_dev->name, size);
dev->id.bustype = user_dev->id.bustype;
dev->id.vendor = user_dev->id.vendor;
dev->id.product = user_dev->id.product;
Index: linux-2.5/drivers/mca/mca-legacy.c
===================================================================
--- linux-2.5/drivers/mca/mca-legacy.c (revision 10182)
+++ linux-2.5/drivers/mca/mca-legacy.c (working copy)
@@ -278,8 +278,7 @@
if(!mca_dev)
return;

- strncpy(mca_dev->dev.name, name, sizeof(mca_dev->dev.name));
- mca_dev->dev.name[sizeof(mca_dev->dev.name) - 1] = '\0';
+ strlcpy(mca_dev->dev.name, name, sizeof(mca_dev->dev.name));
}
EXPORT_SYMBOL(mca_set_adapter_name);

Index: linux-2.5/drivers/video/pm2fb.c
===================================================================
--- linux-2.5/drivers/video/pm2fb.c (revision 10182)
+++ linux-2.5/drivers/video/pm2fb.c (working copy)
@@ -2307,9 +2307,7 @@
}

static void __init pm2fb_font_setup(char* options) {
-
- strncpy(pm2fb_options.font, options, sizeof(pm2fb_options.font));
- pm2fb_options.font[sizeof(pm2fb_options.font)-1]='\0';
+ strlcpy(pm2fb_options.font, options, sizeof(pm2fb_options.font));
}

static void __init pm2fb_var_setup(char* options) {
Index: linux-2.5/drivers/video/pm3fb.c
===================================================================
--- linux-2.5/drivers/video/pm3fb.c (revision 10182)
+++ linux-2.5/drivers/video/pm3fb.c (working copy)
@@ -2631,8 +2631,7 @@
DPRINTK(1, "Fontname %s too long\n", lf);
return;
}
- strncpy(fontn[board_num], lf, lfs);
- fontn[board_num][lfs] = '\0';
+ strlcpy(fontn[board_num], lf, lfs + 1);
}

static void pm3fb_bootdepth_setup(char *bds, unsigned long board_num)
Index: linux-2.5/drivers/video/aty/atyfb_base.c
===================================================================
--- linux-2.5/drivers/video/aty/atyfb_base.c (revision 10182)
+++ linux-2.5/drivers/video/aty/atyfb_base.c (working copy)
@@ -2425,7 +2425,7 @@
&& (!strncmp(this_opt, "Mach64:", 7))) {
static unsigned char m64_num;
static char mach64_str[80];
- strncpy(mach64_str, this_opt + 7, 80);
+ strlcpy(mach64_str, this_opt + 7, sizeof(mach64_str));
if (!store_video_par(mach64_str, m64_num)) {
m64_num++;
mach64_count = m64_num;
Index: linux-2.5/drivers/video/matrox/matroxfb_base.c
===================================================================
--- linux-2.5/drivers/video/matrox/matroxfb_base.c (revision 10182)
+++ linux-2.5/drivers/video/matrox/matroxfb_base.c (working copy)
@@ -2364,7 +2364,7 @@
else if (!strncmp(this_opt, "vesa:", 5))
vesa = simple_strtoul(this_opt+5, NULL, 0);
else if (!strncmp(this_opt, "font:", 5))
- strncpy(fontname, this_opt+5, sizeof(fontname)-1);
+ strlcpy(fontname, this_opt+5, sizeof(fontname));
else if (!strncmp(this_opt, "maxclk:", 7))
maxclk = simple_strtoul(this_opt+7, NULL, 0);
else if (!strncmp(this_opt, "fh:", 3))
@@ -2374,7 +2374,7 @@
else if (!strncmp(this_opt, "mem:", 4))
mem = simple_strtoul(this_opt+4, NULL, 0);
else if (!strncmp(this_opt, "mode:", 5))
- strncpy(videomode, this_opt+5, sizeof(videomode)-1);
+ strlcpy(videomode, this_opt+5, sizeof(videomode));
else if (!strncmp(this_opt, "dfp:", 4)) {
dfp_type = simple_strtoul(this_opt+4, NULL, 0);
dfp = 1;
@@ -2454,7 +2454,7 @@
else if (!strcmp(this_opt, "dfp"))
dfp = value;
else {
- strncpy(videomode, this_opt, sizeof(videomode)-1);
+ strlcpy(videomode, this_opt, sizeof(videomode));
}
}
}
Index: linux-2.5/drivers/video/p9100.c
===================================================================
--- linux-2.5/drivers/video/p9100.c (revision 10182)
+++ linux-2.5/drivers/video/p9100.c (working copy)
@@ -250,8 +250,7 @@
{
struct p9100_par *par = (struct p9100_par *)info->par;

- strncpy(info->fix.id, par->sdev->prom_name, sizeof(info->fix.id) - 1);
- info->fix.id[sizeof(info->fix.id)-1] = 0;
+ strlcpy(info->fix.id, par->sdev->prom_name, sizeof(info->fix.id));

info->fix.type = FB_TYPE_PACKED_PIXELS;
info->fix.visual = FB_VISUAL_PSEUDOCOLOR;
Index: linux-2.5/drivers/video/cg3.c
===================================================================
--- linux-2.5/drivers/video/cg3.c (revision 10182)
+++ linux-2.5/drivers/video/cg3.c (working copy)
@@ -253,8 +253,7 @@
{
struct cg3_par *par = (struct cg3_par *)info->par;

- strncpy(info->fix.id, par->sdev->prom_name, sizeof(info->fix.id) - 1);
- info->fix.id[sizeof(info->fix.id)-1] = 0;
+ strlcpy(info->fix.id, par->sdev->prom_name, sizeof(info->fix.id));

info->fix.type = FB_TYPE_PACKED_PIXELS;
info->fix.visual = FB_VISUAL_PSEUDOCOLOR;
Index: linux-2.5/drivers/video/cirrusfb.c
===================================================================
--- linux-2.5/drivers/video/cirrusfb.c (revision 10182)
+++ linux-2.5/drivers/video/cirrusfb.c (working copy)
@@ -2777,9 +2777,8 @@
fb_info->gen.parsize = sizeof (struct clgenfb_par);
fb_info->gen.fbhw = &clgen_hwswitch;

- strncpy (fb_info->gen.info.modename, clgen_board_info[btype].name,
+ strlcpy (fb_info->gen.info.modename, clgen_board_info[btype].name,
sizeof (fb_info->gen.info.modename));
- fb_info->gen.info.modename [sizeof (fb_info->gen.info.modename) - 1] = 0;

fb_info->gen.info.fbops = &clgenfb_ops;
fb_info->gen.info.disp = &disp;
Index: linux-2.5/drivers/video/leo.c
===================================================================
--- linux-2.5/drivers/video/leo.c (revision 10182)
+++ linux-2.5/drivers/video/leo.c (working copy)
@@ -336,8 +336,7 @@
{
struct leo_par *par = (struct leo_par *)info->par;

- strncpy(info->fix.id, par->sdev->prom_name, sizeof(info->fix.id) - 1);
- info->fix.id[sizeof(info->fix.id)-1] = 0;
+ strlcpy(info->fix.id, par->sdev->prom_name, sizeof(info->fix.id));

info->fix.type = FB_TYPE_PACKED_PIXELS;
info->fix.visual = FB_VISUAL_TRUECOLOR;
Index: linux-2.5/drivers/video/radeonfb.c
===================================================================
--- linux-2.5/drivers/video/radeonfb.c (revision 10182)
+++ linux-2.5/drivers/video/radeonfb.c (working copy)
@@ -2243,8 +2243,7 @@
info->screen_base = (char *)rinfo->fb_base;

/* Fill fix common fields */
- strncpy(info->fix.id, rinfo->name, sizeof(info->fix.id));
- info->fix.id[sizeof(info->fix.id) - 1] = '\0';
+ strlcpy(info->fix.id, rinfo->name, sizeof(info->fix.id));
info->fix.smem_start = rinfo->fb_base_phys;
info->fix.smem_len = rinfo->video_ram;
info->fix.type = FB_TYPE_PACKED_PIXELS;
Index: linux-2.5/drivers/video/ffb.c
===================================================================
--- linux-2.5/drivers/video/ffb.c (revision 10182)
+++ linux-2.5/drivers/video/ffb.c (working copy)
@@ -810,8 +810,7 @@
} else
ffb_type_name = "Elite 3D";

- strncpy(info->fix.id, ffb_type_name, sizeof(info->fix.id) - 1);
- info->fix.id[sizeof(info->fix.id)-1] = 0;
+ strlcpy(info->fix.id, ffb_type_name, sizeof(info->fix.id));

info->fix.type = FB_TYPE_PACKED_PIXELS;
info->fix.visual = FB_VISUAL_TRUECOLOR;
Index: linux-2.5/drivers/video/tcx.c
===================================================================
--- linux-2.5/drivers/video/tcx.c (revision 10182)
+++ linux-2.5/drivers/video/tcx.c (working copy)
@@ -290,8 +290,7 @@
else
tcx_name = "TCX24";

- strncpy(info->fix.id, tcx_name, sizeof(info->fix.id) - 1);
- info->fix.id[sizeof(info->fix.id)-1] = 0;
+ strlcpy(info->fix.id, tcx_name, sizeof(info->fix.id));

info->fix.type = FB_TYPE_PACKED_PIXELS;
info->fix.visual = FB_VISUAL_PSEUDOCOLOR;
Index: linux-2.5/drivers/video/cg14.c
===================================================================
--- linux-2.5/drivers/video/cg14.c (revision 10182)
+++ linux-2.5/drivers/video/cg14.c (working copy)
@@ -337,8 +337,7 @@
{
struct cg14_par *par = (struct cg14_par *)info->par;

- strncpy(info->fix.id, par->sdev->prom_name, sizeof(info->fix.id) - 1);
- info->fix.id[sizeof(info->fix.id)-1] = 0;
+ strlcpy(info->fix.id, par->sdev->prom_name, sizeof(info->fix.id));

info->fix.type = FB_TYPE_PACKED_PIXELS;
info->fix.visual = FB_VISUAL_TRUECOLOR;
Index: linux-2.5/drivers/video/sstfb.c
===================================================================
--- linux-2.5/drivers/video/sstfb.c (revision 10182)
+++ linux-2.5/drivers/video/sstfb.c (working copy)
@@ -1462,7 +1462,7 @@
goto fail;
}
sst_get_memsize(info, &fix->smem_len);
- strncpy(fix->id, spec->name, sizeof(fix->id));
+ strlcpy(fix->id, spec->name, sizeof(fix->id));

iprintk("%s (revision %d) with %s dac\n",
fix->id, par->revision, par->dac_sw.name);
Index: linux-2.5/drivers/video/cyber2000fb.c
===================================================================
--- linux-2.5/drivers/video/cyber2000fb.c (revision 10182)
+++ linux-2.5/drivers/video/cyber2000fb.c (working copy)
@@ -1128,7 +1128,7 @@
info->disable_extregs = cyber2000fb_disable_extregs;
info->info = int_cfb_info;

- strncpy(info->dev_name, int_cfb_info->fb.fix.id, sizeof(info->dev_name));
+ strlcpy(info->dev_name, int_cfb_info->fb.fix.id, sizeof(info->dev_name));
}

return int_cfb_info != NULL;
@@ -1319,7 +1319,7 @@
continue;

if (strncmp(opt, "font:", 5) == 0) {
- strncpy(default_font_storage, opt + 5, sizeof(default_font_storage));
+ strlcpy(default_font_storage, opt + 5, sizeof(default_font_storage));
default_font = default_font_storage;
continue;
}
Index: linux-2.5/drivers/video/retz3fb.c
===================================================================
--- linux-2.5/drivers/video/retz3fb.c (revision 10182)
+++ linux-2.5/drivers/video/retz3fb.c (working copy)
@@ -1336,8 +1336,7 @@
z3fb_inverse = 1;
fb_invert_cmaps();
} else if (!strncmp(this_opt, "font:", 5)) {
- strncpy(fontname, this_opt+5, 39);
- fontname[39] = '\0';
+ strlcpy(fontname, this_opt+5, sizeof(fontname));
} else
z3fb_mode = get_video_mode(this_opt);
}
@@ -1410,7 +1409,7 @@
fb_info->switch_con = &z3fb_switch;
fb_info->updatevar = &z3fb_updatevar;
fb_info->flags = FBINFO_FLAG_DEFAULT;
- strncpy(fb_info->fontname, fontname, 40);
+ strlcpy(fb_info->fontname, fontname, sizeof(fb_info->fontname));

if (z3fb_mode == -1)
retz3fb_default = retz3fb_predefined[0].var;
Index: linux-2.5/drivers/video/console/sticore.c
===================================================================
--- linux-2.5/drivers/video/console/sticore.c (revision 10182)
+++ linux-2.5/drivers/video/console/sticore.c (working copy)
@@ -273,7 +273,7 @@
static int __init sti_setup(char *str)
{
if (str)
- strncpy (default_sti_path, str, sizeof (default_sti_path));
+ strlcpy (default_sti_path, str, sizeof (default_sti_path));

return 0;
}
Index: linux-2.5/drivers/video/tgafb.c
===================================================================
--- linux-2.5/drivers/video/tgafb.c (revision 10182)
+++ linux-2.5/drivers/video/tgafb.c (working copy)
@@ -1341,8 +1341,7 @@
break;
}

- strncpy(info->fix.id, tga_type_name, sizeof(info->fix.id) - 1);
- info->fix.id[sizeof(info->fix.id)-1] = 0;
+ strlcpy(info->fix.id, tga_type_name, sizeof(info->fix.id));

info->fix.type = FB_TYPE_PACKED_PIXELS;
info->fix.type_aux = 0;
Index: linux-2.5/drivers/video/bw2.c
===================================================================
--- linux-2.5/drivers/video/bw2.c (revision 10182)
+++ linux-2.5/drivers/video/bw2.c (working copy)
@@ -194,8 +194,7 @@
static void
bw2_init_fix(struct fb_info *info, int linebytes)
{
- strncpy(info->fix.id, "bwtwo", sizeof(info->fix.id) - 1);
- info->fix.id[sizeof(info->fix.id)-1] = 0;
+ strlcpy(info->fix.id, "bwtwo", sizeof(info->fix.id));

info->fix.type = FB_TYPE_PACKED_PIXELS;
info->fix.visual = FB_VISUAL_MONO01;
Index: linux-2.5/drivers/pci/pool.c
===================================================================
--- linux-2.5/drivers/pci/pool.c (revision 10182)
+++ linux-2.5/drivers/pci/pool.c (working copy)
@@ -128,8 +128,7 @@
if (!(retval = kmalloc (sizeof *retval, SLAB_KERNEL)))
return retval;

- strncpy (retval->name, name, sizeof retval->name);
- retval->name [sizeof retval->name - 1] = 0;
+ strlcpy (retval->name, name, sizeof retval->name);

retval->dev = pdev;

Index: linux-2.5/drivers/char/i8k.c
===================================================================
--- linux-2.5/drivers/char/i8k.c (revision 10182)
+++ linux-2.5/drivers/char/i8k.c (working copy)
@@ -167,7 +167,7 @@
*/
static int i8k_get_serial_number(unsigned char *buff)
{
- strncpy(buff, serial_number, 16);
+ strlcpy(buff, serial_number, sizeof(serial_number));
return 0;
}

@@ -551,24 +551,24 @@
case 0: /* BIOS Information */
p = dmi_string(dmi,data[5]);
if (*p) {
- strncpy(bios_version, p, sizeof(bios_version));
+ strlcpy(bios_version, p, sizeof(bios_version));
string_trim(bios_version, sizeof(bios_version));
}
break;
case 1: /* System Information */
p = dmi_string(dmi,data[4]);
if (*p) {
- strncpy(system_vendor, p, sizeof(system_vendor));
+ strlcpy(system_vendor, p, sizeof(system_vendor));
string_trim(system_vendor, sizeof(system_vendor));
}
p = dmi_string(dmi,data[5]);
if (*p) {
- strncpy(product_name, p, sizeof(product_name));
+ strlcpy(product_name, p, sizeof(product_name));
string_trim(product_name, sizeof(product_name));
}
p = dmi_string(dmi,data[7]);
if (*p) {
- strncpy(serial_number, p, sizeof(serial_number));
+ strlcpy(serial_number, p, sizeof(serial_number));
string_trim(serial_number, sizeof(serial_number));
}
break;
Index: linux-2.5/drivers/char/ftape/zftape/zftape-vtbl.h
===================================================================
--- linux-2.5/drivers/char/ftape/zftape/zftape-vtbl.h (revision 10182)
+++ linux-2.5/drivers/char/ftape/zftape/zftape-vtbl.h (working copy)
@@ -129,8 +129,7 @@
#define DUMP_VOLINFO(level, desc, info) \
{ \
char tmp[21]; \
- strncpy(tmp, desc, 20); \
- tmp[20] = '\0'; \
+ strlcpy(tmp, desc, sizeof(tmp)); \
TRACE(level, "Volume %d:\n" \
KERN_INFO "description : %s\n" \
KERN_INFO "first segment: %d\n" \
Index: linux-2.5/drivers/char/rio/rioinit.c
===================================================================
--- linux-2.5/drivers/char/rio/rioinit.c (revision 10182)
+++ linux-2.5/drivers/char/rio/rioinit.c (working copy)
@@ -1541,8 +1541,10 @@
struct rioVersion *
RIOVersid(void)
{
- strncpy(stVersion.version, "RIO driver for linux V1.0", 255);
- strncpy(stVersion.buildDate, __DATE__, 255);
+ strlcpy(stVersion.version, "RIO driver for linux V1.0",
+ sizeof(stVersion.version));
+ strlcpy(stVersion.buildDate, __DATE__,
+ sizeof(stVersion.buildDate));

return &stVersion;
}
Index: linux-2.5/drivers/eisa/eisa-bus.c
===================================================================
--- linux-2.5/drivers/eisa/eisa-bus.c (revision 10182)
+++ linux-2.5/drivers/eisa/eisa-bus.c (working copy)
@@ -38,9 +38,9 @@

for (i = 0; i < EISA_INFOS; i++) {
if (!strcmp (edev->id.sig, eisa_table[i].id.sig)) {
- strncpy (edev->dev.name,
+ strlcpy (edev->dev.name,
eisa_table[i].name,
- DEVICE_NAME_SIZE - 1);
+ DEVICE_NAME_SIZE);
return;
}
}
Index: linux-2.5/drivers/parisc/led.c
===================================================================
--- linux-2.5/drivers/parisc/led.c (revision 10182)
+++ linux-2.5/drivers/parisc/led.c (working copy)
@@ -667,7 +667,7 @@
tasklet_disable(&led_tasklet);

/* copy display string to buffer for procfs */
- strncpy(lcd_text, str, sizeof(lcd_text)-1);
+ strlcpy(lcd_text, str, sizeof(lcd_text));

/* Set LCD Cursor to 1st character */
gsc_writeb(lcd_info.reset_cmd1, LCD_CMD_REG);
Index: linux-2.5/drivers/parisc/ccio-dma.c
===================================================================
--- linux-2.5/drivers/parisc/ccio-dma.c (revision 10182)
+++ linux-2.5/drivers/parisc/ccio-dma.c (working copy)
@@ -1522,7 +1522,7 @@
memset(ioc, 0, sizeof(struct ioc));

ioc->name = dev->id.hversion == U2_IOA_RUNWAY ? "U2" : "UTurn";
- strncpy(dev->dev.name, ioc->name, sizeof(dev->dev.name));
+ strlcpy(dev->dev.name, ioc->name, sizeof(dev->dev.name));

printk(KERN_INFO "Found %s at 0x%lx\n", ioc->name, dev->hpa);

Index: linux-2.5/drivers/usb/net/kaweth.c
===================================================================
--- linux-2.5/drivers/usb/net/kaweth.c (revision 10182)
+++ linux-2.5/drivers/usb/net/kaweth.c (working copy)
@@ -670,7 +670,7 @@
switch (ethcmd) {
case ETHTOOL_GDRVINFO: {
struct ethtool_drvinfo info = {ETHTOOL_GDRVINFO};
- strncpy(info.driver, "kaweth", sizeof(info.driver)-1);
+ strlcpy(info.driver, "kaweth", sizeof(info.driver));
if (copy_to_user(useraddr, &info, sizeof(info)))
return -EFAULT;
return 0;
Index: linux-2.5/drivers/usb/net/pegasus.c
===================================================================
--- linux-2.5/drivers/usb/net/pegasus.c (revision 10182)
+++ linux-2.5/drivers/usb/net/pegasus.c (working copy)
@@ -927,10 +927,10 @@
/* get driver-specific version/etc. info */
case ETHTOOL_GDRVINFO:{
struct ethtool_drvinfo info = { ETHTOOL_GDRVINFO };
- strncpy(info.driver, driver_name,
- sizeof (info.driver) - 1);
- strncpy(info.version, DRIVER_VERSION,
- sizeof (info.version) - 1);
+ strlcpy(info.driver, driver_name,
+ sizeof (info.driver));
+ strlcpy(info.version, DRIVER_VERSION,
+ sizeof (info.version));
if (copy_to_user(useraddr, &info, sizeof (info)))
return -EFAULT;
return 0;
Index: linux-2.5/drivers/usb/misc/brlvger.c
===================================================================
--- linux-2.5/drivers/usb/misc/brlvger.c (revision 10182)
+++ linux-2.5/drivers/usb/misc/brlvger.c (working copy)
@@ -708,12 +708,10 @@
case BRLVGER_GET_INFO: {
struct brlvger_info vi;

- strncpy(vi.driver_version, DRIVER_VERSION,
+ strlcpy(vi.driver_version, DRIVER_VERSION,
sizeof(vi.driver_version));
- vi.driver_version[sizeof(vi.driver_version)-1] = 0;
- strncpy(vi.driver_banner, longbanner,
+ strlcpy(vi.driver_banner, longbanner,
sizeof(vi.driver_banner));
- vi.driver_banner[sizeof(vi.driver_banner)-1] = 0;

vi.display_length = priv->plength;

Index: linux-2.5/drivers/usb/gadget/zero.c
===================================================================
--- linux-2.5/drivers/usb/gadget/zero.c (revision 10182)
+++ linux-2.5/drivers/usb/gadget/zero.c (working copy)
@@ -1205,8 +1205,7 @@
/* a real value would likely come through some id prom
* or module option. this one takes at least two packets.
*/
- strncpy (serial, "0123456789.0123456789.0123456789", sizeof serial);
- serial [sizeof serial - 1] = 0;
+ strlcpy (serial, "0123456789.0123456789.0123456789", sizeof serial);

return usb_gadget_register_driver (&zero_driver);
}
Index: linux-2.5/drivers/block/loop.c
===================================================================
--- linux-2.5/drivers/block/loop.c (revision 10182)
+++ linux-2.5/drivers/block/loop.c (working copy)
@@ -867,7 +867,7 @@
if (err)
return err;

- strncpy(lo->lo_name, info->lo_name, LO_NAME_SIZE);
+ strlcpy(lo->lo_name, info->lo_name, LO_NAME_SIZE);

lo->transfer = xfer_funcs[type]->transfer;
lo->ioctl = xfer_funcs[type]->ioctl;
@@ -902,7 +902,7 @@
info->lo_rdevice = lo->lo_device ? stat.rdev : stat.dev;
info->lo_offset = lo->lo_offset;
info->lo_flags = lo->lo_flags;
- strncpy(info->lo_name, lo->lo_name, LO_NAME_SIZE);
+ strlcpy(info->lo_name, lo->lo_name, LO_NAME_SIZE);
info->lo_encrypt_type = lo->lo_encrypt_type;
if (lo->lo_encrypt_key_size && capable(CAP_SYS_ADMIN)) {
info->lo_encrypt_key_size = lo->lo_encrypt_key_size;
Index: linux-2.5/drivers/block/genhd.c
===================================================================
--- linux-2.5/drivers/block/genhd.c (revision 10182)
+++ linux-2.5/drivers/block/genhd.c (working copy)
@@ -89,8 +89,7 @@
}

p->major = major;
- strncpy(p->name, name, sizeof(p->name)-1);
- p->name[sizeof(p->name)-1] = 0;
+ strlcpy(p->name, name, sizeof(p->name));
p->next = 0;
index = major_to_index(major);

Index: linux-2.5/drivers/pcmcia/cs.c
===================================================================
--- linux-2.5/drivers/pcmcia/cs.c (revision 10182)
+++ linux-2.5/drivers/pcmcia/cs.c (working copy)
@@ -1026,7 +1026,7 @@
if (!client) return CS_OUT_OF_RESOURCE;
memset(client, '\0', sizeof(client_t));
client->client_magic = CLIENT_MAGIC;
- strncpy(client->dev_info, (char *)req->dev_info, DEV_NAME_LEN);
+ strlcpy(client->dev_info, (char *)req->dev_info, DEV_NAME_LEN);
client->Socket = req->Socket;
client->Function = req->Function;
client->state = CLIENT_UNBOUND;
@@ -1069,7 +1069,7 @@
}
if (!region || (region->mtd != NULL))
return CS_BAD_OFFSET;
- strncpy(region->dev_info, (char *)req->dev_info, DEV_NAME_LEN);
+ strlcpy(region->dev_info, (char *)req->dev_info, DEV_NAME_LEN);

DEBUG(1, "cs: bind_mtd(): attr 0x%x, offset 0x%x, dev %s\n",
req->Attributes, req->CardOffset, (char *)req->dev_info);
Index: linux-2.5/drivers/pcmcia/tcic.c
===================================================================
--- linux-2.5/drivers/pcmcia/tcic.c (revision 10182)
+++ linux-2.5/drivers/pcmcia/tcic.c (working copy)
@@ -527,7 +527,7 @@
tcic_data.nsock = sockets;
tcic_class_data.dev = &tcic_device.dev;
tcic_class_data.class_data = &tcic_data;
- strncpy(tcic_class_data.class_id, "tcic-pcmcia", BUS_ID_SIZE);
+ strlcpy(tcic_class_data.class_id, "tcic-pcmcia", BUS_ID_SIZE);

platform_device_register(&tcic_device);
class_device_register(&tcic_class_data);
Index: linux-2.5/drivers/pcmcia/i82365.c
===================================================================
--- linux-2.5/drivers/pcmcia/i82365.c (revision 10182)
+++ linux-2.5/drivers/pcmcia/i82365.c (working copy)
@@ -1560,7 +1560,7 @@
i82365_data.nsock = sockets;
i82365_class_data.dev = &i82365_device.dev;
i82365_class_data.class_data = &i82365_data;
- strncpy(i82365_class_data.class_id, "i82365", BUS_ID_SIZE);
+ strlcpy(i82365_class_data.class_id, "i82365", BUS_ID_SIZE);

platform_device_register(&i82365_device);
class_device_register(&i82365_class_data);
Index: linux-2.5/drivers/pcmcia/ds.c
===================================================================
--- linux-2.5/drivers/pcmcia/ds.c (revision 10182)
+++ linux-2.5/drivers/pcmcia/ds.c (working copy)
@@ -480,8 +480,7 @@
/* Try to handle "next" here some way? */
}
if (dev && dev->driver) {
- strncpy(bind_info->name, dev->driver->name, DEV_NAME_LEN);
- bind_info->name[DEV_NAME_LEN-1] = '\0';
+ strlcpy(bind_info->name, dev->driver->name, DEV_NAME_LEN);
bind_info->major = 0;
bind_info->minor = 0;
bind_info->next = NULL;
@@ -507,8 +506,7 @@
if (node == bind_info->next) break;
if (node == NULL) return -ENODEV;

- strncpy(bind_info->name, node->dev_name, DEV_NAME_LEN);
- bind_info->name[DEV_NAME_LEN-1] = '\0';
+ strlcpy(bind_info->name, node->dev_name, DEV_NAME_LEN);
bind_info->major = node->major;
bind_info->minor = node->minor;
bind_info->next = node->next;
Index: linux-2.5/drivers/pcmcia/pci_socket.c
===================================================================
--- linux-2.5/drivers/pcmcia/pci_socket.c (revision 10182)
+++ linux-2.5/drivers/pcmcia/pci_socket.c (working copy)
@@ -155,7 +155,7 @@
socket->cls_d.ops = &pci_socket_operations;
socket->cls_d.class_dev.class = &pcmcia_socket_class;
socket->cls_d.class_dev.dev = &dev->dev;
- strncpy(socket->cls_d.class_dev.class_id, dev->dev.bus_id, BUS_ID_SIZE);
+ strlcpy(socket->cls_d.class_dev.class_id, dev->dev.bus_id, BUS_ID_SIZE);
class_set_devdata(&socket->cls_d.class_dev, &socket->cls_d);

/* prepare pci_socket_t */
Index: linux-2.5/drivers/pcmcia/i82092.c
===================================================================
--- linux-2.5/drivers/pcmcia/i82092.c (revision 10182)
+++ linux-2.5/drivers/pcmcia/i82092.c (working copy)
@@ -178,7 +178,7 @@
pci_set_drvdata(dev, &cls_d);
cls_d->class_dev.class = &pcmcia_socket_class;
cls_d->class_dev.dev = &dev->dev;
- strncpy(cls_d->class_dev.class_id, dev->dev.name, BUS_ID_SIZE);
+ strlcpy(cls_d->class_dev.class_id, dev->dev.name, BUS_ID_SIZE);
class_set_devdata(&cls_d->class_dev, cls_d);
class_device_register(&cls_d->class_dev);

Index: linux-2.5/drivers/md/dm-ioctl.c
===================================================================
--- linux-2.5/drivers/md/dm-ioctl.c (revision 10182)
+++ linux-2.5/drivers/md/dm-ioctl.c (working copy)
@@ -488,9 +488,9 @@
* Sneakily write in both the name and the uuid
* while we have the cell.
*/
- strncpy(param->name, hc->name, sizeof(param->name));
+ strlcpy(param->name, hc->name, sizeof(param->name));
if (hc->uuid)
- strncpy(param->uuid, hc->uuid, sizeof(param->uuid) - 1);
+ strlcpy(param->uuid, hc->uuid, sizeof(param->uuid));
else
param->uuid[0] = '\0';

@@ -626,7 +626,7 @@
spec->status = 0;
spec->sector_start = ti->begin;
spec->length = ti->len;
- strncpy(spec->target_type, ti->type->name,
+ strlcpy(spec->target_type, ti->type->name,
sizeof(spec->target_type));

outptr += sizeof(struct dm_target_spec);
Index: linux-2.5/drivers/scsi/osst.c
===================================================================
--- linux-2.5/drivers/scsi/osst.c (revision 10182)
+++ linux-2.5/drivers/scsi/osst.c (working copy)
@@ -2227,8 +2227,7 @@
}
if (strncmp(header->ident_str, "ADR_SEQ", 7) != 0 &&
strncmp(header->ident_str, "ADR-SEQ", 7) != 0) {
- strncpy(id_string, header->ident_str, 7);
- id_string[7] = 0;
+ strlcpy(id_string, header->ident_str, 8);
#if DEBUG
printk(OSST_DEB_MSG "%s:D: Invalid header identification string %s\n", name, id_string);
#endif
Index: linux-2.5/drivers/scsi/sym53c8xx_2/sym_glue.c
===================================================================
--- linux-2.5/drivers/scsi/sym53c8xx_2/sym_glue.c (revision 10182)
+++ linux-2.5/drivers/scsi/sym53c8xx_2/sym_glue.c (working copy)
@@ -1987,7 +1987,7 @@
/*
* Edit its name.
*/
- strncpy(np->s.chip_name, dev->chip.name, sizeof(np->s.chip_name)-1);
+ strlcpy(np->s.chip_name, dev->chip.name, sizeof(np->s.chip_name));
sprintf(np->s.inst_name, "sym%d", np->s.unit);

/*
Index: linux-2.5/drivers/scsi/NCR_D700.c
===================================================================
--- linux-2.5/drivers/scsi/NCR_D700.c (revision 10182)
+++ linux-2.5/drivers/scsi/NCR_D700.c (working copy)
@@ -332,7 +332,7 @@
}

mca_device_set_claim(mca_dev, 1);
- strncpy(dev->name, "NCR_D700", sizeof(dev->name));
+ strlcpy(dev->name, "NCR_D700", sizeof(dev->name));
dev_set_drvdata(dev, p);
return 0;
}
Index: linux-2.5/drivers/scsi/in2000.c
===================================================================
--- linux-2.5/drivers/scsi/in2000.c (revision 10182)
+++ linux-2.5/drivers/scsi/in2000.c (working copy)
@@ -1820,8 +1820,7 @@
int i;
char *p1, *p2;

- strncpy(setup_buffer, str, SETUP_BUFFER_SIZE);
- setup_buffer[SETUP_BUFFER_SIZE - 1] = '\0';
+ strlcpy(setup_buffer, str, SETUP_BUFFER_SIZE);
p1 = setup_buffer;
i = 0;
while (*p1 && (i < MAX_SETUP_ARGS)) {
Index: linux-2.5/drivers/scsi/sim710.c
===================================================================
--- linux-2.5/drivers/scsi/sim710.c (revision 10182)
+++ linux-2.5/drivers/scsi/sim710.c (working copy)
@@ -253,7 +253,7 @@
} else {
return -ENODEV;
}
- strncpy(dev->name, name, sizeof(dev->name));
+ strlcpy(dev->name, name, sizeof(dev->name));
mca_device_set_claim(mca_dev, 1);
base = mca_device_transform_ioport(mca_dev, base);
irq_vector = mca_device_transform_irq(mca_dev, irq_vector);
Index: linux-2.5/drivers/scsi/aacraid/aachba.c
===================================================================
--- linux-2.5/drivers/scsi/aacraid/aachba.c (revision 10182)
+++ linux-2.5/drivers/scsi/aacraid/aachba.c (working copy)
@@ -1130,7 +1130,7 @@
else
qd.unmapped = 0;

- strncpy(qd.name, fsa_dev_ptr->devname[qd.cnum], 8);
+ strlcpy(qd.name, fsa_dev_ptr->devname[qd.cnum], sizeof(qd.name));

if (copy_to_user(arg, &qd, sizeof (struct aac_query_disk)))
return -EFAULT;
Index: linux-2.5/drivers/scsi/gdth.c
===================================================================
--- linux-2.5/drivers/scsi/gdth.c (revision 10182)
+++ linux-2.5/drivers/scsi/gdth.c (working copy)
@@ -2295,15 +2295,15 @@
TRACE2(("gdth_search_drives(): CACHE_READ_OEM_STRING_RECORD OK\n"));
printk("GDT CTR%d Vendor: %s\n",hanum,oemstr->text.oem_company_name);
/* Save the Host Drive inquiry data */
- strncpy(ha->oem_name,oemstr->text.scsi_host_drive_inquiry_vendor_id,7);
- ha->oem_name[7] = '\0';
+ strlcpy(ha->oem_name,oemstr->text.scsi_host_drive_inquiry_vendor_id,
+ sizeof(ha->oem_name));
} else {
/* Old method, based on PCI ID */
TRACE2(("gdth_search_drives(): CACHE_READ_OEM_STRING_RECORD failed\n"));
if (ha->oem_id == OEM_ID_INTEL)
- strcpy(ha->oem_name,"Intel ");
+ strlcpy(ha->oem_name,"Intel ", sizeof(ha->oem_name));
else
- strcpy(ha->oem_name,"ICP ");
+ strlcpy(ha->oem_name,"ICP ", sizeof(ha->oem_name));
}

/* scanning for host drives */
Index: linux-2.5/drivers/scsi/ncr53c8xx.c
===================================================================
--- linux-2.5/drivers/scsi/ncr53c8xx.c (revision 10182)
+++ linux-2.5/drivers/scsi/ncr53c8xx.c (working copy)
@@ -3701,7 +3701,7 @@
/*
** Store input informations in the host data structure.
*/
- strncpy(np->chip_name, device->chip.name, sizeof(np->chip_name) - 1);
+ strlcpy(np->chip_name, device->chip.name, sizeof(np->chip_name));
np->unit = unit;
np->verbose = driver_setup.verbose;
sprintf(np->inst_name, "ncr53c%s-%d", np->chip_name, np->unit);
@@ -5033,7 +5033,7 @@
char inst_name[16];

/* Local copy so we don't access np after freeing it! */
- strncpy(inst_name, ncr_name(np), 16);
+ strlcpy(inst_name, ncr_name(np), sizeof(inst_name));

printk("%s: releasing host resources\n", ncr_name(np));

Index: linux-2.5/drivers/scsi/eata_pio.c
===================================================================
--- linux-2.5/drivers/scsi/eata_pio.c (revision 10182)
+++ linux-2.5/drivers/scsi/eata_pio.c (working copy)
@@ -736,10 +736,8 @@
memset(hd->ccb, 0, (sizeof(struct eata_ccb) * ntohs(gc->queuesiz)));
memset(hd->reads, 0, sizeof(unsigned long) * 26);

- strncpy(SD(sh)->vendor, &buff[8], 8);
- SD(sh)->vendor[8] = 0;
- strncpy(SD(sh)->name, &buff[16], 17);
- SD(sh)->name[17] = 0;
+ strlcpy(SD(sh)->vendor, &buff[8], sizeof(SD(sh)->vendor));
+ strlcpy(SD(sh)->name, &buff[16], sizeof(SD(sh)->name));
SD(sh)->revision[0] = buff[32];
SD(sh)->revision[1] = buff[33];
SD(sh)->revision[2] = buff[34];
Index: linux-2.5/drivers/scsi/sym53c8xx.c
===================================================================
--- linux-2.5/drivers/scsi/sym53c8xx.c (revision 10182)
+++ linux-2.5/drivers/scsi/sym53c8xx.c (working copy)
@@ -5454,7 +5454,7 @@
/*
** Store input informations in the host data structure.
*/
- strncpy(np->chip_name, device->chip.name, sizeof(np->chip_name) - 1);
+ strlcpy(np->chip_name, device->chip.name, sizeof(np->chip_name));
np->unit = unit;
np->verbose = driver_setup.verbose;
sprintf(np->inst_name, NAME53C "%s-%d", np->chip_name, np->unit);
Index: linux-2.5/drivers/ide/ide.c
===================================================================
--- linux-2.5/drivers/ide/ide.c (revision 10182)
+++ linux-2.5/drivers/ide/ide.c (working copy)
@@ -1398,7 +1398,7 @@
goto abort;
if (DRIVER(drive)->cleanup(drive))
goto abort;
- strncpy(drive->driver_req, driver, 9);
+ strlcpy(drive->driver_req, driver, sizeof(drive->driver_req));
if (ata_attach(drive)) {
spin_lock(&drives_lock);
list_del_init(&drive->list);
@@ -1838,7 +1838,7 @@
hwif = &ide_hwifs[hw];
drive = &hwif->drives[unit];
if (strncmp(s + 4, "ide-", 4) == 0) {
- strncpy(drive->driver_req, s + 4, 9);
+ strlcpy(drive->driver_req, s + 4, sizeof(drive->driver_req));
goto done;
}
/*
Index: linux-2.5/drivers/ide/ide-proc.c
===================================================================
--- linux-2.5/drivers/ide/ide-proc.c (revision 10182)
+++ linux-2.5/drivers/ide/ide-proc.c (working copy)
@@ -522,8 +522,7 @@
if (*p != ':')
goto parse_error;
len = IDE_MIN(p - start, MAX_LEN);
- strncpy(name, start, IDE_MIN(len, MAX_LEN));
- name[len] = 0;
+ strlcpy(name, start, IDE_MIN(len, MAX_LEN));

if (n > 0) {
--n;
Index: linux-2.5/drivers/ide/ide-probe.c
===================================================================
--- linux-2.5/drivers/ide/ide-probe.c (revision 10182)
+++ linux-2.5/drivers/ide/ide-probe.c (working copy)
@@ -693,7 +693,7 @@
u32 i = 0;

/* register with global device tree */
- strncpy(hwif->gendev.bus_id,hwif->name,BUS_ID_SIZE);
+ strlcpy(hwif->gendev.bus_id,hwif->name,BUS_ID_SIZE);
snprintf(hwif->gendev.name,DEVICE_NAME_SIZE,"IDE Controller");
hwif->gendev.driver_data = hwif;
if (hwif->pci_dev)
Index: linux-2.5/drivers/acpi/scan.c
===================================================================
--- linux-2.5/drivers/acpi/scan.c (revision 10182)
+++ linux-2.5/drivers/acpi/scan.c (working copy)
@@ -66,7 +66,7 @@
spin_unlock(&acpi_device_lock);

kobject_init(&device->kobj);
- strncpy(device->kobj.name,device->pnp.bus_id,KOBJ_NAME_LEN);
+ strlcpy(device->kobj.name,device->pnp.bus_id,KOBJ_NAME_LEN);
if (parent)
device->kobj.parent = &parent->kobj;
device->kobj.ktype = &ktype_acpi_ns;
Index: linux-2.5/drivers/acpi/toshiba_acpi.c
===================================================================
--- linux-2.5/drivers/acpi/toshiba_acpi.c (revision 10182)
+++ linux-2.5/drivers/acpi/toshiba_acpi.c (working copy)
@@ -108,8 +108,7 @@
int result;
char* str2 = kmalloc(n + 1, GFP_KERNEL);
if (str2 == 0) return 0;
- strncpy(str2, str, n);
- str2[n] = 0;
+ strlcpy(str2, str, n);
va_start(args, format);
result = vsscanf(str2, format, args);
va_end(args);
Index: linux-2.5/drivers/i2c/i2c-core.c
===================================================================
--- linux-2.5/drivers/i2c/i2c-core.c (revision 10182)
+++ linux-2.5/drivers/i2c/i2c-core.c (working copy)
@@ -105,7 +105,7 @@
memset(&adap->class_dev, 0x00, sizeof(struct class_device));
adap->class_dev.dev = &adap->dev;
adap->class_dev.class = &i2c_adapter_class;
- strncpy(adap->class_dev.class_id, adap->dev.bus_id, BUS_ID_SIZE);
+ strlcpy(adap->class_dev.class_id, adap->dev.bus_id, BUS_ID_SIZE);
class_device_register(&adap->class_dev);

/* inform drivers of new adapters */
Index: linux-2.5/drivers/i2c/chips/lm75.c
===================================================================
--- linux-2.5/drivers/i2c/chips/lm75.c (revision 10182)
+++ linux-2.5/drivers/i2c/chips/lm75.c (working copy)
@@ -194,7 +194,7 @@
}

/* Fill in the remaining client fields and put it into the global list */
- strncpy(new_client->dev.name, name, DEVICE_NAME_SIZE);
+ strlcpy(new_client->dev.name, name, DEVICE_NAME_SIZE);

new_client->id = lm75_id++;
data->valid = 0;
Index: linux-2.5/drivers/i2c/chips/adm1021.c
===================================================================
--- linux-2.5/drivers/i2c/chips/adm1021.c (revision 10182)
+++ linux-2.5/drivers/i2c/chips/adm1021.c (working copy)
@@ -310,7 +310,7 @@
}

/* Fill in the remaining client fields and put it into the global list */
- strncpy(new_client->dev.name, client_name, DEVICE_NAME_SIZE);
+ strlcpy(new_client->dev.name, client_name, DEVICE_NAME_SIZE);
data->type = kind;

new_client->id = adm1021_id++;
Index: linux-2.5/drivers/i2c/chips/w83781d.c
===================================================================
--- linux-2.5/drivers/i2c/chips/w83781d.c (revision 10182)
+++ linux-2.5/drivers/i2c/chips/w83781d.c (working copy)
@@ -1198,7 +1198,7 @@
request_region(address, W83781D_EXTENT, type_name);

/* Fill in the remaining client fields and put it into the global list */
- strncpy(new_client->dev.name, client_name, DEVICE_NAME_SIZE);
+ strlcpy(new_client->dev.name, client_name, DEVICE_NAME_SIZE);
data->type = kind;

data->valid = 0;
@@ -1271,7 +1271,7 @@
data->lm75[i].adapter = adapter;
data->lm75[i].driver = &w83781d_driver;
data->lm75[i].flags = 0;
- strncpy(data->lm75[i].dev.name, client_name,
+ strlcpy(data->lm75[i].dev.name, client_name,
DEVICE_NAME_SIZE);
if (kind == w83783s)
break;
Index: linux-2.5/drivers/i2c/chips/it87.c
===================================================================
--- linux-2.5/drivers/i2c/chips/it87.c (revision 10182)
+++ linux-2.5/drivers/i2c/chips/it87.c (working copy)
@@ -692,7 +692,7 @@
}

/* Fill in the remaining client fields and put it into the global list */
- strncpy(new_client->dev.name, name, DEVICE_NAME_SIZE);
+ strlcpy(new_client->dev.name, name, DEVICE_NAME_SIZE);

data->type = kind;

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/