Erik Larsson
c9b795489e
Merge version 2016.2.22 into the strict endians branch.
...
Conflicts:
libntfs-3g/volume.c
2016-02-22 09:40:35 +01:00
Erik Larsson
62b5c91420
Fix compiler warnings about mismatching printf format / argument type.
...
For 64-bit (e.g. x86_64) Linux the 64-bit wide types resolve to long,
not long long as is the case in 32-bit (e.g. i386) Linux. So we need an
explicit cast to long long for 64-bit types since the format string must
specify the 'll' modifier in order to print 64-bit values.
2016-02-16 09:30:49 +01:00
Jean-Pierre André
d2197785f4
Avoided pointer cast when checking record types
...
Some compilers issue warning when casting a pointer to a pointer to
a different type.
When checking a record magic, there is no need to cast pointers.
2016-02-15 11:54:33 +01:00
Erik Larsson
abb2266147
mft.c: Fix compiler warning about mismatching format/argument type.
...
The expression is promoted to 'int' implicitly so we explicitly cast it
to 'u8'.
2016-02-11 13:52:59 +01:00
Erik Larsson
33cb3087b5
efs.c: Fix incorrect type of local variables 'newsize' and 'oldsize'.
...
These variable are only ever assigned to/from s64 values, so their type
should be s64, not u64. This fixes a compiler warning about
signed/unsigned comparison.
2016-02-08 18:42:53 +01:00
Erik Larsson
34bb449324
Merge branch 'edge' into edge.strict_endians
...
Conflicts:
libntfs-3g/dir.c
libntfs-3g/index.c
libntfs-3g/runlist.c
ntfsprogs/ntfsfix.c
ntfsprogs/ntfsinfo.c
2016-02-05 18:02:02 +01:00
Erik Larsson
9893ea9ee6
Merge endianness fixes.
...
Conflicts:
libntfs-3g/attrib.c
2016-01-28 09:22:42 +01:00
Erik Larsson
760ddd62cf
Merge endianness fixes required for the strict endians code to compile.
...
Conflicts:
libntfs-3g/attrib.c
libntfs-3g/dir.c
libntfs-3g/logfile.c
libntfs-3g/volume.c
ntfsprogs/ntfscp.c
ntfsprogs/ntfsdump_logfile.c
ntfsprogs/ntfsfallocate.c
ntfsprogs/ntfsfix.c
ntfsprogs/ntfsinfo.c
ntfsprogs/ntfsresize.c
ntfsprogs/ntfstruncate.c
2016-01-28 09:21:09 +01:00
Erik Larsson
7e85b4ccd4
Replace switch statements for le/be types with equivalent if statements.
...
Since the le/be-types are now typedef'd to aggregate types, we can't use
those in switch statements.
2016-01-28 08:29:02 +01:00
Erik Larsson
597adff2bb
Replace all le32 "not" negations with le32_not(...).
2016-01-28 08:29:00 +01:00
Erik Larsson
85588b8e92
Replace all le16 "not" negations with le16_not(...).
2016-01-28 08:28:59 +01:00
Erik Larsson
14190d81b3
Replace all le32 "xor" calculations with le32_xor(...).
2016-01-28 08:28:57 +01:00
Erik Larsson
1118a56eea
Replace all le16 "xor" calculations with le16_xor(...).
2016-01-28 08:28:56 +01:00
Erik Larsson
1500a77676
Replace all le32 "or" calculations with le32_or(...).
2016-01-28 08:28:54 +01:00
Erik Larsson
b61e7ff449
Replace all le16 "or" calculations with le16_or(...).
2016-01-28 08:28:53 +01:00
Erik Larsson
7b3700ed5e
Replace all le32 "and" calculations with le32_and(...).
2016-01-28 08:28:51 +01:00
Erik Larsson
2b4c3a618c
Replace all le16 "and" calculations with le16_and(...).
2016-01-28 08:28:50 +01:00
Erik Larsson
e970b57c74
Replace all le32 zero "and" test conditions with le32_andz(...).
2016-01-28 08:28:49 +01:00
Erik Larsson
9f5ad52e5f
Replace all le32 non-zero "and" test conditions with !le32_andz(...).
2016-01-28 08:28:48 +01:00
Erik Larsson
1b7bfaa133
Replace all le16 zero "and" test conditions with le16_andz(...).
2016-01-28 08:28:47 +01:00
Erik Larsson
35c72761c7
Replace all le16 non-zero "and" test conditions with !le16_andz(...).
2016-01-28 08:28:46 +01:00
Erik Larsson
01c493f16c
Replace all be16 zero test conditions with "be16_cmpz(...)".
2016-01-28 08:28:45 +01:00
Erik Larsson
5097bb9ea3
Replace all sle64 zero test conditions with "sle64_cmpz(...)".
2016-01-28 08:28:44 +01:00
Erik Larsson
97ccd587d6
Replace all sle64 non-zero test conditions with "!sle64_cmpz(...)".
2016-01-28 08:28:43 +01:00
Erik Larsson
65eea3fe0a
Replace all le64 zero test conditions with "le64_cmpz(...)".
2016-01-28 08:28:42 +01:00
Erik Larsson
ed87a4dffa
Replace all le32 zero test conditions with "le32_cmpz(...)".
2016-01-28 08:28:40 +01:00
Erik Larsson
18990412fa
Replace all le32 non-zero test conditions with "!le32_cmpz(...)".
2016-01-28 08:28:39 +01:00
Erik Larsson
e366bef954
Replace all le16 zero test conditions with "le16_cmpz(...)".
2016-01-28 08:28:38 +01:00
Erik Larsson
90697bb5ab
Replace all le16 non-zero test conditions with "!le16_cmpz(...)".
2016-01-28 08:28:37 +01:00
Erik Larsson
c29924872f
Replace all be32 usage of the '==' operation with "be32_eq(...)".
2016-01-28 08:28:36 +01:00
Erik Larsson
e616a84f21
Replace all be16 usage of the '==' operation with "be16_eq(...)".
2016-01-28 08:28:35 +01:00
Erik Larsson
7b85755080
Replace all sle64 usage of the '==' operation with "sle64_eq(...)".
2016-01-28 08:28:33 +01:00
Erik Larsson
e1bd02ed74
Replace all sle16 usage of the '!=' operation with "!sle16_eq(...)".
2016-01-28 08:28:32 +01:00
Erik Larsson
94589cde03
Replace all sle16 usage of the '==' operation with "sle16_eq(...)".
2016-01-28 08:28:31 +01:00
Erik Larsson
d61f8615d9
Replace all le64 usage of the '!=' operation with "!le64_eq(...)".
2016-01-28 08:28:30 +01:00
Erik Larsson
7a88d7821e
Replace all le64 usage of the '==' operation with "le64_eq(...)".
2016-01-28 08:28:28 +01:00
Erik Larsson
0876896169
Replace all le32 usage of the '!=' operation with "!le32_eq(...)".
2016-01-28 08:28:27 +01:00
Erik Larsson
011a9e9e5e
Replace all le32 usage of the '==' operation with "le32_eq(...)".
2016-01-28 08:28:26 +01:00
Erik Larsson
59a05b5c34
Replace all le16 usage of the '!=' operation with "!le16_eq(...)".
2016-01-28 08:28:25 +01:00
Erik Larsson
347bdf21ec
Replace all le16 usage of the '==' operation with "le16_eq(...)".
2016-01-28 08:28:23 +01:00
Erik Larsson
701cd61cca
volume.c: Fix passing bad pointer type to ntfs_is_[baad|mft]_recordp.
2016-01-25 11:31:12 +01:00
Erik Larsson
8aa2769d70
mst.c: Fix mixed native/little-endian usage of variable 'usn'.
2016-01-25 11:30:13 +01:00
Erik Larsson
84f042e739
reparse.c: Fix big-endian bug when converting file name to lowercase.
...
When looking up the lowercase equivalent of a Unicode character in
ntfs_fix_file_name, no byte swapping was performed on the ntfschar used
as index into the 'locase' array. This would lead to very strange
results on big-endian systems.
2016-01-04 10:19:05 +01:00
Erik Larsson
9cf04fd2cd
Fix incorrect usage of native/little-endian types, signed types, etc.
...
This is harmless with regard to code generation but if we turn on strict
type checking these type mismatches will result in errors.
2015-12-21 23:55:31 +01:00
Erik Larsson
f076fae75a
Fix endianness issues in log and terminal output.
...
This commit addresses issues where little-endian variables are emitted
raw to a log or output stream which is to be interpreted by the user.
Outputting data in non-native endianness can cause confusion for anybody
attempting to debug issues with a file system.
2015-12-21 23:31:09 +01:00
Erik Larsson
48cb23265b
Fix code to use const_cpu_to_X/const_X_to_cpu macros for constants.
...
This enables the compiler to optimize this code in cases where compiler
support for endianness swapping is not present.
2015-12-21 23:21:00 +01:00
Erik Larsson
dfa4a6647f
Fix code to use const_cpu_to_X/const_X_to_cpu macros for constants.
...
This enables the compiler to optimize this code in cases where compiler
support for endianness swapping is not present.
2015-12-21 23:21:00 +01:00
Jean-Pierre André
f7cbf30d54
Rejected invalid null reparse tag
...
The null reparse tag is considered invalid by Windows, so do the same.
2015-12-01 11:06:11 +01:00
Jean-Pierre André
4d5ce43ab9
Fixed returning the trimming count to fstrim(8)
...
When used with the option -v, fstrim(8) reported the maximum trimming count
because the correct value was not returned to the ioctl call.
2015-12-01 11:00:24 +01:00
Jean-Pierre André
aeb1d7fb74
Fixed special case of decompressing a runlist
...
When the unreadable directory has an ATTRIBUTE_LIST attribute and an
INDEX_ALLOCATION attribute occupying split over several extents, the first
of which defines a single cluster, the first INDEX_ALLOCATION extent has
lowest_vcn=0 and highest_vcn=0, and the second one has lowest_vcn=1.
This unusual case, which can be created by the combination of a small
volume and near-full MFT records, triggers some special-case behavior in
ntfs_mapping_pairs_decompress_i(). That behavior is incorrect if the
attribute's first extent only contains a single cluster, since in that case
highest_vcn=0 as well.
This configuration has been tested on Windows and it *is* able to
successfully read the directory. This supports the hypothesis that the
volume is valid and NTFS-3g has a bug on the read side.
This bug could, in theory, occur with any non-resident attribute, not just
INDEX_ALLOCATION attributes.
(Contributed by Eric Biggers)
2015-11-20 16:17:48 +01:00