lkml.org 
[lkml]   [2003]   [May]   [25]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[PATCH] arch/* strlcpy conversion
    Obvious strlcpy conversions in arch/*. In fact, mips and mips64 had an
    actual bug in sys_sysmips(). Confirmed with Keith Wesolowski. I'll send
    a seperate patch for 2.4, but the fix for 2.5 is included here.


    Index: linux-2.5/arch/arm/kernel/setup.c
    ===================================================================
    --- linux-2.5/arch/arm/kernel/setup.c (revision 10155)
    +++ linux-2.5/arch/arm/kernel/setup.c (working copy)
    @@ -598,8 +598,7 @@

    static int __init parse_tag_cmdline(const struct tag *tag)
    {
    - strncpy(default_command_line, tag->u.cmdline.cmdline, COMMAND_LINE_SIZE);
    - default_command_line[COMMAND_LINE_SIZE - 1] = '\0';
    + strlcpy(default_command_line, tag->u.cmdline.cmdline, COMMAND_LINE_SIZE);
    return 0;
    }

    Index: linux-2.5/arch/arm/common/sa1111-pcipool.c
    ===================================================================
    --- linux-2.5/arch/arm/common/sa1111-pcipool.c (revision 10155)
    +++ linux-2.5/arch/arm/common/sa1111-pcipool.c (working copy)
    @@ -113,8 +113,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;
    INIT_LIST_HEAD (&retval->page_list);
    Index: linux-2.5/arch/um/kernel/umid.c
    ===================================================================
    --- linux-2.5/arch/um/kernel/umid.c (revision 10155)
    +++ linux-2.5/arch/um/kernel/umid.c (working copy)
    @@ -45,8 +45,7 @@
    if(strlen(name) > UMID_LEN - 1)
    printk("Unique machine name is being truncated to %s "
    "characters\n", UMID_LEN);
    - strncpy(umid, name, UMID_LEN - 1);
    - umid[UMID_LEN - 1] = '\0';
    + strlcpy(umid, name, sizeof(umid));

    umid_is_random = is_random;
    umid_inited = 1;
    @@ -222,7 +221,7 @@
    "$HOME\n");
    exit(1);
    }
    - strncpy(dir, home, sizeof(dir));
    + strlcpy(dir, home, sizeof(dir));
    uml_dir++;
    }
    len = strlen(dir);
    @@ -251,8 +250,7 @@
    int fd, err;
    char tmp[strlen(uml_dir) + UMID_LEN + 1];

    - strncpy(tmp, uml_dir, sizeof(tmp) - 1);
    - tmp[sizeof(tmp) - 1] = '\0';
    + strlcpy(tmp, uml_dir, sizeof(tmp));

    if(*umid == 0){
    strcat(tmp, "XXXXXX");
    Index: linux-2.5/arch/um/drivers/line.c
    ===================================================================
    --- linux-2.5/arch/um/drivers/line.c (revision 10155)
    +++ linux-2.5/arch/um/drivers/line.c (working copy)
    @@ -563,9 +563,7 @@
    return(base);
    }

    - strncpy(title, base, len);
    - len -= strlen(title);
    - snprintf(&title[strlen(title)], len, " (%s)", umid);
    + snprintf(title, len, "%s (%s)", base, umid);
    return(title);
    }

    Index: linux-2.5/arch/um/os-Linux/drivers/tuntap_user.c
    ===================================================================
    --- linux-2.5/arch/um/os-Linux/drivers/tuntap_user.c (revision 10155)
    +++ linux-2.5/arch/um/os-Linux/drivers/tuntap_user.c (working copy)
    @@ -143,7 +143,7 @@
    }
    memset(&ifr, 0, sizeof(ifr));
    ifr.ifr_flags = IFF_TAP;
    - strncpy(ifr.ifr_name, pri->dev_name, sizeof(ifr.ifr_name) - 1);
    + strlcpy(ifr.ifr_name, pri->dev_name, sizeof(ifr.ifr_name));
    if(ioctl(pri->fd, TUNSETIFF, (void *) &ifr) < 0){
    printk("TUNSETIFF failed, errno = %d", errno);
    close(pri->fd);
    Index: linux-2.5/arch/parisc/kernel/drivers.c
    ===================================================================
    --- linux-2.5/arch/parisc/kernel/drivers.c (revision 10155)
    +++ linux-2.5/arch/parisc/kernel/drivers.c (working copy)
    @@ -398,7 +398,7 @@
    dev->hpa = hpa;
    name = parisc_hardware_description(&dev->id);
    if (name) {
    - strncpy(dev->name, name, sizeof(dev->name)-1);
    + strlcpy(dev->name, name, sizeof(dev->name));
    }

    return dev;
    @@ -601,7 +601,7 @@
    ndev = ndev->parent) {
    snprintf(tmp2, sizeof(tmp2), "%d:%s",
    ndev->hw_path, tmp1);
    - strncpy(tmp1, tmp2, sizeof(tmp1));
    + strlcpy(tmp1, tmp2, sizeof(tmp1));
    }
    }

    Index: linux-2.5/arch/mips64/kernel/setup.c
    ===================================================================
    --- linux-2.5/arch/mips64/kernel/setup.c (revision 10155)
    +++ linux-2.5/arch/mips64/kernel/setup.c (working copy)
    @@ -149,9 +149,8 @@
    bootmem_init ();
    #endif

    - strncpy(command_line, arcs_cmdline, CL_SIZE);
    - memcpy(saved_command_line, command_line, CL_SIZE);
    - saved_command_line[CL_SIZE-1] = '\0';
    + strlcpy(command_line, arcs_cmdline, sizeof(command_line));
    + strlcpy(saved_command_line, command_line, sizeof(saved_command_line));

    *cmdline_p = command_line;

    Index: linux-2.5/arch/mips64/kernel/syscall.c
    ===================================================================
    --- linux-2.5/arch/mips64/kernel/syscall.c (revision 10155)
    +++ linux-2.5/arch/mips64/kernel/syscall.c (working copy)
    @@ -147,14 +147,15 @@

    name = (char *) arg1;

    - len = strncpy_from_user(nodename, name, sizeof(nodename));
    + len = strncpy_from_user(nodename, name, __NEW_UTS_LEN);
    if (len < 0)
    return -EFAULT;
    + nodename[__NEW_UTS_LEN] = '\0';

    down_write(&uts_sem);
    - strncpy(system_utsname.nodename, name, len);
    + strlcpy(system_utsname.nodename, nodename,
    + sizeof(system_utsname.nodename));
    up_write(&uts_sem);
    - system_utsname.nodename[len] = '\0';
    return 0;
    }

    Index: linux-2.5/arch/ppc/kernel/setup.c
    ===================================================================
    --- linux-2.5/arch/ppc/kernel/setup.c (revision 10155)
    +++ linux-2.5/arch/ppc/kernel/setup.c (working copy)
    @@ -403,14 +403,14 @@
    * are used for initrd_start and initrd_size,
    * otherwise they contain 0xdeadbeef.
    */
    + cmd_line[0] = 0;
    if (r3 >= 0x4000 && r3 < 0x800000 && r4 == 0) {
    - cmd_line[0] = 0;
    - strncpy(cmd_line, (char *)r3 + KERNELBASE,
    + strlcpy(cmd_line, (char *)r3 + KERNELBASE,
    sizeof(cmd_line));
    } else if (boot_infos != 0) {
    /* booted by BootX - check for ramdisk */
    if (boot_infos->kernelParamsOffset != 0)
    - strncpy(cmd_line, (char *) boot_infos
    + strlcpy(cmd_line, (char *) boot_infos
    + boot_infos->kernelParamsOffset,
    sizeof(cmd_line));
    #ifdef CONFIG_BLK_DEV_INITRD
    @@ -439,12 +439,10 @@
    if (chosen != NULL) {
    p = get_property(chosen, "bootargs", NULL);
    if (p && *p) {
    - cmd_line[0] = 0;
    - strncpy(cmd_line, p, sizeof(cmd_line));
    + strlcpy(cmd_line, p, sizeof(cmd_line));
    }
    }
    }
    - cmd_line[sizeof(cmd_line) - 1] = 0;
    #ifdef CONFIG_ADB
    if (strstr(cmd_line, "adb_sync")) {
    extern int __adb_probe_sync;
    Index: linux-2.5/arch/ppc/platforms/pmac_cpufreq.c
    ===================================================================
    --- linux-2.5/arch/ppc/platforms/pmac_cpufreq.c (revision 10155)
    +++ linux-2.5/arch/ppc/platforms/pmac_cpufreq.c (working copy)
    @@ -330,7 +330,7 @@
    driver->setpolicy = &pmac_cpufreq_setpolicy;
    driver->init = NULL;
    driver->exit = NULL;
    - strncpy(driver->name, "powermac", CPUFREQ_NAME_LEN);
    + strlcpy(driver->name, "powermac", sizeof(driver->name));

    driver->policy[0].cpu = 0;
    driver->policy[0].cpuinfo.transition_latency = CPUFREQ_ETERNAL;
    Index: linux-2.5/arch/ppc/platforms/apus_setup.c
    ===================================================================
    --- linux-2.5/arch/ppc/platforms/apus_setup.c (revision 10155)
    +++ linux-2.5/arch/ppc/platforms/apus_setup.c (working copy)
    @@ -130,8 +130,7 @@
    for( p = cmd_line; p && *p; ) {
    i = 0;
    if (!strncmp( p, "debug=", 6 )) {
    - strncpy( debug_device, p+6, sizeof(debug_device)-1 );
    - debug_device[sizeof(debug_device)-1] = 0;
    + strlcpy( debug_device, p+6, sizeof(debug_device) );
    if ((q = strchr( debug_device, ' ' ))) *q = 0;
    i = 1;
    } else if (!strncmp( p, "60nsram", 7 )) {
    Index: linux-2.5/arch/ppc/platforms/zx4500_setup.c
    ===================================================================
    --- linux-2.5/arch/ppc/platforms/zx4500_setup.c (revision 10155)
    +++ linux-2.5/arch/ppc/platforms/zx4500_setup.c (working copy)
    @@ -104,9 +104,9 @@
    #endif

    /* Get boot string from flash */
    - strncpy(boot_string,
    + strlcpy(boot_string,
    (char *)ZX4500_BOOT_STRING_ADDR,
    - ZX4500_BOOT_STRING_LEN);
    + sizeof(boot_string));
    boot_string[ZX4500_BOOT_STRING_LEN] = '\0';

    /* Can be delimited by 0xff */
    Index: linux-2.5/arch/ppc/amiga/bootinfo.c
    ===================================================================
    --- linux-2.5/arch/ppc/amiga/bootinfo.c (revision 10155)
    +++ linux-2.5/arch/ppc/amiga/bootinfo.c (working copy)
    @@ -59,8 +59,7 @@
    break;

    case BI_COMMAND_LINE:
    - strncpy(cmd_line, (const char *)data, CL_SIZE);
    - cmd_line[CL_SIZE-1] = '\0';
    + strlcpy(cmd_line, (const char *)data, sizeof(cmd_line));
    break;

    default:
    Index: linux-2.5/arch/ppc/8xx_io/cs4218_tdm.c
    ===================================================================
    --- linux-2.5/arch/ppc/8xx_io/cs4218_tdm.c (revision 10155)
    +++ linux-2.5/arch/ppc/8xx_io/cs4218_tdm.c (working copy)
    @@ -1654,8 +1654,8 @@
    switch (cmd) {
    case SOUND_MIXER_INFO: {
    mixer_info info;
    - strncpy(info.id, "CS4218_TDM", sizeof(info.id));
    - strncpy(info.name, "CS4218_TDM", sizeof(info.name));
    + strlcpy(info.id, "CS4218_TDM", sizeof(info.id));
    + strlcpy(info.name, "CS4218_TDM", sizeof(info.name));
    info.name[sizeof(info.name)-1] = 0;
    info.modify_counter = mixer.modify_counter;
    if (copy_to_user((int *)arg, &info, sizeof(info)))
    Index: linux-2.5/arch/sparc64/kernel/sys_sunos32.c
    ===================================================================
    --- linux-2.5/arch/sparc64/kernel/sys_sunos32.c (revision 10155)
    +++ linux-2.5/arch/sparc64/kernel/sys_sunos32.c (working copy)
    @@ -704,8 +704,8 @@
    if(IS_ERR(the_name))
    return PTR_ERR(the_name);

    - strncpy (linux_nfs_mount.hostname, the_name, 254);
    - linux_nfs_mount.hostname [255] = 0;
    + strlcpy(linux_nfs_mount.hostname, the_name,
    + sizeof(linux_nfs_mount.hostname));
    putname (the_name);

    return do_mount ("", dir_name, "nfs", linux_flags, &linux_nfs_mount);
    Index: linux-2.5/arch/m68k/kernel/setup.c
    ===================================================================
    --- linux-2.5/arch/m68k/kernel/setup.c (revision 10155)
    +++ linux-2.5/arch/m68k/kernel/setup.c (working copy)
    @@ -159,8 +159,7 @@
    break;

    case BI_COMMAND_LINE:
    - strncpy(m68k_command_line, (const char *)data, CL_SIZE);
    - m68k_command_line[CL_SIZE-1] = '\0';
    + strlcpy(m68k_command_line, (const char *)data, sizeof(m68k_command_line));
    break;

    default:
    @@ -255,8 +254,7 @@
    for( p = *cmdline_p; p && *p; ) {
    i = 0;
    if (!strncmp( p, "debug=", 6 )) {
    - strncpy( m68k_debug_device, p+6, sizeof(m68k_debug_device)-1 );
    - m68k_debug_device[sizeof(m68k_debug_device)-1] = 0;
    + strlcpy( m68k_debug_device, p+6, sizeof(m68k_debug_device) );
    if ((q = strchr( m68k_debug_device, ' ' ))) *q = 0;
    i = 1;
    }
    Index: linux-2.5/arch/m68k/atari/config.c
    ===================================================================
    --- linux-2.5/arch/m68k/atari/config.c (revision 10155)
    +++ linux-2.5/arch/m68k/atari/config.c (working copy)
    @@ -188,8 +188,7 @@
    char *args = switches;

    /* copy string to local array, strsep works destructively... */
    - strncpy( switches, str, len );
    - switches[len] = 0;
    + strlcpy( switches, str, sizeof(switches) );
    atari_switches = 0;

    /* parse the options */
    Index: linux-2.5/arch/m68k/q40/q40ints.c
    ===================================================================
    --- linux-2.5/arch/m68k/q40/q40ints.c (revision 10155)
    +++ linux-2.5/arch/m68k/q40/q40ints.c (working copy)
    @@ -147,7 +147,7 @@
    irq_tab[irq].handler = handler;
    irq_tab[irq].flags = flags;
    irq_tab[irq].dev_id = dev_id;
    - strncpy(irq_tab[irq].devname,devname,DEVNAME_SIZE);
    + strlcpy(irq_tab[irq].devname,devname,sizeof(irq_tab[irq].devname));
    irq_tab[irq].state = 0;
    return 0;
    }
    Index: linux-2.5/arch/alpha/kernel/setup.c
    ===================================================================
    --- linux-2.5/arch/alpha/kernel/setup.c (revision 10155)
    +++ linux-2.5/arch/alpha/kernel/setup.c (working copy)
    @@ -501,10 +501,9 @@
    boot flags depending on the boot mode, we need some shorthand.
    This should do for installation. */
    if (strcmp(COMMAND_LINE, "INSTALL") == 0) {
    - strcpy(command_line, "root=/dev/fd0 load_ramdisk=1");
    + strlcpy(command_line, "root=/dev/fd0 load_ramdisk=1", sizeof command_line);
    } else {
    - strncpy(command_line, COMMAND_LINE, sizeof command_line);
    - command_line[sizeof(command_line)-1] = 0;
    + strlcpy(command_line, COMMAND_LINE, sizeof command_line);
    }
    strcpy(saved_command_line, command_line);
    *cmdline_p = command_line;
    Index: linux-2.5/arch/i386/kernel/timers/timer.c
    ===================================================================
    --- linux-2.5/arch/i386/kernel/timers/timer.c (revision 10155)
    +++ linux-2.5/arch/i386/kernel/timers/timer.c (working copy)
    @@ -23,10 +23,8 @@

    static int __init clock_setup(char* str)
    {
    - if (str) {
    - strncpy(clock_override, str,10);
    - clock_override[9] = '\0';
    - }
    + if (str)
    + strlcpy(clock_override, str, sizeof(clock_override));
    return 1;
    }
    __setup("clock=", clock_setup);
    Index: linux-2.5/arch/ppc64/kernel/setup.c
    ===================================================================
    --- linux-2.5/arch/ppc64/kernel/setup.c (revision 10155)
    +++ linux-2.5/arch/ppc64/kernel/setup.c (working copy)
    @@ -365,16 +365,15 @@
    cmd_line[0] = 0;

    #ifdef CONFIG_CMDLINE
    - strcpy(cmd_line, CONFIG_CMDLINE);
    + strlcpy(cmd_line, CONFIG_CMDLINE, sizeof(cmd_line));
    #endif /* CONFIG_CMDLINE */

    chosen = find_devices("chosen");
    if (chosen != NULL) {
    p = get_property(chosen, "bootargs", NULL);
    if (p != NULL && p[0] != 0)
    - strncpy(cmd_line, p, sizeof(cmd_line));
    + strlcpy(cmd_line, p, sizeof(cmd_line));
    }
    - cmd_line[sizeof(cmd_line) - 1] = 0;

    /* Look for mem= option on command line */
    if (strstr(cmd_line, "mem=")) {
    Index: linux-2.5/arch/s390/kernel/debug.c
    ===================================================================
    --- linux-2.5/arch/s390/kernel/debug.c (revision 10155)
    +++ linux-2.5/arch/s390/kernel/debug.c (working copy)
    @@ -208,8 +208,7 @@
    rc->level = DEBUG_DEFAULT_LEVEL;
    rc->buf_size = buf_size;
    rc->entry_size = sizeof(debug_entry_t) + buf_size;
    - strncpy(rc->name, name, MIN(strlen(name), (DEBUG_MAX_PROCF_LEN - 1)));
    - rc->name[MIN(strlen(name), (DEBUG_MAX_PROCF_LEN - 1))] = 0;
    + strlcpy(rc->name, name, sizeof(rc->name));
    memset(rc->views, 0, DEBUG_MAX_VIEWS * sizeof(struct debug_view *));
    #ifdef CONFIG_PROC_FS
    memset(rc->proc_entries, 0 ,DEBUG_MAX_VIEWS *
    Index: linux-2.5/arch/x86_64/kernel/early_printk.c
    ===================================================================
    --- linux-2.5/arch/x86_64/kernel/early_printk.c (revision 10155)
    +++ linux-2.5/arch/x86_64/kernel/early_printk.c (working copy)
    @@ -170,8 +170,7 @@
    if (early_console_initialized)
    return -1;

    - strncpy(buf,opt,256);
    - buf[255] = 0;
    + strlcpy(buf,opt,sizeof(buf));
    space = strchr(buf, ' ');
    if (space)
    *space = 0;
    Index: linux-2.5/arch/x86_64/ia32/ia32_ioctl.c
    ===================================================================
    --- linux-2.5/arch/x86_64/ia32/ia32_ioctl.c (revision 10155)
    +++ linux-2.5/arch/x86_64/ia32/ia32_ioctl.c (working copy)
    @@ -468,8 +468,7 @@
    if (!dev)
    return -ENODEV;

    - strncpy(ifr32.ifr_name, dev->name, sizeof(ifr32.ifr_name)-1);
    - ifr32.ifr_name[sizeof(ifr32.ifr_name)-1] = 0;
    + strlcpy(ifr32.ifr_name, dev->name, sizeof(ifr32.ifr_name));
    dev_put(dev);

    err = copy_to_user((struct ifreq32 *)arg, &ifr32, sizeof(struct ifreq32));
    Index: linux-2.5/arch/cris/kernel/setup.c
    ===================================================================
    --- linux-2.5/arch/cris/kernel/setup.c (revision 10155)
    +++ linux-2.5/arch/cris/kernel/setup.c (working copy)
    @@ -170,14 +170,12 @@
    *cmdline_p = command_line;

    if (romfs_in_flash) {
    - strncpy(command_line, "root=", COMMAND_LINE_SIZE);
    - strncpy(command_line+5, CONFIG_ETRAX_ROOT_DEVICE,
    - COMMAND_LINE_SIZE-5);
    + strlcpy(command_line, "root=", sizeof(command_line));
    + strlcat(command_line, CONFIG_ETRAX_ROOT_DEVICE,
    + sizeof(command_line));

    /* Save command line copy for /proc/cmdline */
    -
    - memcpy(saved_command_line, command_line, COMMAND_LINE_SIZE);
    - saved_command_line[COMMAND_LINE_SIZE-1] = '\0';
    + strlcpy(saved_command_line, command_line, sizeof(saved_command_line));
    }

    /* give credit for the CRIS port */
    Index: linux-2.5/arch/ia64/sn/io/klconflib.c
    ===================================================================
    --- linux-2.5/arch/ia64/sn/io/klconflib.c (revision 10155)
    +++ linux-2.5/arch/ia64/sn/io/klconflib.c (working copy)
    @@ -851,14 +851,12 @@
    return ;

    if ( (tmp1 = strchr(tmp, ';')) ){
    - strncpy(name, tmp, tmp1-tmp) ;
    - name[tmp1-tmp] = 0 ;
    + strlcpy(name, tmp, tmp1-tmp) ;
    } else {
    - strncpy(name, tmp, (sizeof(name) -1)) ;
    - name[sizeof(name)-1] = 0 ;
    + strlcpy(name, tmp, (sizeof(name))) ;
    }

    - strcpy(lb->brd_name, name) ;
    + strlcpy(lb->brd_name, name, sizeof(lb->brd_name)) ;
    }


    Index: linux-2.5/arch/ia64/sn/io/l1_command.c
    ===================================================================
    --- linux-2.5/arch/ia64/sn/io/l1_command.c (revision 10155)
    +++ linux-2.5/arch/ia64/sn/io/l1_command.c (working copy)
    @@ -718,8 +718,7 @@

    for( i = 0; i < numlines; i++ )
    {
    - strncpy( line, chr, L1_DISPLAY_LINE_LENGTH );
    - line[L1_DISPLAY_LINE_LENGTH] = '\0';
    + strlcpy( line, chr, sizeof(line) );

    /* generally we want to leave the first line of the L1 display
    * alone (so the L1 can manipulate it). If you need to be able
    Index: linux-2.5/arch/ia64/sn/io/sn1/ml_SN_intr.c
    ===================================================================
    --- linux-2.5/arch/ia64/sn/io/sn1/ml_SN_intr.c (revision 10155)
    +++ linux-2.5/arch/ia64/sn/io/sn1/ml_SN_intr.c (working copy)
    @@ -311,14 +311,14 @@
    /* Reserve the level and bump the count. */
    if (rv != -1) {
    if (reserve) {
    - int maxlen = sizeof(vecblk->info[bit].ii_name) - 1;
    - int namelen;
    vecblk->info[bit].ii_flags |= (II_RESERVE | resflags);
    vecblk->info[bit].ii_owner_dev = owner_dev;
    /* Copy in the name. */
    - namelen = name ? strlen(name) : 0;
    - strncpy(vecblk->info[bit].ii_name, name, min(namelen, maxlen));
    - vecblk->info[bit].ii_name[maxlen] = '\0';
    + if (name)
    + strlcpy(vecblk->info[bit].ii_name, name,
    + sizeof(vecblk->info[bit].ii_name));
    + else
    + vecblk->info[bit].ii_name[0] = '\0';
    vecblk->vector_count++;
    } else {
    vecblk->info[bit].ii_flags = 0; /* Clear all the flags */
    @@ -333,7 +333,6 @@

    #if defined(DEBUG)
    if (rv >= 0) {
    - int namelen = name ? strlen(name) : 0;
    /* Gather this device - target cpu mapping information
    * in a table which can be used later by the idbg "intrmap"
    * command
    @@ -347,9 +346,10 @@
    p->cpuid = cpu;
    p->cnodeid = cpuid_to_cnodeid(cpu);
    p->bit = ip * N_INTPEND_BITS + rv;
    - strncpy(p->intr_name,
    - name,
    - min(MAX_NAME,namelen));
    + if (name)
    + strlcpy(p->intr_name, name, sizeof(p->intr_name));
    + else
    + p->intr_name[0] = '\0';
    intr_dev_targ_map_size++;
    }
    mutex_spinunlock(&intr_dev_targ_map_lock,s);
    Index: linux-2.5/arch/ia64/sn/io/sn2/klconflib.c
    ===================================================================
    --- linux-2.5/arch/ia64/sn/io/sn2/klconflib.c (revision 10155)
    +++ linux-2.5/arch/ia64/sn/io/sn2/klconflib.c (working copy)
    @@ -787,15 +787,12 @@
    if (tmp == NULL)
    return ;

    - if ( (tmp1 = strchr(tmp, ';')) ){
    - strncpy(name, tmp, tmp1-tmp) ;
    - name[tmp1-tmp] = 0 ;
    - } else {
    - strncpy(name, tmp, (sizeof(name) -1)) ;
    - name[sizeof(name)-1] = 0 ;
    - }
    + if ( (tmp1 = strchr(tmp, ';')) )
    + strlcpy(name, tmp, tmp1-tmp);
    + else
    + strlcpy(name, tmp, (sizeof(name)));

    - strcpy(lb->brd_name, name) ;
    + strlcpy(lb->brd_name, name, sizeof(lb->brd_name)) ;
    }


    Index: linux-2.5/arch/ia64/sn/io/sn2/pcibr/pcibr_slot.c
    ===================================================================
    --- linux-2.5/arch/ia64/sn/io/sn2/pcibr/pcibr_slot.c (revision 10155)
    +++ linux-2.5/arch/ia64/sn/io/sn2/pcibr/pcibr_slot.c (working copy)
    @@ -149,7 +149,7 @@
    error = pcibr_slot_attach(pcibr_vhdl, slot, D_PCI_HOT_PLUG_ATTACH,
    l1_msg, &tmp_up_resp.resp_sub_errno);

    - strncpy(tmp_up_resp.resp_l1_msg, l1_msg, L1_QSIZE);
    + strlcpy(tmp_up_resp.resp_l1_msg, l1_msg, L1_QSIZE);
    tmp_up_resp.resp_l1_msg[L1_QSIZE] = '\0';

    if (COPYOUT(&tmp_up_resp, reqp->req_respp.up, reqp->req_size)) {
    @@ -240,8 +240,8 @@
    error = pcibr_slot_detach(pcibr_vhdl, slot, D_PCI_HOT_PLUG_DETACH,
    l1_msg, &tmp_down_resp.resp_sub_errno);

    - strncpy(tmp_down_resp.resp_l1_msg, l1_msg, L1_QSIZE);
    - tmp_down_resp.resp_l1_msg[L1_QSIZE] = '\0';
    + strlcpy(tmp_down_resp.resp_l1_msg, l1_msg,
    + sizeof(tmp_down_resp.resp_l1_msg));

    shutdown_copyout:

    Index: linux-2.5/arch/ia64/kernel/setup.c
    ===================================================================
    --- linux-2.5/arch/ia64/kernel/setup.c (revision 10155)
    +++ linux-2.5/arch/ia64/kernel/setup.c (working copy)
    @@ -356,8 +356,7 @@
    unw_init();

    *cmdline_p = __va(ia64_boot_param->command_line);
    - strncpy(saved_command_line, *cmdline_p, sizeof(saved_command_line));
    - saved_command_line[COMMAND_LINE_SIZE-1] = '\0'; /* for safety */
    + strlcpy(saved_command_line, *cmdline_p, sizeof(saved_command_line));

    efi_init();

    Index: linux-2.5/arch/sparc/kernel/sys_sunos.c
    ===================================================================
    --- linux-2.5/arch/sparc/kernel/sys_sunos.c (revision 10155)
    +++ linux-2.5/arch/sparc/kernel/sys_sunos.c (working copy)
    @@ -738,8 +738,8 @@
    if(IS_ERR(the_name))
    return PTR_ERR(the_name);

    - strncpy (linux_nfs_mount.hostname, the_name, 254);
    - linux_nfs_mount.hostname [255] = 0;
    + strlcpy(linux_nfs_mount.hostname, the_name,
    + sizeof(linux_nfs_mount.hostname));
    putname (the_name);

    return do_mount ("", dir_name, "nfs", linux_flags, &linux_nfs_mount);
    Index: linux-2.5/arch/sparc/kernel/ioport.c
    ===================================================================
    --- linux-2.5/arch/sparc/kernel/ioport.c (revision 10155)
    +++ linux-2.5/arch/sparc/kernel/ioport.c (working copy)
    @@ -179,8 +179,7 @@
    tack += sizeof (struct resource);
    }

    - strncpy(tack, name, XNMLN);
    - tack[XNMLN] = 0;
    + strlcpy(tack, name, XNMLN+1);
    res->name = tack;

    va = _sparc_ioremap(res, busno, phys, size);
    Index: linux-2.5/arch/sparc/prom/bootstr.c
    ===================================================================
    --- linux-2.5/arch/sparc/prom/bootstr.c (revision 10155)
    +++ linux-2.5/arch/sparc/prom/bootstr.c (working copy)
    @@ -52,7 +52,7 @@
    * V3 PROM cannot supply as with more than 128 bytes
    * of an argument. But a smart bootstrap loader can.
    */
    - strncpy(barg_buf, *romvec->pv_v2bootargs.bootargs, BARG_LEN-1);
    + strlcpy(barg_buf, *romvec->pv_v2bootargs.bootargs, sizeof(barg_buf));
    break;
    default:
    break;
    Index: linux-2.5/arch/mips/kernel/setup.c
    ===================================================================
    --- linux-2.5/arch/mips/kernel/setup.c (revision 10155)
    +++ linux-2.5/arch/mips/kernel/setup.c (working copy)
    @@ -633,9 +633,8 @@
    panic("Unsupported architecture");
    }

    - strncpy(command_line, arcs_cmdline, sizeof command_line);
    - command_line[sizeof command_line - 1] = 0;
    - strcpy(saved_command_line, command_line);
    + strlcpy(command_line, arcs_cmdline, sizeof command_line);
    + strlcpy(saved_command_line, command_line, sizeof saved_command_line);
    *cmdline_p = command_line;

    parse_mem_cmdline();
    Index: linux-2.5/arch/mips/kernel/irixelf.c
    ===================================================================
    --- linux-2.5/arch/mips/kernel/irixelf.c (revision 10155)
    +++ linux-2.5/arch/mips/kernel/irixelf.c (working copy)
    @@ -1175,7 +1175,7 @@

    set_fs(KERNEL_DS);
    }
    - strncpy(psinfo.pr_fname, current->comm, sizeof(psinfo.pr_fname));
    + strlcpy(psinfo.pr_fname, current->comm, sizeof(psinfo.pr_fname));

    notes[2].name = "CORE";
    notes[2].type = NT_TASKSTRUCT;
    Index: linux-2.5/arch/mips/kernel/sysmips.c
    ===================================================================
    --- linux-2.5/arch/mips/kernel/sysmips.c (revision 10155)
    +++ linux-2.5/arch/mips/kernel/sysmips.c (working copy)
    @@ -64,14 +64,15 @@

    name = (char *) arg1;

    - len = strncpy_from_user(nodename, name, sizeof(nodename));
    + len = strncpy_from_user(nodename, name, __NEW_UTS_LEN);
    if (len < 0)
    return -EFAULT;
    + nodename[__NEW_UTS_LEN] = '\0';

    down_write(&uts_sem);
    - strncpy(system_utsname.nodename, name, len);
    + strlcpy(system_utsname.nodename, nodename,
    + sizeof(system_utsname.nodename));
    up_write(&uts_sem);
    - system_utsname.nodename[len] = '\0';
    return 0;
    }

    -
    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/
    \
     
     \ /
      Last update: 2005-03-22 13:35    [W:0.059 / U:1.136 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site