Commit 07c07635b4f6d4ee2a03cd508beeeaccde4b9d7e
Committed by
Wolfgang Denk
1 parent
9e9579bbf9
Exists in
master
and in
54 other branches
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
common/miiphyutil.c
... | ... | @@ -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; |