fdisk: make CHS user values more robust
Signed-off-by: Davidlohr Bueso <dave@gnu.org>
This commit is contained in:
parent
3f1789ce5d
commit
9912f01b68
|
@ -2776,7 +2776,7 @@ main(int argc, char **argv)
|
||||||
arrow_cursor = TRUE;
|
arrow_cursor = TRUE;
|
||||||
break;
|
break;
|
||||||
case 'c':
|
case 'c':
|
||||||
user_cylinders = cylinders = atoll(optarg);
|
user_cylinders = cylinders = strtoll_or_err(optarg, _("cannot parse number of cylinders"));
|
||||||
if (cylinders <= 0) {
|
if (cylinders <= 0) {
|
||||||
fprintf(stderr, "%s: %s\n", argv[0], _("Illegal cylinders value"));
|
fprintf(stderr, "%s: %s\n", argv[0], _("Illegal cylinders value"));
|
||||||
exit(1);
|
exit(1);
|
||||||
|
@ -2786,14 +2786,14 @@ main(int argc, char **argv)
|
||||||
use_partition_table_geometry = TRUE;
|
use_partition_table_geometry = TRUE;
|
||||||
break;
|
break;
|
||||||
case 'h':
|
case 'h':
|
||||||
user_heads = heads = atoi(optarg);
|
user_heads = heads = strtol_or_err(optarg, _("cannot parse number of heads"));
|
||||||
if (heads <= 0 || heads > MAX_HEADS) {
|
if (heads <= 0 || heads > MAX_HEADS) {
|
||||||
fprintf(stderr, "%s: %s\n", argv[0], _("Illegal heads value"));
|
fprintf(stderr, "%s: %s\n", argv[0], _("Illegal heads value"));
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 's':
|
case 's':
|
||||||
user_sectors = sectors = atoi(optarg);
|
user_sectors = sectors = strtol_or_err(optarg, _("cannot parse number of sectors"));
|
||||||
if (sectors <= 0 || sectors > MAX_SECTORS) {
|
if (sectors <= 0 || sectors > MAX_SECTORS) {
|
||||||
fprintf(stderr, "%s: %s\n", argv[0], _("Illegal sectors value"));
|
fprintf(stderr, "%s: %s\n", argv[0], _("Illegal sectors value"));
|
||||||
exit(1);
|
exit(1);
|
||||||
|
|
|
@ -2914,7 +2914,7 @@ main(int argc, char **argv) {
|
||||||
so cannot be combined with multiple disks,
|
so cannot be combined with multiple disks,
|
||||||
and te same goes for the C/H/S options.
|
and te same goes for the C/H/S options.
|
||||||
*/
|
*/
|
||||||
sector_size = atoi(optarg);
|
sector_size = strtol_or_err(optarg, _("cannot parse sector size"));
|
||||||
if (sector_size != 512 && sector_size != 1024 &&
|
if (sector_size != 512 && sector_size != 1024 &&
|
||||||
sector_size != 2048 && sector_size != 4096)
|
sector_size != 2048 && sector_size != 4096)
|
||||||
usage(stderr);
|
usage(stderr);
|
||||||
|
@ -2922,7 +2922,7 @@ main(int argc, char **argv) {
|
||||||
user_set_sector_size = 1;
|
user_set_sector_size = 1;
|
||||||
break;
|
break;
|
||||||
case 'C':
|
case 'C':
|
||||||
user_cylinders = atoi(optarg);
|
user_cylinders = strtol_or_err(optarg, _("cannot parse number of cylinders"));
|
||||||
break;
|
break;
|
||||||
case 'c':
|
case 'c':
|
||||||
dos_compatible_flag = 0; /* default */
|
dos_compatible_flag = 0; /* default */
|
||||||
|
@ -2936,12 +2936,12 @@ main(int argc, char **argv) {
|
||||||
usage(stdout);
|
usage(stdout);
|
||||||
break;
|
break;
|
||||||
case 'H':
|
case 'H':
|
||||||
user_heads = atoi(optarg);
|
user_heads = strtol_or_err(optarg, _("cannot parse number of heads"));
|
||||||
if (user_heads <= 0 || user_heads > 256)
|
if (user_heads <= 0 || user_heads > 256)
|
||||||
user_heads = 0;
|
user_heads = 0;
|
||||||
break;
|
break;
|
||||||
case 'S':
|
case 'S':
|
||||||
user_sectors = atoi(optarg);
|
user_sectors = strtol_or_err(optarg, _("cannot parse number of sectors"));
|
||||||
if (user_sectors <= 0 || user_sectors >= 64)
|
if (user_sectors <= 0 || user_sectors >= 64)
|
||||||
user_sectors = 0;
|
user_sectors = 0;
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -55,6 +55,7 @@
|
||||||
#include "canonicalize.h"
|
#include "canonicalize.h"
|
||||||
#include "rpmatch.h"
|
#include "rpmatch.h"
|
||||||
#include "closestream.h"
|
#include "closestream.h"
|
||||||
|
#include "strutils.h"
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Table of contents:
|
* Table of contents:
|
||||||
|
@ -2643,7 +2644,7 @@ main(int argc, char **argv) {
|
||||||
activate = 1;
|
activate = 1;
|
||||||
break;
|
break;
|
||||||
case 'C':
|
case 'C':
|
||||||
U.cylinders = atoi(optarg);
|
U.cylinders = strtoll_or_err(optarg, _("cannot parse number of cylinders"));
|
||||||
break;
|
break;
|
||||||
case 'D':
|
case 'D':
|
||||||
DOS = 1;
|
DOS = 1;
|
||||||
|
@ -2652,13 +2653,13 @@ main(int argc, char **argv) {
|
||||||
DOS_extended = 1;
|
DOS_extended = 1;
|
||||||
break;
|
break;
|
||||||
case 'H':
|
case 'H':
|
||||||
U.heads = atoi(optarg);
|
U.heads = strtol_or_err(optarg, _("cannot parse number of heads"));
|
||||||
break;
|
break;
|
||||||
case 'L':
|
case 'L':
|
||||||
Linux = 1;
|
Linux = 1;
|
||||||
break;
|
break;
|
||||||
case 'N':
|
case 'N':
|
||||||
one_only = atoi(optarg);
|
one_only = strtol_or_err(optarg, _("cannot parse number of partitions"));
|
||||||
break;
|
break;
|
||||||
case 'I':
|
case 'I':
|
||||||
restore_sector_file = optarg;
|
restore_sector_file = optarg;
|
||||||
|
@ -2670,7 +2671,7 @@ main(int argc, char **argv) {
|
||||||
opt_reread = 1;
|
opt_reread = 1;
|
||||||
break;
|
break;
|
||||||
case 'S':
|
case 'S':
|
||||||
U.sectors = atoi(optarg);
|
U.sectors = strtol_or_err(optarg, _("cannot parse number of sectors"));
|
||||||
break;
|
break;
|
||||||
case 'T':
|
case 'T':
|
||||||
list_types();
|
list_types();
|
||||||
|
|
Loading…
Reference in New Issue