Commit 07c07635b4f6d4ee2a03cd508beeeaccde4b9d7e

Authored by Laurence Withers
Committed by Wolfgang Denk
1 parent 9e9579bbf9

miiphy: use strncpy() not sprintf()

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>

Showing 1 changed file with 4 additions and 10 deletions Side-by-side Diff

... ... @@ -111,8 +111,9 @@
111 111 {
112 112 struct mii_dev *new_dev;
113 113 struct legacy_mii_dev *ldev;
114   - unsigned int name_len;
115 114  
  115 + BUG_ON(strlen(name) >= MDIO_NAME_LEN);
  116 +
116 117 /* check if we have unique name */
117 118 new_dev = miiphy_get_dev_by_name(name);
118 119 if (new_dev) {
... ... @@ -121,14 +122,6 @@
121 122 }
122 123  
123 124 /* allocate memory */
124   - name_len = strlen(name);
125   - if (name_len > MDIO_NAME_LEN - 1) {
126   - /* Hopefully this won't happen, but if it does, we'll know */
127   - printf("miiphy_register: MDIO name was longer than %d\n",
128   - MDIO_NAME_LEN);
129   - return;
130   - }
131   -
132 125 new_dev = mdio_alloc();
133 126 ldev = malloc(sizeof(*ldev));
134 127  
... ... @@ -141,7 +134,8 @@
141 134 /* initalize mii_dev struct fields */
142 135 new_dev->read = legacy_miiphy_read;
143 136 new_dev->write = legacy_miiphy_write;
144   - sprintf(new_dev->name, name);
  137 + strncpy(new_dev->name, name, MDIO_NAME_LEN);
  138 + new_dev->name[MDIO_NAME_LEN - 1] = 0;
145 139 ldev->read = read;
146 140 ldev->write = write;
147 141 new_dev->priv = ldev;