diff --git a/.vs/rufus.vcxproj b/.vs/rufus.vcxproj index 9aef5e72..35bb2422 100644 --- a/.vs/rufus.vcxproj +++ b/.vs/rufus.vcxproj @@ -128,7 +128,7 @@ CompileAsC true false - 4091;28252;28253;%(DisableSpecificWarnings) + 4091;28251;28252;28253;%(DisableSpecificWarnings) Disabled /utf-8 %(AdditionalOptions) @@ -153,7 +153,7 @@ CompileAsC true false - 4091;28252;28253;%(DisableSpecificWarnings) + 4091;28251;28252;28253;%(DisableSpecificWarnings) /utf-8 %(AdditionalOptions) @@ -179,7 +179,7 @@ CompileAsC true false - 4091;28252;28253;%(DisableSpecificWarnings) + 4091;28251;28252;28253;%(DisableSpecificWarnings) /utf-8 %(AdditionalOptions) @@ -209,7 +209,7 @@ CompileAsC true false - 4091;28252;28253;%(DisableSpecificWarnings) + 4091;28251;28252;28253;%(DisableSpecificWarnings) Disabled /utf-8 %(AdditionalOptions) @@ -234,7 +234,7 @@ CompileAsC true false - 4091;28252;28253;%(DisableSpecificWarnings) + 4091;28251;28252;28253;%(DisableSpecificWarnings) NDEBUG /utf-8 %(AdditionalOptions) @@ -259,7 +259,7 @@ CompileAsC true false - 4091;28252;28253;%(DisableSpecificWarnings) + 4091;28251;28252;28253;%(DisableSpecificWarnings) NDEBUG /utf-8 %(AdditionalOptions) @@ -286,7 +286,7 @@ CompileAsC true false - 4091;28252;28253;%(DisableSpecificWarnings) + 4091;28251;28252;28253;%(DisableSpecificWarnings) NDEBUG /utf-8 %(AdditionalOptions) @@ -316,7 +316,7 @@ CompileAsC true false - 4091;28252;28253;%(DisableSpecificWarnings) + 4091;28251;28252;28253;%(DisableSpecificWarnings) NDEBUG /utf-8 %(AdditionalOptions) diff --git a/src/bled/decompress_unlzma.c b/src/bled/decompress_unlzma.c index f9c389e1..049d3651 100644 --- a/src/bled/decompress_unlzma.c +++ b/src/bled/decompress_unlzma.c @@ -262,7 +262,7 @@ unpack_lzma_stream(transformer_state_t *xstate) rc = rc_init(xstate->src_fd); /*, RC_BUFFER_SIZE); */ - while (global_pos + buffer_pos < header.dst_size) { + while ((uint64_t)global_pos + buffer_pos < header.dst_size) { int pos_state = (buffer_pos + global_pos) & pos_state_mask; uintptr_t off1 = LZMA_IS_MATCH + (state << LZMA_NUM_POS_BITS_MAX) + pos_state; uint16_t *prob1 = p + off1; diff --git a/src/ext2fs/alloc_tables.c b/src/ext2fs/alloc_tables.c index 971a6ceb..ee67ec38 100644 --- a/src/ext2fs/alloc_tables.c +++ b/src/ext2fs/alloc_tables.c @@ -113,7 +113,7 @@ errcode_t ext2fs_allocate_group_table(ext2_filsys fs, dgrp_t group, if (retval) return retval; start_blk += fs->inode_blocks_per_group; - start_blk += ((fs->stride * group) % + start_blk += (((blk64_t)fs->stride * group) % (last_blk - start_blk + 1)); if (start_blk >= last_blk) start_blk = group_blk; diff --git a/src/ext2fs/bb_inode.c b/src/ext2fs/bb_inode.c index 11f10ebc..f236b51f 100644 --- a/src/ext2fs/bb_inode.c +++ b/src/ext2fs/bb_inode.c @@ -129,7 +129,7 @@ errcode_t ext2fs_update_bb_inode(ext2_filsys fs, ext2_badblocks_list bb_list) inode.i_ctime = fs->now ? fs->now : time(0); ext2fs_iblk_set(fs, &inode, rec.bad_block_count); retval = ext2fs_inode_size_set(fs, &inode, - rec.bad_block_count * fs->blocksize); + (ext2_off64_t)rec.bad_block_count * fs->blocksize); if (retval) goto cleanup; diff --git a/src/ext2fs/bitmaps.c b/src/ext2fs/bitmaps.c index e25db2c6..aa8aaa2c 100644 --- a/src/ext2fs/bitmaps.c +++ b/src/ext2fs/bitmaps.c @@ -62,7 +62,7 @@ errcode_t ext2fs_allocate_inode_bitmap(ext2_filsys fs, start = 1; end = fs->super->s_inodes_count; - real_end = (EXT2_INODES_PER_GROUP(fs->super) * fs->group_desc_count); + real_end = ((__u64)EXT2_INODES_PER_GROUP(fs->super) * fs->group_desc_count); /* Are we permitted to use new-style bitmaps? */ if (fs->flags & EXT2_FLAG_64BITS) diff --git a/src/ext2fs/blkmap64_rb.c b/src/ext2fs/blkmap64_rb.c index 1fd55274..204dedee 100644 --- a/src/ext2fs/blkmap64_rb.c +++ b/src/ext2fs/blkmap64_rb.c @@ -726,13 +726,13 @@ static errcode_t rb_set_bmap_range(ext2fs_generic_bitmap_64 bitmap, continue; rb_insert_extent(start + first_set - bitmap->start, - i - first_set, bp); + (__u64)i - first_set, bp); check_tree(&bp->root, __func__); first_set = -1; } if (first_set != -1) { rb_insert_extent(start + first_set - bitmap->start, - num - first_set, bp); + (__u64)num - first_set, bp); check_tree(&bp->root, __func__); } @@ -792,8 +792,8 @@ static errcode_t rb_get_bmap_range(ext2fs_generic_bitmap_64 bitmap, int offset = (pos - start) >> 3; memset(((char *) out) + offset, 0xFF, nbytes); - pos += nbytes << 3; - count -= nbytes << 3; + pos += (__u64)nbytes << 3; + count -= (__u64)nbytes << 3; continue; } ext2fs_fast_set_bit64((pos - start), out); diff --git a/src/ext2fs/block.c b/src/ext2fs/block.c index 06eed6e0..9eb778e2 100644 --- a/src/ext2fs/block.c +++ b/src/ext2fs/block.c @@ -165,7 +165,7 @@ static int block_iterate_dind(blk_t *dind_block, blk_t ref_block, } check_for_ro_violation_return(ctx, ret); if (!*dind_block || (ret & BLOCK_ABORT)) { - ctx->bcount += limit*limit; + ctx->bcount += (e2_blkcnt_t)limit * limit; return ret; } if (*dind_block >= ext2fs_blocks_count(ctx->fs->super) || @@ -284,7 +284,7 @@ static int block_iterate_tind(blk_t *tind_block, blk_t ref_block, } else { for (i = 0; i < limit; i++, block_nr++) { if (*block_nr == 0) { - ctx->bcount += limit*limit; + ctx->bcount += (e2_blkcnt_t)limit * limit; continue; } flags = block_iterate_dind(block_nr, @@ -544,7 +544,7 @@ errcode_t ext2fs_block_iterate3(ext2_filsys fs, if (ret & BLOCK_ABORT) goto abort_exit; } else - ctx.bcount += limit * limit; + ctx.bcount += (e2_blkcnt_t)limit * limit; if (inode.i_block[EXT2_TIND_BLOCK] || (flags & BLOCK_FLAG_APPEND)) { ret |= block_iterate_tind(&inode.i_block[EXT2_TIND_BLOCK], 0, EXT2_TIND_BLOCK, &ctx); diff --git a/src/ext2fs/bmap.c b/src/ext2fs/bmap.c index 65c45c51..2cb708ef 100644 --- a/src/ext2fs/bmap.c +++ b/src/ext2fs/bmap.c @@ -417,7 +417,7 @@ errcode_t ext2fs_bmap2(ext2_filsys fs, ext2_ino_t ino, struct ext2_inode *inode, /* Doubly indirect block */ block -= addr_per_block; - if (block < addr_per_block * addr_per_block) { + if (block < (blk64_t)addr_per_block * addr_per_block) { b = inode_bmap(inode, EXT2_DIND_BLOCK); if (!b) { if (!(bmap_flags & BMAP_ALLOC)) { @@ -444,7 +444,7 @@ errcode_t ext2fs_bmap2(ext2_filsys fs, ext2_ino_t ino, struct ext2_inode *inode, } /* Triply indirect block */ - block -= addr_per_block * addr_per_block; + block -= (blk64_t)addr_per_block * addr_per_block; b = inode_bmap(inode, EXT2_TIND_BLOCK); if (!b) { if (!(bmap_flags & BMAP_ALLOC)) { diff --git a/src/ext2fs/closefs.c b/src/ext2fs/closefs.c index 1d4d5b7f..997be80b 100644 --- a/src/ext2fs/closefs.c +++ b/src/ext2fs/closefs.c @@ -89,7 +89,7 @@ errcode_t ext2fs_super_and_bgd_loc2(ext2_filsys fs, old_desc_blocks = fs->super->s_first_meta_bg; else old_desc_blocks = - fs->desc_blocks + fs->super->s_reserved_gdt_blocks; + (blk64_t)fs->desc_blocks + fs->super->s_reserved_gdt_blocks; has_super = ext2fs_bg_has_super(fs, group); diff --git a/src/ext2fs/ext2fs.h b/src/ext2fs/ext2fs.h index b2e2ab4a..a866a1d7 100644 --- a/src/ext2fs/ext2fs.h +++ b/src/ext2fs/ext2fs.h @@ -1875,14 +1875,17 @@ _INLINE_ errcode_t ext2fs_free_mem(void *ptr) _INLINE_ errcode_t ext2fs_resize_mem(unsigned long EXT2FS_ATTR((unused)) old_size, unsigned long size, void *ptr) { - void *p; + void *p, *old_p; /* Use "memcpy" for pointer assignments here to avoid problems * with C99 strict type aliasing rules. */ memcpy(&p, ptr, sizeof(p)); + old_p = p; p = realloc(p, size); - if (!p) + if (!p) { + free(old_p); return EXT2_ET_NO_MEMORY; + } memcpy(ptr, &p, sizeof(p)); return 0; } diff --git a/src/ext2fs/extent.c b/src/ext2fs/extent.c index 28170381..790e4c26 100644 --- a/src/ext2fs/extent.c +++ b/src/ext2fs/extent.c @@ -1568,8 +1568,8 @@ errcode_t ext2fs_extent_set_bmap(ext2_extent_handle_t handle, } } /* add post-split extent */ - extent.e_pblk += extent.e_len + 1; - extent.e_lblk += extent.e_len + 1; + extent.e_pblk += (blk64_t)extent.e_len + 1; + extent.e_lblk += (blk64_t)extent.e_len + 1; extent.e_len = save_length - extent.e_len - 1; retval = ext2fs_extent_insert(handle, EXT2_EXTENT_INSERT_AFTER, &extent); diff --git a/src/ext2fs/gen_bitmap64.c b/src/ext2fs/gen_bitmap64.c index 6e4d8b71..87fb8ca7 100644 --- a/src/ext2fs/gen_bitmap64.c +++ b/src/ext2fs/gen_bitmap64.c @@ -682,7 +682,7 @@ int ext2fs_test_block_bitmap_range2(ext2fs_block_bitmap gen_bmap, /* convert to clusters if necessary */ block >>= bmap->cluster_bits; - end += (1 << bmap->cluster_bits) - 1; + end += (1ULL << bmap->cluster_bits) - 1; end >>= bmap->cluster_bits; num = end - block; @@ -723,7 +723,7 @@ void ext2fs_mark_block_bitmap_range2(ext2fs_block_bitmap gen_bmap, /* convert to clusters if necessary */ block >>= bmap->cluster_bits; - end += (1 << bmap->cluster_bits) - 1; + end += (1ULL << bmap->cluster_bits) - 1; end >>= bmap->cluster_bits; num = end - block; @@ -764,7 +764,7 @@ void ext2fs_unmark_block_bitmap_range2(ext2fs_block_bitmap gen_bmap, /* convert to clusters if necessary */ block >>= bmap->cluster_bits; - end += (1 << bmap->cluster_bits) - 1; + end += (1ULL << bmap->cluster_bits) - 1; end >>= bmap->cluster_bits; num = end - block; @@ -799,8 +799,7 @@ errcode_t ext2fs_convert_subcluster_bitmap(ext2_filsys fs, ext2fs_generic_bitmap_64 bmap, cmap; ext2fs_block_bitmap gen_bmap = *bitmap, gen_cmap; errcode_t retval; - blk64_t i, b_end, c_end; - int n, ratio; + blk64_t i, b_end, c_end, n, ratio; bmap = (ext2fs_generic_bitmap_64) gen_bmap; if (fs->cluster_ratio_bits == ext2fs_get_bitmap_granularity(gen_bmap)) @@ -818,7 +817,7 @@ errcode_t ext2fs_convert_subcluster_bitmap(ext2_filsys fs, c_end = cmap->end; cmap->end = cmap->real_end; n = 0; - ratio = 1 << fs->cluster_ratio_bits; + ratio = 1ULL << fs->cluster_ratio_bits; while (i < bmap->real_end) { if (ext2fs_test_block_bitmap2(gen_bmap, i)) { ext2fs_mark_block_bitmap2(gen_cmap, i); diff --git a/src/ext2fs/inode.c b/src/ext2fs/inode.c index 75df418d..fbb97ae4 100644 --- a/src/ext2fs/inode.c +++ b/src/ext2fs/inode.c @@ -967,6 +967,10 @@ errcode_t ext2fs_write_inode2(ext2_filsys fs, ext2_ino_t ino, if ((offset + length) > fs->blocksize) clen = fs->blocksize - offset; + if (!fs->icache) { + retval = EXT2_ET_GDESC_READ; + goto errout; + } if (fs->icache->buffer_blk != block_nr) { retval = io_channel_read_blk64(fs->io, block_nr, 1, fs->icache->buffer); diff --git a/src/ext2fs/rw_bitmaps.c b/src/ext2fs/rw_bitmaps.c index e86bacd5..03cfb4e2 100644 --- a/src/ext2fs/rw_bitmaps.c +++ b/src/ext2fs/rw_bitmaps.c @@ -106,7 +106,7 @@ static errcode_t write_bitmaps(ext2_filsys fs, int do_inode, int do_block) } } skip_this_block_bitmap: - blk_itr += block_nbytes << 3; + blk_itr += (blk64_t)block_nbytes << 3; skip_block_bitmap: if (!do_inode) @@ -322,7 +322,7 @@ static errcode_t read_bitmaps(ext2_filsys fs, int do_inode, int do_block) blk_itr, cnt, block_bitmap); if (retval) goto cleanup; - blk_itr += block_nbytes << 3; + blk_itr += (blk64_t)block_nbytes << 3; } if (inode_bitmap) { blk = ext2fs_inode_bitmap_loc(fs, i); diff --git a/src/ext2fs/sha512.c b/src/ext2fs/sha512.c index fe2dd52e..74563c20 100644 --- a/src/ext2fs/sha512.c +++ b/src/ext2fs/sha512.c @@ -169,7 +169,7 @@ static void sha512_done(struct hash_state * md, unsigned char *out) int i; /* increase the length of the message */ - md->sha512.length += md->sha512.curlen * CONST64(8); + md->sha512.length += (__u64)md->sha512.curlen * CONST64(8); /* append the '1' bit */ md->sha512.buf[md->sha512.curlen++] = (unsigned char)0x80; diff --git a/src/libcdio/driver/read.c b/src/libcdio/driver/read.c index 59735e78..70f1ef19 100644 --- a/src/libcdio/driver/read.c +++ b/src/libcdio/driver/read.c @@ -187,7 +187,7 @@ cdio_read_mode1_sector (const CdIo_t *p_cdio, void *p_buf, lsn_t i_lsn, return p_cdio->op.read_mode1_sector(p_cdio->env, p_buf, i_lsn, b_form2); } else if (p_cdio->op.lseek && p_cdio->op.read) { char buf[M2RAW_SECTOR_SIZE] = { 0, }; - if (0 > cdio_lseek(p_cdio, CDIO_CD_FRAMESIZE*i_lsn, SEEK_SET)) + if (0 > cdio_lseek(p_cdio, (long long)CDIO_CD_FRAMESIZE * i_lsn, SEEK_SET)) return -1; if (0 > cdio_read(p_cdio, buf, CDIO_CD_FRAMESIZE)) return -1; diff --git a/src/libcdio/udf/udf_time.c b/src/libcdio/udf/udf_time.c index 3d8a9f5f..3da2d4a4 100644 --- a/src/libcdio/udf/udf_time.c +++ b/src/libcdio/udf/udf_time.c @@ -133,13 +133,12 @@ udf_stamp_to_time(time_t *dest, long int *dest_usec, return NULL; } *dest = year_seconds[src.year - EPOCH_YEAR]; - *dest -= offset * SECS_PER_MINUTE; + *dest -= (time_t)offset * SECS_PER_MINUTE; yday = ((__mon_yday[__isleap (src.year)] [src.month-1]) + (src.day-1)); - *dest += src.second + - ( SECS_PER_MINUTE * - ( ( (yday* HOURS_PER_DAY) + src.hour ) * 60 + src.minute ) ); + *dest += (time_t)src.second + ((time_t)SECS_PER_MINUTE * + ( ( ((time_t)yday* HOURS_PER_DAY) + src.hour ) * 60 + src.minute ) ); *dest_usec = src.microseconds + (src.centiseconds * 10000) diff --git a/src/ms-sys/fat32.c b/src/ms-sys/fat32.c index 78b8c509..e90b9409 100644 --- a/src/ms-sys/fat32.c +++ b/src/ms-sys/fat32.c @@ -37,7 +37,7 @@ int is_fat_32_br(FILE *fp) int i; for(i=0 ; i<3 ; i++) - if( ! contains_data(fp, 0x1FE + i*0x200, aucRef, sizeof(aucRef))) + if( ! contains_data(fp, 0x1FEULL + i * 0x200ULL, aucRef, sizeof(aucRef))) return 0; if( ! contains_data(fp, 0x03, aucMagic, sizeof(aucMagic))) return 0; diff --git a/src/rufus.rc b/src/rufus.rc index f532b396..5a41e3ff 100644 --- a/src/rufus.rc +++ b/src/rufus.rc @@ -33,7 +33,7 @@ LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL IDD_DIALOG DIALOGEX 12, 12, 232, 326 STYLE DS_SETFONT | DS_MODALFRAME | DS_CENTER | WS_MINIMIZEBOX | WS_POPUP | WS_CAPTION | WS_SYSMENU EXSTYLE WS_EX_ACCEPTFILES -CAPTION "Rufus 3.9.1606" +CAPTION "Rufus 3.9.1607" FONT 9, "Segoe UI Symbol", 400, 0, 0x0 BEGIN LTEXT "Drive Properties",IDS_DRIVE_PROPERTIES_TXT,8,6,53,12,NOT WS_GROUP @@ -394,8 +394,8 @@ END // VS_VERSION_INFO VERSIONINFO - FILEVERSION 3,9,1606,0 - PRODUCTVERSION 3,9,1606,0 + FILEVERSION 3,9,1607,0 + PRODUCTVERSION 3,9,1607,0 FILEFLAGSMASK 0x3fL #ifdef _DEBUG FILEFLAGS 0x1L @@ -413,13 +413,13 @@ BEGIN VALUE "Comments", "https://rufus.ie" VALUE "CompanyName", "Akeo Consulting" VALUE "FileDescription", "Rufus" - VALUE "FileVersion", "3.9.1606" + VALUE "FileVersion", "3.9.1607" VALUE "InternalName", "Rufus" VALUE "LegalCopyright", "© 2011-2020 Pete Batard (GPL v3)" VALUE "LegalTrademarks", "https://www.gnu.org/licenses/gpl-3.0.html" VALUE "OriginalFilename", "rufus-3.9.exe" VALUE "ProductName", "Rufus" - VALUE "ProductVersion", "3.9.1606" + VALUE "ProductVersion", "3.9.1607" END END BLOCK "VarFileInfo" diff --git a/src/syslinux/libfat/fatchain.c b/src/syslinux/libfat/fatchain.c index 9853a726..0c40a482 100644 --- a/src/syslinux/libfat/fatchain.c +++ b/src/syslinux/libfat/fatchain.c @@ -34,7 +34,7 @@ libfat_sector_t libfat_clustertosector(const struct libfat_filesystem *fs, else if (cluster < 2 || cluster >= fs->endcluster) return -1; else - return fs->data + ((libfat_sector_t) (cluster - 2) << fs->clustshift); + return fs->data + (((libfat_sector_t)cluster - 2) << fs->clustshift); } /* diff --git a/src/syslinux/libfat/open.c b/src/syslinux/libfat/open.c index 7281e03f..6f241428 100644 --- a/src/syslinux/libfat/open.c +++ b/src/syslinux/libfat/open.c @@ -66,7 +66,7 @@ libfat_open(int (*readfunc) (intptr_t, void *, size_t, libfat_sector_t), if (!fatsize) fatsize = read32(&bs->u.fat32.bpb_fatsz32); - fs->rootdir = fs->fat + fatsize * read8(&bs->bsFATs); + fs->rootdir = fs->fat + (libfat_sector_t)fatsize * read8(&bs->bsFATs); rootdirsize = ((read16(&bs->bsRootDirEnts) << 5) + LIBFAT_SECTOR_MASK) >> LIBFAT_SECTOR_SHIFT;