strncpy.
* grub-core/fs/jfs.c (grub_jfs_lookup_symlink): Likewise.
* grub-core/kern/misc.c (grub_strncpy): Move from here ...
* include/grub/misc.h (grub_strncpy): ... to here. Make inline.
* grub-core/net/net.c (grub_net_addr_to_str): Use COMPILE_TIME_ASSERT
+ strcpy rather than strncpy.
+2013-11-01 Vladimir Serbinenko <phcoder@gmail.com>
+
+ * grub-core/fs/ext2.c (grub_ext2_read_symlink): Use memcpy rather
+ strncpy.
+ * grub-core/fs/jfs.c (grub_jfs_lookup_symlink): Likewise.
+ * grub-core/kern/misc.c (grub_strncpy): Move from here ...
+ * include/grub/misc.h (grub_strncpy): ... to here. Make inline.
+ * grub-core/net/net.c (grub_net_addr_to_str): Use COMPILE_TIME_ASSERT
+ + strcpy rather than strncpy.
+
2013-11-01 Vladimir Serbinenko <phcoder@gmail.com>
* grub-core/fs/zfs/zfs.c (nvpair_name): Use correct type for size.
/* If the filesize of the symlink is bigger than
60 the symlink is stored in a separate block,
otherwise it is stored in the inode. */
- if (grub_le_to_cpu32 (diro->inode.size) <= 60)
- grub_strncpy (symlink,
- diro->inode.symlink,
- grub_le_to_cpu32 (diro->inode.size));
+ if (grub_le_to_cpu32 (diro->inode.size) <= sizeof (diro->inode.symlink))
+ grub_memcpy (symlink,
+ diro->inode.symlink,
+ grub_le_to_cpu32 (diro->inode.size));
else
{
grub_ext2_read_file (diro, 0, 0, 0,
if (!symlink)
return grub_errno;
if (size <= sizeof (data->currinode.symlink.path))
- grub_strncpy (symlink, (char *) (data->currinode.symlink.path), size);
+ grub_memcpy (symlink, (char *) (data->currinode.symlink.path), size);
else if (grub_jfs_read_file (data, 0, 0, 0, size, symlink) < 0)
{
grub_free (symlink);
return dest;
}
-char *
-grub_strncpy (char *dest, const char *src, int c)
-{
- char *p = dest;
-
- while ((*p++ = *src++) != '\0' && --c)
- ;
-
- return dest;
-}
-
int
grub_printf (const char *fmt, ...)
{
switch (target->type)
{
case GRUB_NET_NETWORK_LEVEL_PROTOCOL_DHCP_RECV:
- /* TRANSLATORS: it refers to the network address. */
- grub_strncpy (buf, "temporary", GRUB_NET_MAX_STR_ADDR_LEN);
+ COMPILE_TIME_ASSERT (sizeof ("temporary") < GRUB_NET_MAX_STR_ADDR_LEN);
+ grub_strcpy (buf, "temporary");
return;
case GRUB_NET_NETWORK_LEVEL_PROTOCOL_IPV6:
{
void *EXPORT_FUNC(grub_memmove) (void *dest, const void *src, grub_size_t n);
char *EXPORT_FUNC(grub_strcpy) (char *dest, const char *src);
-char *EXPORT_FUNC(grub_strncpy) (char *dest, const char *src, int c);
+
+static inline char *
+grub_strncpy (char *dest, const char *src, int c)
+{
+ char *p = dest;
+
+ while ((*p++ = *src++) != '\0' && --c)
+ ;
+
+ return dest;
+}
+
static inline char *
grub_stpcpy (char *dest, const char *src)
{