From caa9cc8613e403a59ffe48a6abc77faac1369a66 Mon Sep 17 00:00:00 2001 From: Maurizio Lombardi Date: Mon, 21 Nov 2011 19:52:03 +0100 Subject: [PATCH] mkfs.minix: inode numbers are 32-bit wide in V3 filesystems --- disk-utils/mkfs.minix.c | 27 +++++++++++++++++++-------- 1 file changed, 19 insertions(+), 8 deletions(-) diff --git a/disk-utils/mkfs.minix.c b/disk-utils/mkfs.minix.c index 826a7e9b78..502c420697 100644 --- a/disk-utils/mkfs.minix.c +++ b/disk-utils/mkfs.minix.c @@ -729,14 +729,25 @@ int main(int argc, char ** argv) { } check_mount(); /* is it already mounted? */ tmp = root_block; - *(short *)tmp = 1; - strcpy(tmp+2,"."); - tmp += dirsize; - *(short *)tmp = 1; - strcpy(tmp+2,".."); - tmp += dirsize; - *(short *)tmp = 2; - strcpy(tmp+2,".badblocks"); + if (fs_version == 3) { + *(uint32_t *)tmp = 1; + strcpy(tmp+4,"."); + tmp += dirsize; + *(uint32_t *)tmp = 1; + strcpy(tmp+4,".."); + tmp += dirsize; + *(uint32_t *)tmp = 2; + strcpy(tmp+4, ".badblocks"); + } else { + *(uint16_t *)tmp = 1; + strcpy(tmp+2,"."); + tmp += dirsize; + *(uint16_t *)tmp = 1; + strcpy(tmp+2,".."); + tmp += dirsize; + *(uint16_t *)tmp = 2; + strcpy(tmp+2, ".badblocks"); + } if (stat(device_name, &statbuf) < 0) err(MKFS_ERROR, _("%s: stat failed"), device_name); if (S_ISBLK(statbuf.st_mode)) -- 2.47.2