KVM: selftests: Add atoi_paranoid() to catch errors missed by atoi()
atoi() doesn't detect errors. There is no way to know that a 0 return is correct conversion or due to an error. Introduce atoi_paranoid() to detect errors and provide correct conversion. Replace all atoi() calls with atoi_paranoid(). Signed-off-by: Vipin Sharma <vipinsh@google.com> Suggested-by: David Matlack <dmatlack@google.com> Suggested-by: Sean Christopherson <seanjc@google.com> Reviewed-by: Sean Christopherson <seanjc@google.com> Link: https://lore.kernel.org/r/20221103191719.1559407-4-vipinsh@google.com Signed-off-by: Sean Christopherson <seanjc@google.com>
This commit is contained in:
committed by
Sean Christopherson
parent
0eb88a4121
commit
018ea2d71a
@@ -414,7 +414,7 @@ static bool parse_args(int argc, char *argv[])
|
||||
while ((opt = getopt(argc, argv, "hn:i:p:m:")) != -1) {
|
||||
switch (opt) {
|
||||
case 'n':
|
||||
test_args.nr_vcpus = atoi(optarg);
|
||||
test_args.nr_vcpus = atoi_paranoid(optarg);
|
||||
if (test_args.nr_vcpus <= 0) {
|
||||
pr_info("Positive value needed for -n\n");
|
||||
goto err;
|
||||
@@ -425,21 +425,21 @@ static bool parse_args(int argc, char *argv[])
|
||||
}
|
||||
break;
|
||||
case 'i':
|
||||
test_args.nr_iter = atoi(optarg);
|
||||
test_args.nr_iter = atoi_paranoid(optarg);
|
||||
if (test_args.nr_iter <= 0) {
|
||||
pr_info("Positive value needed for -i\n");
|
||||
goto err;
|
||||
}
|
||||
break;
|
||||
case 'p':
|
||||
test_args.timer_period_ms = atoi(optarg);
|
||||
test_args.timer_period_ms = atoi_paranoid(optarg);
|
||||
if (test_args.timer_period_ms <= 0) {
|
||||
pr_info("Positive value needed for -p\n");
|
||||
goto err;
|
||||
}
|
||||
break;
|
||||
case 'm':
|
||||
test_args.migration_freq_ms = atoi(optarg);
|
||||
test_args.migration_freq_ms = atoi_paranoid(optarg);
|
||||
if (test_args.migration_freq_ms < 0) {
|
||||
pr_info("0 or positive value needed for -m\n");
|
||||
goto err;
|
||||
|
||||
Reference in New Issue
Block a user