switch(chiptype) {
case 0:
case 2:
- strncpy(priv->hwname, RTL_NAME_S, sizeof(priv->hwname));
+ strscpy(priv->hwname, RTL_NAME_S, sizeof(priv->hwname));
priv->type = RTL_TYPE_S;
break;
case 1:
- strncpy(priv->hwname, RTL_NAME_SD, sizeof(priv->hwname));
+ strscpy(priv->hwname, RTL_NAME_SD, sizeof(priv->hwname));
priv->type = RTL_TYPE_SD;
break;
case 3:
- strncpy(priv->hwname, RTL_NAME_SDM, sizeof(priv->hwname));
+ strscpy(priv->hwname, RTL_NAME_SDM, sizeof(priv->hwname));
priv->type = RTL_TYPE_SDM;
break;
default:
- strncpy(priv->hwname, RTL_NAME_UNKNOWN, sizeof(priv->hwname));
+ strscpy(priv->hwname, RTL_NAME_UNKNOWN, sizeof(priv->hwname));
break;
}
char *p, *token;
/* take a copy since we don't want to trash the inbound buffer when using strsep */
- strncpy(copybuf, buf, sizeof(copybuf));
- copybuf[sizeof(copybuf) - 1] = 0;
+ strscpy(copybuf, buf, sizeof(copybuf));
p = copybuf;
while ((token = strsep(&p, " \t\n")) != NULL) {
+ mtd_part = mtd_parts;
+ names = (char *)&mtd_parts[num_parts];
+
-+ strncpy(names, "myloader", PART_NAME_LEN);
++ strscpy_pad(names, "myloader", PART_NAME_LEN);
+ mtd_part->name = names;
+ mtd_part->offset = 0;
+ mtd_part->size = offset;
+ mtd_part++;
+ names += PART_NAME_LEN;
+
-+ strncpy(names, "partition_table", PART_NAME_LEN);
++ strscpy_pad(names, "partition_table", PART_NAME_LEN);
+ mtd_part->name = names;
+ mtd_part->offset = offset;
+ mtd_part->size = blocklen;
+ continue;
+
+ if ((buf->names[i][0]) && (buf->names[i][0] != '\xff'))
-+ strncpy(names, buf->names[i], PART_NAME_LEN);
++ strscpy_pad(names, buf->names[i], PART_NAME_LEN);
+ else
+ snprintf(names, PART_NAME_LEN, "partition%d", i);
+
+ rootdev = strstr(command_line, "root=/dev/mtdblock");
+
+ if (rootdev)
-+ strncpy(rootdev, "mangled_rootblock=", 18);
++ memcpy(rootdev, "mangled_rootblock=", 18);
+
+ rootfs = strstr(command_line, "rootfstype");
+
+ if (rootfs)
-+ strncpy(rootfs, "mangled_fs", 10);
++ memcpy(rootfs, "mangled_fs", 10);
+
+}
+#else
+ mtd_part = mtd_parts;
+ names = (char *)&mtd_parts[num_parts];
+
-+ strncpy(names, "myloader", PART_NAME_LEN);
++ strscpy_pad(names, "myloader", PART_NAME_LEN);
+ mtd_part->name = names;
+ mtd_part->offset = 0;
+ mtd_part->size = offset;
+ mtd_part++;
+ names += PART_NAME_LEN;
+
-+ strncpy(names, "partition_table", PART_NAME_LEN);
++ strscpy_pad(names, "partition_table", PART_NAME_LEN);
+ mtd_part->name = names;
+ mtd_part->offset = offset;
+ mtd_part->size = blocklen;
+ continue;
+
+ if ((buf->names[i][0]) && (buf->names[i][0] != '\xff'))
-+ strncpy(names, buf->names[i], PART_NAME_LEN);
++ strscpy_pad(names, buf->names[i], PART_NAME_LEN);
+ else
+ snprintf(names, PART_NAME_LEN, "partition%d", i);
+
+ rootdev = strstr(command_line, "root=/dev/mtdblock");
+
+ if (rootdev)
-+ strncpy(rootdev, "mangled_rootblock=", 18);
++ memcpy(rootdev, "mangled_rootblock=", 18);
+
+ rootfs = strstr(command_line, "rootfstype");
+
+ if (rootfs)
-+ strncpy(rootfs, "mangled_fs", 10);
++ memcpy(rootfs, "mangled_fs", 10);
+
+}
+#else
+ *(cur_ptr + offset) = *cur_ptr;
+ }
+
-+ strncpy(s_ptr, p, r_len - 1);
++ memcpy(s_ptr, p, r_len - 1);
+
+ pr_info("Kernel command line after replacement: %s\n", cmdline);
+ } else {