@@ -32,8 +32,13 @@ static void device_name_get(size_t idx, struct shell_static_entry *entry)
32
32
33
33
SHELL_DYNAMIC_CMD_CREATE (dsub_device_name , device_name_get );
34
34
35
- static int parse_device_arg (const struct shell * sh , char * * argv , const struct device * * dev )
35
+ static int parse_device_arg (const struct shell * sh , size_t argc ,
36
+ char * * argv , const struct device * * dev )
36
37
{
38
+ if (argc < 2 ) {
39
+ shell_error (sh , "not enough arguments" );
40
+ return - EINVAL ;
41
+ }
37
42
* dev = shell_device_get_binding (argv [1 ]);
38
43
if (!* dev ) {
39
44
shell_error (sh , "device %s not found" , argv [1 ]);
@@ -55,12 +60,12 @@ static int cmd_mdio_scan(const struct shell *sh, size_t argc, char **argv)
55
60
uint16_t reg_addr ;
56
61
int ret ;
57
62
58
- ret = parse_device_arg (sh , argv , & dev );
63
+ ret = parse_device_arg (sh , argc , argv , & dev );
59
64
if (ret < 0 ) {
60
65
return ret ;
61
66
}
62
67
63
- if (argc >= 2 ) {
68
+ if (argc >= 3 ) {
64
69
reg_addr = strtol (argv [2 ], NULL , 16 );
65
70
} else {
66
71
reg_addr = 0 ;
@@ -98,11 +103,16 @@ static int cmd_mdio_write(const struct shell *sh, size_t argc, char **argv)
98
103
uint16_t port_addr ;
99
104
int ret ;
100
105
101
- ret = parse_device_arg (sh , argv , & dev );
106
+ ret = parse_device_arg (sh , argc , argv , & dev );
102
107
if (ret < 0 ) {
103
108
return ret ;
104
109
}
105
110
111
+ if (argc < 5 ) {
112
+ shell_error (sh , "not enough arguments" );
113
+ return - EINVAL ;
114
+ }
115
+
106
116
port_addr = strtol (argv [2 ], NULL , 16 );
107
117
reg_addr = strtol (argv [3 ], NULL , 16 );
108
118
data = strtol (argv [4 ], NULL , 16 );
@@ -130,11 +140,16 @@ static int cmd_mdio_read(const struct shell *sh, size_t argc, char **argv)
130
140
uint16_t port_addr ;
131
141
int ret ;
132
142
133
- ret = parse_device_arg (sh , argv , & dev );
143
+ ret = parse_device_arg (sh , argc , argv , & dev );
134
144
if (ret < 0 ) {
135
145
return ret ;
136
146
}
137
147
148
+ if (argc < 4 ) {
149
+ shell_error (sh , "not enough arguments" );
150
+ return - EINVAL ;
151
+ }
152
+
138
153
port_addr = strtol (argv [2 ], NULL , 16 );
139
154
reg_addr = strtol (argv [3 ], NULL , 16 );
140
155
@@ -164,11 +179,16 @@ static int cmd_mdio_write_45(const struct shell *sh, size_t argc, char **argv)
164
179
uint8_t port_addr ;
165
180
int ret ;
166
181
167
- ret = parse_device_arg (sh , argv , & dev );
182
+ ret = parse_device_arg (sh , argc , argv , & dev );
168
183
if (ret < 0 ) {
169
184
return ret ;
170
185
}
171
186
187
+ if (argc < 6 ) {
188
+ shell_error (sh , "not enough arguments" );
189
+ return - EINVAL ;
190
+ }
191
+
172
192
port_addr = strtol (argv [2 ], NULL , 16 );
173
193
dev_addr = strtol (argv [3 ], NULL , 16 );
174
194
reg_addr = strtol (argv [4 ], NULL , 16 );
@@ -198,11 +218,16 @@ static int cmd_mdio_read_c45(const struct shell *sh, size_t argc, char **argv)
198
218
uint8_t port_addr ;
199
219
int ret ;
200
220
201
- ret = parse_device_arg (sh , argv , & dev );
221
+ ret = parse_device_arg (sh , argc , argv , & dev );
202
222
if (ret < 0 ) {
203
223
return ret ;
204
224
}
205
225
226
+ if (argc < 5 ) {
227
+ shell_error (sh , "not enough arguments" );
228
+ return - EINVAL ;
229
+ }
230
+
206
231
port_addr = strtol (argv [2 ], NULL , 16 );
207
232
dev_addr = strtol (argv [3 ], NULL , 16 );
208
233
reg_addr = strtol (argv [4 ], NULL , 16 );
0 commit comments