]> git.sur5r.net Git - u-boot/commitdiff
miiphy: use strncpy() not sprintf()
authorLaurence Withers <lwithers@guralp.com>
Thu, 14 Jul 2011 23:21:45 +0000 (23:21 +0000)
committerWolfgang Denk <wd@denx.de>
Tue, 26 Jul 2011 12:00:24 +0000 (14:00 +0200)
In miiphy_register() the new device's name was initialised by passing a
string parameter as the format string to sprintf(). As this would cause
problems if it ever contained a '%' symbol, switch to using strncpy()
instead.

Signed-off-by: Laurence Withers <lwithers@guralp.com>
Cc: Andy Fleming <afleming@freescale.com>
common/miiphyutil.c

index bcab74e73a9d769d9631310aea0791a834d447bc..35ad357b95072384139679d1f3bd34a3f5ec6bc1 100644 (file)
@@ -111,7 +111,8 @@ void miiphy_register(const char *name,
 {
        struct mii_dev *new_dev;
        struct legacy_mii_dev *ldev;
-       unsigned int name_len;
+
+       BUG_ON(strlen(name) >= MDIO_NAME_LEN);
 
        /* check if we have unique name */
        new_dev = miiphy_get_dev_by_name(name);
@@ -121,14 +122,6 @@ void miiphy_register(const char *name,
        }
 
        /* allocate memory */
-       name_len = strlen(name);
-       if (name_len > MDIO_NAME_LEN - 1) {
-               /* Hopefully this won't happen, but if it does, we'll know */
-               printf("miiphy_register: MDIO name was longer than %d\n",
-                       MDIO_NAME_LEN);
-               return;
-       }
-
        new_dev = mdio_alloc();
        ldev = malloc(sizeof(*ldev));
 
@@ -141,7 +134,8 @@ void miiphy_register(const char *name,
        /* initalize mii_dev struct fields */
        new_dev->read = legacy_miiphy_read;
        new_dev->write = legacy_miiphy_write;
-       sprintf(new_dev->name, name);
+       strncpy(new_dev->name, name, MDIO_NAME_LEN);
+       new_dev->name[MDIO_NAME_LEN - 1] = 0;
        ldev->read = read;
        ldev->write = write;
        new_dev->priv = ldev;