[U-Boot] [PATCH] miiphy: use strncpy() not sprintf()

2011-07-15 Thread Laurence Withers
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 lwith...@guralp.com
Cc: Andy Fleming aflem...@freescale.com
---
Changes for v2:
 - Use strncpy() rather than plain strcpy() for extra safety.

Changes for v3:
 - Use BUG_ON() as an additional safety measure to ensure the name never
   exceeds the buffer size MDIO_NAME_LEN, simplifying the previous test.
---
 common/miiphyutil.c |   14 --
 1 files changed, 4 insertions(+), 10 deletions(-)

diff --git a/common/miiphyutil.c b/common/miiphyutil.c
index bcab74e..35ad357 100644
--- a/common/miiphyutil.c
+++ b/common/miiphyutil.c
@@ -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;
-- 
1.7.2.5

___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


Re: [U-Boot] [PATCH] miiphy: use strncpy() not sprintf()

2011-07-15 Thread Laurence Withers
On Fri, Jul 15, 2011 at 09:21:45AM +, Laurence Withers wrote:
 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.

My apologies; I have missed the v3 tag in the subject. I shall repost.

Bye for now,
-- 
Laurence Withers, lwith...@guralp.comhttp://www.guralp.com/
Direct tel:+447753988197 or tel:+44408643   Software Engineer
General support queries: supp...@guralp.com CMG-DCM CMG-EAM CMG-NAM
___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot