git.annexia.org
/
libguestfs.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
mkfs-b: Check that blocksize parameter is > 0 and a power of 2.
[libguestfs.git]
/
daemon
/
mkfs.c
diff --git
a/daemon/mkfs.c
b/daemon/mkfs.c
index
506066f
..
2c3a3cd
100644
(file)
--- a/
daemon/mkfs.c
+++ b/
daemon/mkfs.c
@@
-40,7
+40,7
@@
mkfs (const char *fstype, const char *device,
int r;
char *err;
int r;
char *err;
- argv[i++] = "
/sbin/
mkfs";
+ argv[i++] = "mkfs";
argv[i++] = "-t";
argv[i++] = fstype;
argv[i++] = "-t";
argv[i++] = fstype;
@@
-48,21
+48,21
@@
mkfs (const char *fstype, const char *device,
* to every block and does bad block detection, neither of which
* are useful behaviour for virtual devices.
*/
* to every block and does bad block detection, neither of which
* are useful behaviour for virtual devices.
*/
- if (
strcmp (fstype, "ntfs") == 0
)
+ if (
STREQ (fstype, "ntfs")
)
argv[i++] = "-Q";
/* mkfs.reiserfs produces annoying interactive prompts unless you
* tell it to be quiet.
*/
argv[i++] = "-Q";
/* mkfs.reiserfs produces annoying interactive prompts unless you
* tell it to be quiet.
*/
- if (
strcmp (fstype, "reiserfs") == 0
)
+ if (
STREQ (fstype, "reiserfs")
)
argv[i++] = "-f";
/* Same for JFS. */
argv[i++] = "-f";
/* Same for JFS. */
- if (
strcmp (fstype, "jfs") == 0
)
+ if (
STREQ (fstype, "jfs")
)
argv[i++] = "-f";
/* For GFS, GFS2, assume a single node. */
argv[i++] = "-f";
/* For GFS, GFS2, assume a single node. */
- if (
strcmp (fstype, "gfs") == 0 || strcmp (fstype, "gfs2") == 0
) {
+ if (
STREQ (fstype, "gfs") || STREQ (fstype, "gfs2")
) {
argv[i++] = "-p";
argv[i++] = "lock_nolock";
/* The man page says this is default, but it doesn't seem to be: */
argv[i++] = "-p";
argv[i++] = "lock_nolock";
/* The man page says this is default, but it doesn't seem to be: */
@@
-83,7
+83,7
@@
mkfs (const char *fstype, const char *device,
r = commandv (NULL, &err, argv);
if (r == -1) {
r = commandv (NULL, &err, argv);
if (r == -1) {
- reply_with_error ("
mkfs:
%s: %s: %s", fstype, device, err);
+ reply_with_error ("%s: %s: %s", fstype, device, err);
free (err);
return -1;
}
free (err);
return -1;
}
@@
-104,6
+104,11
@@
do_mkfs_b (const char *fstype, int blocksize, const char *device)
const char *extra[2];
char blocksize_s[32];
const char *extra[2];
char blocksize_s[32];
+ if (blocksize <= 0 || !is_power_of_2 (blocksize)) {
+ reply_with_error ("block size must be > 0 and a power of 2");
+ return -1;
+ }
+
snprintf (blocksize_s, sizeof blocksize_s, "%d", blocksize);
extra[0] = "-b";
snprintf (blocksize_s, sizeof blocksize_s, "%d", blocksize);
extra[0] = "-b";