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