diff -Nru ntfs-3g-2016.2.22AR.2/autom4te.cache/requests ntfs-3g-2017.3.23/autom4te.cache/requests --- ntfs-3g-2016.2.22AR.2/autom4te.cache/requests 2016-10-01 06:42:15.000000000 +0000 +++ ntfs-3g-2017.3.23/autom4te.cache/requests 1970-01-01 00:00:00.000000000 +0000 @@ -1,311 +0,0 @@ -# This file was generated. -# It contains the lists of macros which have been traced. -# It can be safely removed. - -@request = ( - bless( [ - '0', - 1, - [ - '/usr/share/autoconf' - ], - [ - '/usr/share/autoconf/autoconf/autoconf.m4f', - '-', - '/usr/share/aclocal-1.14/internal/ac-config-macro-dirs.m4', - '/usr/share/aclocal/argz.m4', - '/usr/share/aclocal/libgcrypt.m4', - '/usr/share/aclocal/ltdl.m4', - '/usr/share/aclocal/pkg.m4', - '/usr/share/aclocal-1.14/amversion.m4', - '/usr/share/aclocal-1.14/auxdir.m4', - '/usr/share/aclocal-1.14/cond.m4', - '/usr/share/aclocal-1.14/depend.m4', - '/usr/share/aclocal-1.14/depout.m4', - '/usr/share/aclocal-1.14/init.m4', - '/usr/share/aclocal-1.14/install-sh.m4', - '/usr/share/aclocal-1.14/lead-dot.m4', - '/usr/share/aclocal-1.14/maintainer.m4', - '/usr/share/aclocal-1.14/make.m4', - '/usr/share/aclocal-1.14/missing.m4', - '/usr/share/aclocal-1.14/options.m4', - '/usr/share/aclocal-1.14/prog-cc-c-o.m4', - '/usr/share/aclocal-1.14/runlog.m4', - '/usr/share/aclocal-1.14/sanity.m4', - '/usr/share/aclocal-1.14/silent.m4', - '/usr/share/aclocal-1.14/strip.m4', - '/usr/share/aclocal-1.14/substnot.m4', - '/usr/share/aclocal-1.14/tar.m4', - 'm4/libtool.m4', - 'm4/ltoptions.m4', - 'm4/ltsugar.m4', - 'm4/ltversion.m4', - 'm4/lt~obsolete.m4', - 'configure.ac' - ], - { - '_LT_AC_LANG_F77_CONFIG' => 1, - 'AC_LIBTOOL_SETUP' => 1, - 'AM_OUTPUT_DEPENDENCY_COMMANDS' => 1, - '_LT_AC_LANG_CXX_CONFIG' => 1, - 'AM_INIT_AUTOMAKE' => 1, - 'm4_pattern_allow' => 1, - 'LT_CONFIG_LTDL_DIR' => 1, - 'LT_LANG' => 1, - 'AC_LIBLTDL_CONVENIENCE' => 1, - 'include' => 1, - 'AC_LIBTOOL_LANG_RC_CONFIG' => 1, - 'AC_LIBTOOL_SYS_DYNAMIC_LINKER' => 1, - 'AC_DISABLE_STATIC' => 1, - '_LT_PATH_TOOL_PREFIX' => 1, - 'AC_LIBTOOL_F77' => 1, - 'LTVERSION_VERSION' => 1, - '_LT_COMPILER_OPTION' => 1, - '_LT_PREPARE_SED_QUOTE_VARS' => 1, - '_LT_PROG_LTMAIN' => 1, - '_LT_AC_LANG_F77' => 1, - '_LT_AC_LANG_C_CONFIG' => 1, - 'AC_DEFUN' => 1, - 'AM_SET_CURRENT_AUTOMAKE_VERSION' => 1, - '_LT_PROG_CXX' => 1, - 'AC_LTDL_OBJDIR' => 1, - '_LT_PROG_F77' => 1, - 'LT_SYS_DLOPEN_SELF' => 1, - 'AC_LIBTOOL_PROG_COMPILER_PIC' => 1, - '_AM_SUBST_NOTMAKE' => 1, - 'AM_PROG_NM' => 1, - '_LT_PROG_FC' => 1, - '_LT_AC_PROG_CXXCPP' => 1, - 'LT_SYS_DLOPEN_DEPLIBS' => 1, - '_LT_LINKER_BOILERPLATE' => 1, - 'AC_CHECK_LIBM' => 1, - 'AC_LTDL_PREOPEN' => 1, - 'AC_PROG_NM' => 1, - 'AM_AUTOMAKE_VERSION' => 1, - 'LT_AC_PROG_GCJ' => 1, - 'AC_LIBTOOL_SYS_OLD_ARCHIVE' => 1, - '_PKG_SHORT_ERRORS_SUPPORTED' => 1, - 'AM_PROG_CC_C_O' => 1, - 'LT_PATH_LD' => 1, - 'AM_DEP_TRACK' => 1, - 'AM_MISSING_HAS_RUN' => 1, - '_AM_CONFIG_MACRO_DIRS' => 1, - 'AM_ENABLE_STATIC' => 1, - 'AC_PROG_LIBTOOL' => 1, - '_AM_IF_OPTION' => 1, - 'AC_LIBTOOL_POSTDEP_PREDEP' => 1, - '_AM_SET_OPTIONS' => 1, - 'AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH' => 1, - 'AC_LIBTOOL_CONFIG' => 1, - '_AM_DEPENDENCIES' => 1, - 'gl_FUNC_ARGZ' => 1, - 'gl_PREREQ_ARGZ' => 1, - 'AC_LIBTOOL_PROG_LD_SHLIBS' => 1, - 'AC_LIBTOOL_LANG_C_CONFIG' => 1, - '_LT_AC_LANG_GCJ' => 1, - 'AC_LTDL_ENABLE_INSTALL' => 1, - 'AC_WITH_LTDL' => 1, - 'AM_CONDITIONAL' => 1, - 'PKG_CHECK_VAR' => 1, - '_LT_AC_SYS_LIBPATH_AIX' => 1, - 'AC_LTDL_SHLIBPATH' => 1, - '_LT_AC_LANG_RC_CONFIG' => 1, - 'AC_LTDL_DLLIB' => 1, - '_LT_AC_LANG_GCJ_CONFIG' => 1, - 'AM_SUBST_NOTMAKE' => 1, - '_LT_AC_FILE_LTDLL_C' => 1, - 'AM_DISABLE_SHARED' => 1, - 'AC_LIBTOOL_LANG_GCJ_CONFIG' => 1, - 'LTOPTIONS_VERSION' => 1, - '_LT_CC_BASENAME' => 1, - 'AC_LIBTOOL_CXX' => 1, - '_AC_AM_CONFIG_HEADER_HOOK' => 1, - 'LT_SYS_MODULE_EXT' => 1, - 'LTOBSOLETE_VERSION' => 1, - 'AC_LIBTOOL_LANG_CXX_CONFIG' => 1, - 'LT_SYS_SYMBOL_USCORE' => 1, - 'LT_OUTPUT' => 1, - 'AC_LIBTOOL_GCJ' => 1, - 'AC_DEPLIBS_CHECK_METHOD' => 1, - 'AC_DISABLE_SHARED' => 1, - 'AC_LIBLTDL_INSTALLABLE' => 1, - 'AC_PATH_TOOL_PREFIX' => 1, - 'PKG_NOARCH_INSTALLDIR' => 1, - 'AM_ENABLE_SHARED' => 1, - 'LT_SUPPORTED_TAG' => 1, - '_LT_AC_TAGVAR' => 1, - 'LT_LIB_M' => 1, - 'AC_ENABLE_SHARED' => 1, - 'AC_DEFUN_ONCE' => 1, - 'AC_LIBTOOL_COMPILER_OPTION' => 1, - 'LT_PROG_RC' => 1, - 'LT_FUNC_DLSYM_USCORE' => 1, - 'AM_PROG_INSTALL_STRIP' => 1, - 'AC_LTDL_SYMBOL_USCORE' => 1, - 'AC_LIBTOOL_FC' => 1, - 'LT_AC_PROG_RC' => 1, - 'AC_LIBTOOL_SYS_LIB_STRIP' => 1, - 'AM_PROG_INSTALL_SH' => 1, - 'AM_PROG_LD' => 1, - 'AC_LIBTOOL_DLOPEN' => 1, - 'LT_PATH_NM' => 1, - '_LT_LIBOBJ' => 1, - 'AC_LIBTOOL_SYS_HARD_LINK_LOCKS' => 1, - 'AC_LIB_LTDL' => 1, - 'AC_LIBTOOL_SYS_MAX_CMD_LEN' => 1, - 'AM_RUN_LOG' => 1, - 'LT_WITH_LTDL' => 1, - '_AM_AUTOCONF_VERSION' => 1, - 'AC_PATH_MAGIC' => 1, - '_LT_AC_TRY_DLOPEN_SELF' => 1, - 'AU_DEFUN' => 1, - '_AM_OUTPUT_DEPENDENCY_COMMANDS' => 1, - 'm4_include' => 1, - 'AM_SET_LEADING_DOT' => 1, - 'AC_PROG_LD' => 1, - 'AM_DISABLE_STATIC' => 1, - 'PKG_PROG_PKG_CONFIG' => 1, - 'AC_LIBTOOL_RC' => 1, - '_LT_PROG_ECHO_BACKSLASH' => 1, - 'LTDL_INSTALLABLE' => 1, - 'AC_LIBTOOL_OBJDIR' => 1, - 'AM_PROG_LIBTOOL' => 1, - '_LT_AC_SYS_COMPILER' => 1, - 'LT_PROG_GO' => 1, - '_AM_MANGLE_OPTION' => 1, - 'LT_AC_PROG_EGREP' => 1, - 'LTSUGAR_VERSION' => 1, - 'PKG_INSTALLDIR' => 1, - 'AC_LTDL_SHLIBEXT' => 1, - 'AM_PATH_LIBGCRYPT' => 1, - '_LT_AC_LANG_CXX' => 1, - 'AC_LIBTOOL_PROG_COMPILER_NO_RTTI' => 1, - 'AC_PROG_EGREP' => 1, - '_AM_PROG_CC_C_O' => 1, - '_LT_REQUIRED_DARWIN_CHECKS' => 1, - 'AC_PROG_LD_RELOAD_FLAG' => 1, - 'AM_MAINTAINER_MODE' => 1, - 'AC_LIBTOOL_WIN32_DLL' => 1, - '_LT_WITH_SYSROOT' => 1, - 'AM_AUX_DIR_EXPAND' => 1, - 'LT_LIB_DLLOAD' => 1, - 'AC_LIBTOOL_LINKER_OPTION' => 1, - 'PKG_CHECK_EXISTS' => 1, - 'AC_LTDL_SYS_DLOPEN_DEPLIBS' => 1, - 'LT_PROG_GCJ' => 1, - '_LT_AC_LOCK' => 1, - '_LT_AC_CHECK_DLFCN' => 1, - '_AC_PROG_LIBTOOL' => 1, - 'PKG_CHECK_MODULES' => 1, - 'AC_LIBTOOL_PICMODE' => 1, - 'AM_SET_DEPDIR' => 1, - 'AC_LIBTOOL_DLOPEN_SELF' => 1, - 'AC_ENABLE_FAST_INSTALL' => 1, - '_LTDL_SETUP' => 1, - '_LT_LINKER_OPTION' => 1, - '_LT_COMPILER_BOILERPLATE' => 1, - 'AM_MISSING_PROG' => 1, - 'AC_DISABLE_FAST_INSTALL' => 1, - 'LTDL_INIT' => 1, - 'AC_LIBTOOL_LANG_F77_CONFIG' => 1, - '_LT_AC_TAGCONFIG' => 1, - 'AC_CONFIG_MACRO_DIR' => 1, - 'AC_PROG_LD_GNU' => 1, - 'LT_CMD_MAX_LEN' => 1, - 'AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE' => 1, - '_LT_AC_PROG_ECHO_BACKSLASH' => 1, - 'AM_SANITY_CHECK' => 1, - 'AC_LTDL_DLSYM_USCORE' => 1, - '_AM_SET_OPTION' => 1, - 'AM_MAKE_INCLUDE' => 1, - 'LT_SYS_MODULE_PATH' => 1, - 'AM_SILENT_RULES' => 1, - '_m4_warn' => 1, - 'AC_CONFIG_MACRO_DIR_TRACE' => 1, - '_AM_PROG_TAR' => 1, - 'LT_SYS_DLSEARCH_PATH' => 1, - 'LTDL_CONVENIENCE' => 1, - 'AC_LIBTOOL_PROG_CC_C_O' => 1, - 'AC_ENABLE_STATIC' => 1, - 'LT_INIT' => 1, - 'm4_pattern_forbid' => 1, - 'AC_LTDL_SYSSEARCHPATH' => 1, - 'LT_AC_PROG_SED' => 1, - '_LT_AC_SHELL_INIT' => 1 - } - ], 'Autom4te::Request' ), - bless( [ - '1', - 1, - [ - '/usr/share/autoconf' - ], - [ - '/usr/share/autoconf/autoconf/autoconf.m4f', - 'aclocal.m4', - 'configure.ac' - ], - { - 'AM_PROG_CC_C_O' => 1, - 'AM_PROG_F77_C_O' => 1, - 'LT_INIT' => 1, - 'AC_CONFIG_SUBDIRS' => 1, - 'm4_pattern_forbid' => 1, - 'LT_SUPPORTED_TAG' => 1, - 'AM_PROG_AR' => 1, - 'AC_CONFIG_HEADERS' => 1, - 'AC_PROG_LIBTOOL' => 1, - 'AM_GNU_GETTEXT_INTL_SUBDIR' => 1, - 'AM_SILENT_RULES' => 1, - '_m4_warn' => 1, - 'AC_INIT' => 1, - 'AC_CANONICAL_SYSTEM' => 1, - 'AM_AUTOMAKE_VERSION' => 1, - 'AM_NLS' => 1, - 'AM_GNU_GETTEXT' => 1, - 'AC_FC_FREEFORM' => 1, - '_AM_COND_ELSE' => 1, - 'AC_LIBSOURCE' => 1, - '_AM_COND_IF' => 1, - 'AC_DEFINE_TRACE_LITERAL' => 1, - 'AC_CONFIG_FILES' => 1, - 'AC_SUBST_TRACE' => 1, - 'm4_include' => 1, - 'AC_CANONICAL_HOST' => 1, - 'AC_FC_SRCEXT' => 1, - '_LT_AC_TAGCONFIG' => 1, - 'AC_FC_PP_DEFINE' => 1, - 'AM_PROG_MKDIR_P' => 1, - '_AM_SUBST_NOTMAKE' => 1, - 'AC_CONFIG_LIBOBJ_DIR' => 1, - 'sinclude' => 1, - 'AM_PROG_CXX_C_O' => 1, - 'AM_POT_TOOLS' => 1, - 'AM_CONDITIONAL' => 1, - 'AC_REQUIRE_AUX_FILE' => 1, - 'AM_PROG_FC_C_O' => 1, - 'AC_CONFIG_AUX_DIR' => 1, - '_AM_MAKEFILE_INCLUDE' => 1, - 'AC_CONFIG_LINKS' => 1, - 'm4_sinclude' => 1, - 'AC_SUBST' => 1, - 'AM_PATH_GUILE' => 1, - 'AC_CANONICAL_TARGET' => 1, - 'include' => 1, - '_AM_COND_ENDIF' => 1, - 'AH_OUTPUT' => 1, - 'AC_FC_PP_SRCEXT' => 1, - 'AC_CANONICAL_BUILD' => 1, - 'AM_ENABLE_MULTILIB' => 1, - 'AM_PROG_MOC' => 1, - 'AM_MAINTAINER_MODE' => 1, - 'AM_MAKEFILE_INCLUDE' => 1, - 'AM_INIT_AUTOMAKE' => 1, - 'AM_XGETTEXT_OPTION' => 1, - 'm4_pattern_allow' => 1, - 'LT_CONFIG_LTDL_DIR' => 1, - 'AM_EXTRA_RECURSIVE_TARGETS' => 1 - } - ], 'Autom4te::Request' ) - ); - diff -Nru ntfs-3g-2016.2.22AR.2/ChangeLog ntfs-3g-2017.3.23/ChangeLog --- ntfs-3g-2016.2.22AR.2/ChangeLog 2016-10-01 06:41:59.000000000 +0000 +++ ntfs-3g-2017.3.23/ChangeLog 2017-03-23 09:42:44.000000000 +0000 @@ -4,6 +4,3 @@ The changes and history may also be found on the source repository : http://sourceforge.net/p/ntfs-3g/ntfs-3g/ci/edge/tree/ - -The ChangeLog specific to the advanced version is available on - http://jp-andre.pagesperso-orange.fr/changelog.html diff -Nru ntfs-3g-2016.2.22AR.2/config.h.in ntfs-3g-2017.3.23/config.h.in --- ntfs-3g-2016.2.22AR.2/config.h.in 2016-10-01 06:42:14.000000000 +0000 +++ ntfs-3g-2017.3.23/config.h.in 2017-03-23 09:42:57.000000000 +0000 @@ -431,6 +431,9 @@ /* Required define if using POSIX threads */ #undef _REENTRANT +/* Define to empty if `const' does not conform to ANSI C. */ +#undef const + /* Define to `__inline__' or `__inline' if that's what the C compiler calls it, or to nothing if 'inline' is not supported under any name. */ #ifndef __cplusplus diff -Nru ntfs-3g-2016.2.22AR.2/configure ntfs-3g-2017.3.23/configure --- ntfs-3g-2016.2.22AR.2/configure 2016-10-01 06:42:17.000000000 +0000 +++ ntfs-3g-2017.3.23/configure 2017-03-23 09:42:56.000000000 +0000 @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for ntfs-3g 2016.2.22AR.2. +# Generated by GNU Autoconf 2.69 for ntfs-3g 2017.3.23. # # Report bugs to . # @@ -590,8 +590,8 @@ # Identity of this package. PACKAGE_NAME='ntfs-3g' PACKAGE_TARNAME='ntfs-3g' -PACKAGE_VERSION='2016.2.22AR.2' -PACKAGE_STRING='ntfs-3g 2016.2.22AR.2' +PACKAGE_VERSION='2017.3.23' +PACKAGE_STRING='ntfs-3g 2017.3.23' PACKAGE_BUGREPORT='ntfs-3g-devel@lists.sf.net' PACKAGE_URL='' @@ -1409,7 +1409,7 @@ # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures ntfs-3g 2016.2.22AR.2 to adapt to many kinds of systems. +\`configure' configures ntfs-3g 2017.3.23 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1480,7 +1480,7 @@ if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of ntfs-3g 2016.2.22AR.2:";; + short | recursive ) echo "Configuration of ntfs-3g 2017.3.23:";; esac cat <<\_ACEOF @@ -1639,7 +1639,7 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -ntfs-3g configure 2016.2.22AR.2 +ntfs-3g configure 2017.3.23 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -2119,7 +2119,7 @@ This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by ntfs-3g $as_me 2016.2.22AR.2, which was +It was created by ntfs-3g $as_me 2017.3.23, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -2468,7 +2468,7 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu -LIBNTFS_3G_VERSION="872" +LIBNTFS_3G_VERSION="88" # Environment @@ -3098,8 +3098,9 @@ # Define the identity of the package. - PACKAGE='ntfs-3g' - VERSION='2016.2.22AR.2' + + PACKAGE=${PACKAGE_NAME} + VERSION=${PACKAGE_VERSION} cat >>confdefs.h <<_ACEOF @@ -14173,7 +14174,87 @@ presetting ac_cv_c_bigendian=no (or yes) will help" "$LINENO" 5 ;; esac -# AC_C_CONST +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for an ANSI C-conforming const" >&5 +$as_echo_n "checking for an ANSI C-conforming const... " >&6; } +if ${ac_cv_c_const+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + +#ifndef __cplusplus + /* Ultrix mips cc rejects this sort of thing. */ + typedef int charset[2]; + const charset cs = { 0, 0 }; + /* SunOS 4.1.1 cc rejects this. */ + char const *const *pcpcc; + char **ppc; + /* NEC SVR4.0.2 mips cc rejects this. */ + struct point {int x, y;}; + static struct point const zero = {0,0}; + /* AIX XL C 1.02.0.0 rejects this. + It does not let you subtract one const X* pointer from another in + an arm of an if-expression whose if-part is not a constant + expression */ + const char *g = "string"; + pcpcc = &g + (g ? g-g : 0); + /* HPUX 7.0 cc rejects these. */ + ++pcpcc; + ppc = (char**) pcpcc; + pcpcc = (char const *const *) ppc; + { /* SCO 3.2v4 cc rejects this sort of thing. */ + char tx; + char *t = &tx; + char const *s = 0 ? (char *) 0 : (char const *) 0; + + *t++ = 0; + if (s) return 0; + } + { /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */ + int x[] = {25, 17}; + const int *foo = &x[0]; + ++foo; + } + { /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */ + typedef const int *iptr; + iptr p = 0; + ++p; + } + { /* AIX XL C 1.02.0.0 rejects this sort of thing, saying + "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */ + struct s { int j; const int *ap[3]; } bx; + struct s *b = &bx; b->j = 5; + } + { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ + const int foo = 10; + if (!foo) return 0; + } + return !cs[0] && !zero.x; +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_c_const=yes +else + ac_cv_c_const=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_const" >&5 +$as_echo "$ac_cv_c_const" >&6; } +if test $ac_cv_c_const = no; then + +$as_echo "#define const /**/" >>confdefs.h + +fi + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for inline" >&5 $as_echo_n "checking for inline... " >&6; } if ${ac_cv_c_inline+:} false; then : @@ -15839,7 +15920,7 @@ # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by ntfs-3g $as_me 2016.2.22AR.2, which was +This file was extended by ntfs-3g $as_me 2017.3.23, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -15905,7 +15986,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -ntfs-3g config.status 2016.2.22AR.2 +ntfs-3g config.status 2017.3.23 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" @@ -17044,7 +17125,7 @@ cfgfile="${ofile}T" trap "$RM \"$cfgfile\"; exit 1" 1 2 15 - $RM -f "$cfgfile" + $RM "$cfgfile" cat <<_LT_EOF >> "$cfgfile" #! $SHELL diff -Nru ntfs-3g-2016.2.22AR.2/configure.ac ntfs-3g-2017.3.23/configure.ac --- ntfs-3g-2016.2.22AR.2/configure.ac 2016-10-01 06:42:01.000000000 +0000 +++ ntfs-3g-2017.3.23/configure.ac 2017-03-23 09:42:44.000000000 +0000 @@ -24,8 +24,8 @@ # Autoconf AC_PREREQ(2.59) -AC_INIT([ntfs-3g],[2016.2.22AR.2],[ntfs-3g-devel@lists.sf.net]) -LIBNTFS_3G_VERSION="872" +AC_INIT([ntfs-3g],[2017.3.23],[ntfs-3g-devel@lists.sf.net]) +LIBNTFS_3G_VERSION="88" AC_CONFIG_SRCDIR([src/ntfs-3g.c]) # Environment @@ -33,7 +33,7 @@ AC_CANONICAL_TARGET # Automake -AM_INIT_AUTOMAKE() +AM_INIT_AUTOMAKE([${PACKAGE_NAME}], [${PACKAGE_VERSION}]) AC_CONFIG_HEADERS([config.h]) AC_CONFIG_MACRO_DIR([m4]) AM_MAINTAINER_MODE @@ -497,7 +497,7 @@ ] , ) -# AC_C_CONST +AC_C_CONST AC_C_INLINE AC_TYPE_OFF_T AC_TYPE_SIZE_T diff -Nru ntfs-3g-2016.2.22AR.2/debian/changelog ntfs-3g-2017.3.23/debian/changelog --- ntfs-3g-2016.2.22AR.2/debian/changelog 2017-06-22 19:12:30.000000000 +0000 +++ ntfs-3g-2017.3.23/debian/changelog 2017-11-30 19:38:35.000000000 +0000 @@ -1,3 +1,27 @@ +ntfs-3g (1:2017.3.23-2) unstable; urgency=medium + + * Start the transition with upload to Sid. + + -- Laszlo Boszormenyi (GCS) Thu, 30 Nov 2017 19:38:35 +0000 + +ntfs-3g (1:2017.3.23-1) experimental; urgency=medium + + * Library transition from libntfs-3g873 to libntfs-3g88 . + * Update Standards-Version to 4.1.1: + - change ntfs-3g-dbg priority to optional. + + -- Laszlo Boszormenyi (GCS) Sat, 25 Nov 2017 22:37:45 +0000 + +ntfs-3g (1:2016.2.22AR.3-1) experimental; urgency=low + + * New upstream release (closes: #873566). + * Library transition from libntfs-3g872 to libntfs-3g873 . + * Use -noawait trigger for ntfs-3g . + * Remove dh-autoreconf build dependency. + * Update Standards-Version to 4.0.0 and debhelper level to 10 . + + -- Laszlo Boszormenyi (GCS) Tue, 29 Aug 2017 15:55:03 +0000 + ntfs-3g (1:2016.2.22AR.2-2) unstable; urgency=medium * Start the transition with upload to Sid. diff -Nru ntfs-3g-2016.2.22AR.2/debian/compat ntfs-3g-2017.3.23/debian/compat --- ntfs-3g-2016.2.22AR.2/debian/compat 2014-04-25 18:44:28.000000000 +0000 +++ ntfs-3g-2017.3.23/debian/compat 2017-08-29 15:55:03.000000000 +0000 @@ -1 +1 @@ -9 +10 diff -Nru ntfs-3g-2016.2.22AR.2/debian/control ntfs-3g-2017.3.23/debian/control --- ntfs-3g-2016.2.22AR.2/debian/control 2016-11-26 18:16:45.000000000 +0000 +++ ntfs-3g-2017.3.23/debian/control 2017-11-25 22:37:45.000000000 +0000 @@ -3,15 +3,14 @@ Priority: optional Maintainer: Laszlo Boszormenyi (GCS) Build-Depends: - debhelper (>= 9), - dh-autoreconf, + debhelper (>= 10), chrpath, libfuse-dev (>= 2.9.3-16), libgcrypt20-dev, libgpg-error-dev, libgnutls28-dev, pkg-config, -Standards-Version: 3.9.8 +Standards-Version: 4.1.1 Homepage: http://www.tuxera.com/community/ntfs-3g-advanced/ #Vcs-Browser: http://daniel-baumann.ch/gitweb/?p=debian/packages/ntfs-3g.git #Vcs-Git: git://daniel-baumann.ch/git/debian/packages/ntfs-3g.git @@ -26,7 +25,7 @@ Depends: ${misc:Depends}, ${shlibs:Depends}, - libntfs-3g872 (= ${binary:Version}) + libntfs-3g88 (= ${binary:Version}) #Provides: ${ntfs-3g:Provides} Description: read/write NTFS driver for FUSE NTFS-3G uses FUSE (Filesystem in Userspace) to provide support for the NTFS @@ -34,7 +33,6 @@ Package: ntfs-3g-dbg Section: debug -Priority: extra Architecture: linux-any kfreebsd-any Depends: ${misc:Depends}, @@ -52,7 +50,7 @@ Depends: ${misc:Depends}, ${shlibs:Depends}, - libntfs-3g872 (= ${binary:Version}), + libntfs-3g88 (= ${binary:Version}), ntfs-3g (= ${binary:Version}) Breaks: ntfs-3g (<< 1:2014.2.15AR.1-2~) Description: read/write NTFS driver for FUSE (development) @@ -61,7 +59,7 @@ . This package contains the development files. -Package: libntfs-3g872 +Package: libntfs-3g88 Section: libs Architecture: linux-any kfreebsd-any Depends: ${misc:Depends}, diff -Nru ntfs-3g-2016.2.22AR.2/debian/libntfs-3g872.install ntfs-3g-2017.3.23/debian/libntfs-3g872.install --- ntfs-3g-2016.2.22AR.2/debian/libntfs-3g872.install 2015-10-24 07:41:03.000000000 +0000 +++ ntfs-3g-2017.3.23/debian/libntfs-3g872.install 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -lib/*/*.so.* diff -Nru ntfs-3g-2016.2.22AR.2/debian/libntfs-3g88.install ntfs-3g-2017.3.23/debian/libntfs-3g88.install --- ntfs-3g-2016.2.22AR.2/debian/libntfs-3g88.install 1970-01-01 00:00:00.000000000 +0000 +++ ntfs-3g-2017.3.23/debian/libntfs-3g88.install 2015-10-24 07:41:03.000000000 +0000 @@ -0,0 +1 @@ +lib/*/*.so.* diff -Nru ntfs-3g-2016.2.22AR.2/debian/ntfs-3g.triggers ntfs-3g-2017.3.23/debian/ntfs-3g.triggers --- ntfs-3g-2016.2.22AR.2/debian/ntfs-3g.triggers 2014-04-25 18:44:28.000000000 +0000 +++ ntfs-3g-2017.3.23/debian/ntfs-3g.triggers 2017-08-29 15:55:03.000000000 +0000 @@ -1 +1 @@ -activate update-initramfs +activate-noawait update-initramfs diff -Nru ntfs-3g-2016.2.22AR.2/debian/ntfs-3g-udeb.lintian-overrides ntfs-3g-2017.3.23/debian/ntfs-3g-udeb.lintian-overrides --- ntfs-3g-2016.2.22AR.2/debian/ntfs-3g-udeb.lintian-overrides 2016-04-16 20:35:47.000000000 +0000 +++ ntfs-3g-2017.3.23/debian/ntfs-3g-udeb.lintian-overrides 2017-11-25 22:37:45.000000000 +0000 @@ -1 +1 @@ -udeb: package-name-doesnt-match-sonames libntfs-3g871 +udeb: package-name-doesnt-match-sonames libntfs-3g88 diff -Nru ntfs-3g-2016.2.22AR.2/fedora/ntfs-3g.spec ntfs-3g-2017.3.23/fedora/ntfs-3g.spec --- ntfs-3g-2016.2.22AR.2/fedora/ntfs-3g.spec 2016-10-01 06:42:17.000000000 +0000 +++ ntfs-3g-2017.3.23/fedora/ntfs-3g.spec 1970-01-01 00:00:00.000000000 +0000 @@ -1,581 +0,0 @@ -# Pass --with externalfuse to compile against system fuse lib -# Default is internal fuse-lite. -%define with_externalfuse %{?_with_externalfuse:1}%{!?_with_externalfuse:0} - -# For release candidates -# %%global subver -RC - -%global oldrhel 0 - -%if 0%{?rhel} -%if 0%{?rhel} < 7 -%global oldrhel 1 -%endif -%endif - -Name: ntfs-3g -Summary: Linux NTFS userspace driver -Version: 2016.2.22AR.2 -Release: 1.fc23 -License: GPLv2+ -Group: System Environment/Base -Source0: http://jp-andre.pagesperso-orange.fr/%{name}_ntfsprogs-%{version}%{?subver}.tgz -%if %{oldrhel} -Source1: 20-ntfs-config-write-policy.fdi -%endif -URL: http://jp-andre.pagesperso-orange.fr -%if %{with_externalfuse} -BuildRequires: fuse-devel -Requires: fuse -%endif -BuildRequires: libtool, libattr-devel -# ntfsprogs BuildRequires -BuildRequires: libconfig-devel, libuuid-devel -Epoch: 2 -Provides: ntfsprogs-fuse = %{epoch}:%{version}-%{release} -Obsoletes: ntfsprogs-fuse -Provides: fuse-ntfs-3g = %{epoch}:%{version}-%{release} - -%description -NTFS-3G is a stable, open source, GPL licensed, POSIX, read/write NTFS -driver for Linux and many other operating systems. It provides safe -handling of the Windows XP, Windows Server 2003, Windows 2000, Windows -Vista, Windows Server 2008 and Windows 7 NTFS file systems. NTFS-3G can -create, remove, rename, move files, directories, hard links, and streams; -it can read and write normal and transparently compressed files, including -streams and sparse files; it can handle special files like symbolic links, -devices, and FIFOs, ACL, extended attributes; moreover it provides full -file access right and ownership support. - -%package devel -Summary: Development files and libraries for ntfs-3g -Group: Development/Libraries -Requires: %{name} = %{epoch}:%{version}-%{release} -Requires: pkgconfig -Provides: ntfsprogs-devel = %{epoch}:%{version}-%{release} -# ntfsprogs-2.0.0-17 was never built. 2.0.0-16 was the last build for that -# standalone package. -Obsoletes: ntfsprogs-devel < 2.0.0-17 - -%description devel -Headers and libraries for developing applications that use ntfs-3g -functionality. - -%package -n ntfsprogs -Summary: NTFS filesystem libraries and utilities -Group: System Environment/Base -# We don't really provide this. This code is dead and buried now. -Provides: ntfsprogs-gnomevfs = %{epoch}:%{version}-%{release} -Obsoletes: ntfsprogs-gnomevfs -# Needed to fix multilib issue -# ntfsprogs-2.0.0-17 was never built. 2.0.0-16 was the last build for that -# standalone package. -Obsoletes: ntfsprogs < 2.0.0-17 - -%description -n ntfsprogs -The ntfsprogs package currently consists of a library and utilities such as -mkntfs, ntfscat, ntfsls, ntfsresize, and ntfsundelete (for a full list of -included utilities see man 8 ntfsprogs after installation). - -%prep -%setup -q -n %{name}_ntfsprogs-%{version}%{?subver} - -%build -CFLAGS="$RPM_OPT_FLAGS -D_FILE_OFFSET_BITS=64" -%configure \ - --disable-static \ - --disable-ldconfig \ -%if 0%{?_with_externalfuse:1} - --with-fuse=external \ -%endif - --exec-prefix=/ \ -%if %{oldrhel} - --bindir=/bin \ - --sbindir=/sbin \ - --libdir=/%{_lib} \ -%endif - --enable-crypto \ - --enable-extras -make %{?_smp_mflags} LIBTOOL=%{_bindir}/libtool - -%install -make LIBTOOL=%{_bindir}/libtool DESTDIR=%{buildroot} install -%if %{oldrhel} -rm -rf %{buildroot}/%{_lib}/*.la -rm -rf %{buildroot}/%{_lib}/*.a -%else -rm -rf %{buildroot}%{_libdir}/*.la -rm -rf %{buildroot}%{_libdir}/*.a -%endif - -%if %{oldrhel} -rm -rf %{buildroot}/sbin/mount.ntfs-3g -cp -a %{buildroot}/bin/ntfs-3g %{buildroot}/sbin/mount.ntfs-3g -%else -rm -rf %{buildroot}/%{_sbindir}/mount.ntfs-3g -cp -a %{buildroot}/%{_bindir}/ntfs-3g %{buildroot}/%{_sbindir}/mount.ntfs-3g -%endif - -# Actually make some symlinks for simplicity... -# ... since we're obsoleting ntfsprogs-fuse -%if %{oldrhel} -pushd %{buildroot}/bin -ln -s ntfs-3g ntfsmount -popd -pushd %{buildroot}/sbin -%else -pushd %{buildroot}/%{_bindir} -ln -s ntfs-3g ntfsmount -popd -pushd %{buildroot}/%{_sbindir} -%endif -ln -s mount.ntfs-3g mount.ntfs-fuse -# And since there is no other package in Fedora that provides an ntfs -# mount... -ln -s mount.ntfs-3g mount.ntfs -popd - -%if %{oldrhel} -# Compat symlinks -mkdir -p %{buildroot}%{_bindir} -pushd %{buildroot}%{_bindir} -ln -s /bin/ntfs-3g ntfs-3g -ln -s /bin/ntfsmount ntfsmount -popd - -# Put the .pc file in the right place. -mkdir -p %{buildroot}%{_libdir}/pkgconfig/ -mv %{buildroot}/%{_lib}/pkgconfig/libntfs-3g.pc %{buildroot}%{_libdir}/pkgconfig/ -%else -mv %{buildroot}/sbin/* %{buildroot}/%{_sbindir} -rmdir %{buildroot}/sbin -%endif - -# We get this on our own, thanks. -rm -rf %{buildroot}%{_defaultdocdir}/%{name}/README - -%if %{oldrhel} -mkdir -p %{buildroot}%{_datadir}/hal/fdi/policy/10osvendor/ -cp -a %{SOURCE1} %{buildroot}%{_datadir}/hal/fdi/policy/10osvendor/ -%endif - -%post -p /sbin/ldconfig -%postun -p /sbin/ldconfig - -%files -%doc AUTHORS ChangeLog COPYING COPYING.LIB CREDITS NEWS README -%if %{oldrhel} -/sbin/mount.ntfs -/sbin/mount.ntfs-3g -/sbin/mount.ntfs-fuse -/sbin/mount.lowntfs-3g -/bin/ntfs-3g -/bin/ntfsmount -#compat symlinks -%else -%{_sbindir}/mount.ntfs -%{_sbindir}/mount.ntfs-3g -%{_sbindir}/mount.ntfs-fuse -%{_sbindir}/mount.lowntfs-3g -%endif -%if %{oldrhel} -/bin/ntfs-3g.probe -/bin/lowntfs-3g -%else -%{_bindir}/ntfs-3g.probe -%{_bindir}/lowntfs-3g -%{_bindir}/ntfs-3g -%{_bindir}/ntfsmount -%endif -%if %{oldrhel} -/%{_lib}/libntfs-3g.so.* -/%{_lib}/ntfs-3g -%else -%{_libdir}/libntfs-3g.so.* -%{_libdir}/ntfs-3g -%endif -%{_mandir}/man8/mount.lowntfs-3g.* -%{_mandir}/man8/mount.ntfs-3g.* -%{_mandir}/man8/ntfs-3g* -%if %{oldrhel} -%{_datadir}/hal/fdi/policy/10osvendor/20-ntfs-config-write-policy.fdi -%endif - -%files devel -%{_includedir}/ntfs-3g/ -%if %{oldrhel} -/%{_lib}/libntfs-3g.so -%else -%{_libdir}/libntfs-3g.so -%endif -%{_libdir}/pkgconfig/libntfs-3g.pc - -%files -n ntfsprogs -%doc AUTHORS COPYING COPYING.LIB CREDITS ChangeLog NEWS README -%if %{oldrhel} -/bin/ntfscat -/bin/ntfscluster -/bin/ntfscmp -/bin/ntfsfix -/bin/ntfsinfo -/bin/ntfsls -%else -%{_bindir}/ntfscat -%{_bindir}/ntfscluster -%{_bindir}/ntfscmp -%{_bindir}/ntfsfix -%{_bindir}/ntfsinfo -%{_bindir}/ntfsls -%endif -%if %{oldrhel} -/bin/ntfsdecrypt -/bin/ntfstruncate -/bin/ntfswipe -/sbin/fsck.ntfs -/sbin/mkfs.ntfs -/sbin/mkntfs -/sbin/ntfsclone -/sbin/ntfscp -/sbin/ntfslabel -/sbin/ntfsresize -/sbin/ntfsundelete -%else -%{_bindir}/ntfsdecrypt -%{_bindir}/ntfsrecover -%{_bindir}/ntfssecaudit -%{_bindir}/ntfstruncate -%{_bindir}/ntfsusermap -%{_bindir}/ntfswipe -%{_sbindir}/mkfs.ntfs -%{_sbindir}/mkntfs -%{_sbindir}/ntfsclone -%{_sbindir}/ntfscp -%{_sbindir}/ntfslabel -%{_sbindir}/ntfsresize -%{_sbindir}/ntfsundelete -%endif -%{_mandir}/man8/mkntfs.8* -%{_mandir}/man8/mkfs.ntfs.8* -%{_mandir}/man8/ntfs[^m][^o]*.8* -%exclude %{_mandir}/man8/ntfs-3g* - -%changelog -* Sat Oct 1 2016 Jean-Pierre Andre 2016.2.22AR.2 -- adapted to advanced ntfs-3g and basic ntfsprogs - -* Wed Jun 17 2015 Fedora Release Engineering - 2:2015.3.14-3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild - -* Fri May 22 2015 Tom Callaway 2:2015.3.14-2 -- fix CVE-2015-3202 - -* Tue Apr 7 2015 Tom Callaway 2:2015.3.14-1 -- update to 2015.3.14 - -* Sat Feb 21 2015 Till Maas - 2:2014.2.15-8 -- Rebuilt for Fedora 23 Change - https://fedoraproject.org/wiki/Changes/Harden_all_packages_with_position-independent_code - -* Tue Jan 13 2015 Tom Callaway - 2:2014.2.15-7 -- add patch to ignore -s option - -* Sun Aug 17 2014 Fedora Release Engineering - 2:2014.2.15-6 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild - -* Tue Aug 5 2014 Richard W.M. Jones - 2:2014.2.15-5 -- Add upstream patch to fix fstrim so it works on partitions as well - as whole disks. - -* Thu Jul 31 2014 Richard W.M. Jones - 2:2014.2.15-4 -- Upstream patches which add fstrim support. - -* Sat Jun 07 2014 Fedora Release Engineering - 2:2014.2.15-3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild - -* Thu Apr 24 2014 Tomáš Mráz - 2:2014.2.15-2 -- Rebuild for new libgcrypt - -* Wed Feb 26 2014 Tom Callaway 2:2014.2.15-1 -- update to 2014.2.15 - -* Sat Aug 03 2013 Fedora Release Engineering - 2:2013.1.13-6 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild - -* Tue May 28 2013 Tom Callaway - 2:2013.1.13-5 -- fix bug preventing reads on compressed files on windows 8 partitions (bz967301) - -* Mon May 6 2013 Tom Callaway - 2:2013.1.13-4 -- apply fixes from upstream for issue with 4K sector drives (bz951603) - and truncated check for Interix types on a 32-bit CPU (bz958681) - -* Thu Feb 7 2013 Tom Callaway - 2:2013.1.13-3 -- drop redundant manpages from ntfsprogs subpackage - -* Thu Jan 31 2013 Tom Callaway - 2:2013.1.13-2 -- drop hal files, since hal is very dead - -* Tue Jan 22 2013 Richard W.M. Jones - 2:2013.1.13-1 -- New upstream version 2013.1.13 (RHBZ#902729). -- Drop ntfs-3g-junction-point-fix.patch (now upstream). -- Drop Windows 8 patches x 2 (both now upstream). -- Remove obsolete patches from Fedora git repository. -- Fix .gitignore file. - -* Mon Oct 15 2012 Tom Callaway - 2:2012.1.15-5 -- Limit obsoletes to last ntfsprogs-* versions ( < 2.0.0-17 ) to - minimize yum churn (where it would obsolete itself on every upgrade) - BZ#863641 - -* Thu Oct 4 2012 Tom Callaway - 2:2012.1.15-4 -- add patches from upstream git to add a level of safety in the case where windows 8 - leaves the NTFS filesystem in an unsafe state and Linux access could result in data loss. - Basically, with these patches, Linux will refuse to mount the ntfs partition. For the details - refer to: https://bugzilla.redhat.com/show_bug.cgi?id=859373 - -* Sun Aug 19 2012 Tom Callaway - 2:2012.1.15-3 -- apply upstream fix for junction points (bz849332) - -* Fri Jul 20 2012 Fedora Release Engineering - 2:2012.1.15-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild - -* Fri Feb 10 2012 Tom Callaway 2:2012.1.15-1 -- update to 2012.1.15 - -* Wed Feb 1 2012 Kay Sievers 2:2011.10.9-3 -- install everything in /usr - https://fedoraproject.org/wiki/Features/UsrMove - -* Fri Jan 13 2012 Fedora Release Engineering - 2:2011.10.9-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild - -* Tue Oct 11 2011 Tom Callaway - 2:2011.10.9-1 -- 2011.10.9-RC -- patch ntfsck to return 0 instead of 1 on unsupported filesystem cases - -* Mon Sep 12 2011 Tom Callaway - 2:2011.4.12-5 -- fix ntfsck symlink (thanks to Chris Smart for catching it) - -* Wed Sep 7 2011 Tom Callaway - 2:2011.4.12-4 -- fix issue preventing some volume types from not working properly (bz735862) -- create fsck.ntfs symlink to ntfsck (bz735612). -- apply cleanups from git trunk for ntfsck (bz 706638) -- apply cleanups from git trunk for ntfsfix (bz 711662, 723562) - -* Mon May 9 2011 Tom Callaway - 2:2011.4.12-3 -- add Obsoletes to resolve multi-lib upgrade issue (bz702671) - -* Mon Apr 25 2011 Tom Callaway - 2:2011.4.12-2 -- add --enable-extras flag (and use it) to ensure proper binary installation - -* Thu Apr 14 2011 Tom Callaway - 2:2011.4.12-1 -- update to 2011.4.12 -- pickup ntfsprogs and obsolete the old separate packages - -* Tue Feb 08 2011 Fedora Release Engineering - 2:2011.1.15-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild - -* Tue Jan 25 2011 Tom Callaway - 2:2011.1.15-1 -- update to 2011.1.15 - -* Mon Oct 11 2010 Tom "spot" Callaway - 2:2010.10.2-1 -- update to 2010.10.2, all patches merged upstream - -* Thu Sep 9 2010 Tom "spot" Callaway - 2:2010.8.8-2 -- add support for context= mount option (Till Maas) (bz502946) - -* Mon Aug 9 2010 Tom "spot" Callaway - 2:2010.8.8-1 -- update to 2010.8.8 - -* Fri Jul 9 2010 Tom "spot" Callaway - 2:2010.6.31-1 -- update to 2010.6.31-RC - -* Fri Jul 9 2010 Tom "spot" Callaway - 2:2010.5.22-1 -- update to 2010.5.22 - -* Tue May 18 2010 Tom "spot" Callaway - 2:2010.5.16-1 -- update to 2010.5.16 -- fix makefile to build secaudit/usermap tools - -* Mon Mar 8 2010 Tom "spot" Callaway - 2:2010.3.6-1 -- update to 2010.3.6 - -* Mon Feb 15 2010 Tom "spot" Callaway - 2:2010.2.6-1 -- update to 2010.2.6-RC -- fix summary text - -* Wed Jan 20 2010 Tom "spot" Callaway - 2:2010.1.16-1 -- update to 2010.1.16 - -* Fri Nov 20 2009 Tom "spot" Callaway - 2:2009.11.14-2 -- missing BuildRequires: libattr-devel - -* Fri Nov 20 2009 Tom "spot" Callaway - 2:2009.11.14-1 -- update to 2009.11.14 - -* Fri Oct 30 2009 Tom "spot" Callaway - 2:2009.10.5-0.1.RC -- bump to 2009.10.5-RC - -* Thu Sep 17 2009 Peter Lemenkov - 2:2009.4.4-3 -- Rebuilt with new fuse - -* Sat Jul 25 2009 Fedora Release Engineering - 2:2009.4.4-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild - -* Fri Apr 3 2009 Tom "spot" Callaway - 2:2009.4.4-1 -- update to 4.4, patch for mount issue merged - -* Mon Mar 30 2009 Tom "spot" Callaway - 2:2009.3.8-2 -- Patch from upstream provided as temporary workaround for bz 486619 - -* Thu Mar 26 2009 Tom "spot" Callaway - 2:2009.3.8-1 -- update to 2009.3.8 - -* Wed Feb 25 2009 Fedora Release Engineering - 2:2009.2.1-3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild - -* Mon Feb 16 2009 Tom "spot" Callaway - 2:2009.2.1-2 -- update fdi to fix nautilus mount bug - -* Thu Feb 12 2009 Tom "spot" Callaway - 2:2009.2.1-1 -- update to 2009.2.1 - -* Fri Jan 30 2009 Tom "spot" Callaway - 2:2009.1.1-1 -- new release, new versioning scheme from upstream - -* Thu Jan 8 2009 Tom "spot" Callaway - 2:1.5222-0.2.RC -- move pkgconfig Requires to -devel package where it belongs - -* Mon Dec 22 2008 Tom "spot" Callaway - 2:1.5222-0.1.RC -- 1.5222-RC - -* Tue Dec 2 2008 Tom "spot" Callaway - 2:1.5130-1 -- update to 1.5130 - -* Wed Oct 29 2008 Tom "spot" Callaway - 2:1.5012-4 -- fix hal file to properly ignore internal recovery partitions - -* Wed Oct 29 2008 Tom "spot" Callaway - 2:1.5012-3 -- fix hal file to cover all mount cases (thanks to Richard Hughes) - -* Mon Oct 20 2008 Tom "spot" Callaway - 2:1.5012-2 -- add fdi file to enable hal automounting - -* Wed Oct 15 2008 Tom "spot" Callaway - 2:1.5012-1 -- update to 1.5012 (same code as 1.2926-RC) - -* Mon Sep 22 2008 Tom "spot" Callaway - 2:1.2926-0.1.RC -- update to 1.2926-RC (rawhide, F10) - -* Fri Aug 22 2008 Tom "spot" Callaway - 2:1.2812-1 -- update to 1.2812 - -* Sat Jul 12 2008 Tom "spot" Callaway - 2:1.2712-1 -- update to 1.2712 - -* Mon May 5 2008 Tom "spot" Callaway - 2:1.2506-1 -- update to 1.2506 - -* Tue Apr 22 2008 Tom "spot" Callaway - 2:1.2412-1 -- update to 1.2412 - -* Mon Mar 10 2008 Tom "spot" Callaway - 2:1.2310-2 -- update sources - -* Mon Mar 10 2008 Tom "spot" Callaway - 2:1.2310-1 -- update to 1.2310 -- make -n a noop (bz 403291) - -* Tue Feb 26 2008 Tom "spot" Callaway - 2:1.2216-3 -- rebuild against fixed gcc (PR35264, bugzilla 433546) - -* Tue Feb 19 2008 Fedora Release Engineering - 2:1.2216-2 -- Autorebuild for GCC 4.3 - -* Mon Feb 18 2008 Tom "spot" Callaway 2:1.2216-1 -- update to 1.2216 - -* Tue Nov 20 2007 Tom "spot" Callaway 2:1.1120-1 -- bump to 1.1120 -- default to fuse-lite (internal to ntfs-3g), but enable --with externalfuse - as an option - -* Thu Nov 8 2007 Tom "spot" Callaway 2:1.1104-1 -- bump to 1.1104 - -* Mon Oct 29 2007 Tom "spot" Callaway 2:1.1030-1 -- bump to 1.1030 - -* Sat Oct 6 2007 Tom "spot" Callaway 2:1.1004-1 -- bump to 1.1004 - -* Thu Sep 20 2007 Tom "spot" Callaway 2:1.913-2 -- don't set /sbin/mount.ntfs-3g setuid - -* Mon Sep 17 2007 Tom "spot" Callaway 2:1.913-1 -- bump to 1.913 - -* Sun Aug 26 2007 Tom "spot" Callaway 2:1.826-1 -- bump to 1.826 -- glibc27 patch is upstreamed - -* Fri Aug 24 2007 Tom "spot" Callaway 2:1.810-1 -- bump to 1.810 -- fix license tag -- rebuild for ppc32 - -* Sun Jul 22 2007 Tom "spot" Callaway 2:1.710-1 -- bump to 1.710 -- add compat symlinks - -* Wed Jun 27 2007 Tom "spot" Callaway 2:1.616-1 -- bump to 1.616 - -* Tue May 15 2007 Tom "spot" Callaway 2:1.516-1 -- bump to 1.516 -- fix bugzilla 232031 - -* Sun Apr 15 2007 Tom "spot" Callaway 2:1.417-1 -- bump to 1.417 - -* Sun Apr 15 2007 Tom "spot" Callaway 2:1.416-1 -- bump to 1.416 -- drop patch0, upstreamed - -* Wed Apr 4 2007 Tom "spot" Callaway 2:1.328-2 -- allow non-root users to mount/umount ntfs volumes (Laszlo Dvornik) - -* Sat Mar 31 2007 Tom "spot" Callaway 2:1.328-1 -- bump to 1.328 -- drop patch, use --disable-ldconfig instead - -* Wed Feb 21 2007 Tom "spot" Callaway 2:1.0-1 -- 1.0 release! - -* Fri Jan 19 2007 Tom "spot" Callaway 2:0-0.9.20070118 -- symlink to mount.ntfs - -* Wed Jan 17 2007 Tom "spot" Callaway 2:0-0.8.20070118 -- bump to 20070118 - -* Wed Jan 17 2007 Tom "spot" Callaway 2:0-0.7.20070116 -- bump to latest version for all active dists - -* Wed Jan 3 2007 Tom "spot" Callaway 1:0-0.6.20070102 -- bump to latest version (note that upstream fixed their date mistake) - -* Wed Nov 1 2006 Tom "spot" Callaway 1:0-0.5.20070920 -- add an obsoletes for ntfsprogs-fuse -- make some convenience symlinks - -* Wed Oct 25 2006 Tom "spot" Callaway 1:0-0.4.20070920 -- add some extra Provides - -* Mon Oct 16 2006 Tom "spot" Callaway 1:0-0.3.20070920 -- add explicit Requires on fuse - -* Mon Oct 16 2006 Tom "spot" Callaway 1:0-0.2.20070920 -- fixed versioning (bumped epoch, since it now shows as older) -- change sbin symlink to actual copy to be safe - -* Sun Oct 15 2006 Tom "spot" Callaway 0.1.20070920-1 -- Initial package for Fedora Extras diff -Nru ntfs-3g-2016.2.22AR.2/include/ntfs-3g/debug.h ntfs-3g-2017.3.23/include/ntfs-3g/debug.h --- ntfs-3g-2016.2.22AR.2/include/ntfs-3g/debug.h 2016-10-01 06:42:00.000000000 +0000 +++ ntfs-3g-2017.3.23/include/ntfs-3g/debug.h 2017-03-23 09:42:44.000000000 +0000 @@ -36,4 +36,12 @@ static __inline__ void ntfs_debug_runlist_dump(const struct _runlist_element *rl __attribute__((unused))) {} #endif +#define NTFS_BUG(msg) \ +{ \ + int ___i = 1; \ + ntfs_log_critical("Bug in %s(): %s\n", __FUNCTION__, msg); \ + ntfs_log_debug("Forcing segmentation fault!"); \ + ___i = ((int*)NULL)[___i]; \ +} + #endif /* defined _NTFS_DEBUG_H */ diff -Nru ntfs-3g-2016.2.22AR.2/include/ntfs-3g/layout.h ntfs-3g-2017.3.23/include/ntfs-3g/layout.h --- ntfs-3g-2016.2.22AR.2/include/ntfs-3g/layout.h 2016-10-01 06:42:00.000000000 +0000 +++ ntfs-3g-2017.3.23/include/ntfs-3g/layout.h 2017-03-23 09:42:44.000000000 +0000 @@ -1068,12 +1068,17 @@ FILE_NAME_WIN32 = 0x01, /* The standard WinNT/2k NTFS long filenames. Case insensitive. All Unicode chars except: '\0', '"', '*', '/', ':', '<', - '>', '?', '\' and '|'. Further, names cannot end with a '.' - or a space. */ + '>', '?', '\' and '|'. Trailing dots and spaces are allowed, + even though on Windows a filename with such a suffix can only + be created and accessed using a WinNT-style path, i.e. + \\?\-prefixed. (If a regular path is used, Windows will + strip the trailing dots and spaces, which makes such + filenames incompatible with most Windows software.) */ FILE_NAME_DOS = 0x02, /* The standard DOS filenames (8.3 format). Uppercase only. All 8-bit characters greater space, except: '"', '*', '+', - ',', '/', ':', ';', '<', '=', '>', '?' and '\'. */ + ',', '/', ':', ';', '<', '=', '>', '?' and '\'. Trailing + dots and spaces are forbidden. */ FILE_NAME_WIN32_AND_DOS = 0x03, /* 3 means that both the Win32 and the DOS filenames are identical and hence have been saved in this single filename diff -Nru ntfs-3g-2016.2.22AR.2/include/ntfs-3g/unistr.h ntfs-3g-2017.3.23/include/ntfs-3g/unistr.h --- ntfs-3g-2016.2.22AR.2/include/ntfs-3g/unistr.h 2016-10-01 06:42:00.000000000 +0000 +++ ntfs-3g-2017.3.23/include/ntfs-3g/unistr.h 2017-03-23 09:42:44.000000000 +0000 @@ -50,6 +50,9 @@ extern void ntfs_name_locase(ntfschar *name, u32 name_len, const ntfschar *locase, const u32 locase_len); +extern void ntfs_file_value_upcase(FILE_NAME_ATTR *file_name_attr, + const ntfschar *upcase, const u32 upcase_len); + extern int ntfs_ucstombs(const ntfschar *ins, const int ins_len, char **outs, int outs_len); extern int ntfs_mbstoucs(const char *ins, ntfschar **outs); @@ -65,9 +68,9 @@ extern void ntfs_ucsfree(ntfschar *ucs); -extern BOOL ntfs_forbidden_chars(const ntfschar *name, int len); +extern BOOL ntfs_forbidden_chars(const ntfschar *name, int len, BOOL strict); extern BOOL ntfs_forbidden_names(ntfs_volume *vol, - const ntfschar *name, int len); + const ntfschar *name, int len, BOOL strict); extern BOOL ntfs_collapsible_chars(ntfs_volume *vol, const ntfschar *shortname, int shortlen, const ntfschar *longname, int longlen); diff -Nru ntfs-3g-2016.2.22AR.2/libntfs-3g/attrib.c ntfs-3g-2017.3.23/libntfs-3g/attrib.c --- ntfs-3g-2016.2.22AR.2/libntfs-3g/attrib.c 2016-10-01 06:42:00.000000000 +0000 +++ ntfs-3g-2017.3.23/libntfs-3g/attrib.c 2017-03-23 09:42:44.000000000 +0000 @@ -5142,6 +5142,10 @@ */ if (na->type==AT_STANDARD_INFORMATION || na->type==AT_ATTRIBUTE_LIST) { ntfs_attr_put_search_ctx(ctx); + if (!NInoAttrList(na->ni) && ntfs_inode_add_attrlist(na->ni)) { + ntfs_log_perror("Could not add attribute list"); + return -1; + } if (ntfs_inode_free_space(na->ni, offsetof(ATTR_RECORD, non_resident_end) + 8)) { ntfs_log_perror("Could not free space in MFT record"); diff -Nru ntfs-3g-2016.2.22AR.2/libntfs-3g/dir.c ntfs-3g-2017.3.23/libntfs-3g/dir.c --- ntfs-3g-2016.2.22AR.2/libntfs-3g/dir.c 2016-10-01 06:42:00.000000000 +0000 +++ ntfs-3g-2017.3.23/libntfs-3g/dir.c 2017-03-23 09:42:44.000000000 +0000 @@ -2654,9 +2654,12 @@ shortlen = ntfs_mbstoucs(newname, &shortname); if (shortlen > MAX_DOS_NAME_LENGTH) shortlen = MAX_DOS_NAME_LENGTH; - /* make sure the short name has valid chars */ + + /* Make sure the short name has valid chars. + * Note: the short name cannot end with dot or space, but the + * corresponding long name can. */ if ((shortlen < 0) - || ntfs_forbidden_names(ni->vol,shortname,shortlen)) { + || ntfs_forbidden_names(ni->vol,shortname,shortlen,TRUE)) { ntfs_inode_close_in_dir(ni,dir_ni); ntfs_inode_close(dir_ni); res = -errno; @@ -2667,7 +2670,8 @@ if (longlen > 0) { oldlen = get_dos_name(ni, dnum, oldname); if ((oldlen >= 0) - && !ntfs_forbidden_names(ni->vol, longname, longlen)) { + && !ntfs_forbidden_names(ni->vol, longname, longlen, + FALSE)) { if (oldlen > 0) { if (flags & XATTR_CREATE) { res = -1; diff -Nru ntfs-3g-2016.2.22AR.2/libntfs-3g/mft.c ntfs-3g-2017.3.23/libntfs-3g/mft.c --- ntfs-3g-2016.2.22AR.2/libntfs-3g/mft.c 2016-10-01 06:42:00.000000000 +0000 +++ ntfs-3g-2017.3.23/libntfs-3g/mft.c 2017-03-23 09:42:44.000000000 +0000 @@ -1276,10 +1276,8 @@ /* Sanity checks. */ if (mft_na->data_size > mft_na->allocated_size || - mft_na->initialized_size > mft_na->data_size) { - ntfs_log_critical("mft_na sanity checks failed"); - goto undo_data_init; - } + mft_na->initialized_size > mft_na->data_size) + NTFS_BUG("mft_na sanity checks failed"); /* Sync MFT to minimize data loss if there won't be clean unmount. */ if (ntfs_inode_sync(mft_na->ni)) @@ -1345,10 +1343,8 @@ /* Sanity checks. */ if (mft_na->data_size > mft_na->allocated_size || - mft_na->initialized_size > mft_na->data_size) { - ntfs_log_critical("mft_na sanity checks failed"); - goto undo_data_init; - } + mft_na->initialized_size > mft_na->data_size) + NTFS_BUG("mft_na sanity checks failed"); out: ntfs_log_leave("\n"); return ret; diff -Nru ntfs-3g-2016.2.22AR.2/libntfs-3g/unistr.c ntfs-3g-2017.3.23/libntfs-3g/unistr.c --- ntfs-3g-2016.2.22AR.2/libntfs-3g/unistr.c 2016-10-01 06:42:00.000000000 +0000 +++ ntfs-3g-2017.3.23/libntfs-3g/unistr.c 2017-03-23 09:42:44.000000000 +0000 @@ -416,6 +416,23 @@ name[i] = locase[u]; } +/** + * ntfs_file_value_upcase - Convert a filename to upper case + * @file_name_attr: + * @upcase: + * @upcase_len: + * + * Description... + * + * Returns: + */ +void ntfs_file_value_upcase(FILE_NAME_ATTR *file_name_attr, + const ntfschar *upcase, const u32 upcase_len) +{ + ntfs_name_upcase((ntfschar*)&file_name_attr->file_name, + file_name_attr->file_name_length, upcase, upcase_len); +} + /* NTFS uses Unicode (UTF-16LE [NTFS-3G uses UCS-2LE, which is enough for now]) for path names, but the Unicode code points need to be @@ -1460,10 +1477,14 @@ * Check whether a name contains no chars forbidden * for DOS or Win32 use * + * If @strict is TRUE, then trailing dots and spaces are forbidden. + * These names are technically allowed in the Win32 namespace, but + * they can be problematic. See comment for FILE_NAME_WIN32. + * * If there is a bad char, errno is set to EINVAL */ -BOOL ntfs_forbidden_chars(const ntfschar *name, int len) +BOOL ntfs_forbidden_chars(const ntfschar *name, int len, BOOL strict) { BOOL forbidden; int ch; @@ -1476,9 +1497,9 @@ | (1L << ('>' - 0x20)) | (1L << ('?' - 0x20)); - forbidden = (len == 0) - || (name[len-1] == const_cpu_to_le16(' ')) - || (name[len-1] == const_cpu_to_le16('.')); + forbidden = (len == 0) || + (strict && (name[len-1] == const_cpu_to_le16(' ') || + name[len-1] == const_cpu_to_le16('.'))); for (i=0; i= 3)) { /* * Rough hash check to tell whether the first couple of chars diff -Nru ntfs-3g-2016.2.22AR.2/Makefile.in ntfs-3g-2017.3.23/Makefile.in --- ntfs-3g-2016.2.22AR.2/Makefile.in 2016-10-01 06:42:15.000000000 +0000 +++ ntfs-3g-2017.3.23/Makefile.in 2017-03-23 09:42:59.000000000 +0000 @@ -84,7 +84,7 @@ $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ $(top_srcdir)/configure $(am__configure_deps) \ $(srcdir)/config.h.in COPYING COPYING.LIB compile config.guess \ - config.sub depcomp install-sh missing ltmain.sh + config.sub install-sh missing ltmain.sh ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ diff -Nru ntfs-3g-2016.2.22AR.2/ntfsprogs/ntfsfix.c ntfs-3g-2017.3.23/ntfsprogs/ntfsfix.c --- ntfs-3g-2016.2.22AR.2/ntfsprogs/ntfsfix.c 2016-10-01 06:42:00.000000000 +0000 +++ ntfs-3g-2017.3.23/ntfsprogs/ntfsfix.c 2017-03-23 09:42:44.000000000 +0000 @@ -359,7 +359,7 @@ ctx->attr->data_size = cpu_to_sle64(na->data_size); ctx->attr->initialized_size = cpu_to_sle64(na->initialized_size); - ctx->attr->flags = cpu_to_le16(na->data_flags); + ctx->attr->flags = na->data_flags; ctx->attr->compression_unit = 0; ntfs_inode_mark_dirty(ctx->ntfs_ino); NInoFileNameSetDirty(na->ni); diff -Nru ntfs-3g-2016.2.22AR.2/ntfsprogs/ntfsrecover.c ntfs-3g-2017.3.23/ntfsprogs/ntfsrecover.c --- ntfs-3g-2016.2.22AR.2/ntfsprogs/ntfsrecover.c 2016-10-01 06:42:00.000000000 +0000 +++ ntfs-3g-2017.3.23/ntfsprogs/ntfsrecover.c 2017-03-23 09:42:44.000000000 +0000 @@ -1322,7 +1322,7 @@ } printf(" new base MFT record, attr 0x%x (%s)\n",attr,attrname(attr)); printf(" inode %lld\n", - (((long long)le64_to_cpu(logr->target_vcn) + (((long long)sle64_to_cpu(logr->target_vcn) << clusterbits) + (le16_to_cpu(logr->cluster_index) << 9)) >> mftrecbits); @@ -1371,7 +1371,7 @@ printf(" free base MFT record, attr 0x%x (%s)\n", attr,attrname(attr)); printf(" inode %lld\n", - (((long long)le64_to_cpu(logr->target_vcn) << clusterbits) + (((long long)sle64_to_cpu(logr->target_vcn) << clusterbits) + (le16_to_cpu(logr->cluster_index) << 9)) >> mftrecbits); break; case CreateAttribute : /* 5 */ @@ -1880,20 +1880,20 @@ (int)le16_to_cpu(logr->attribute_flags)); if (mftrecbits && onmft) printf("target_vcn %016llx (inode %lld)\n", - (long long)le64_to_cpu(logr->target_vcn), - (((long long)le64_to_cpu(logr->target_vcn) + (long long)sle64_to_cpu(logr->target_vcn), + (((long long)sle64_to_cpu(logr->target_vcn) << clusterbits) + (le16_to_cpu(logr->cluster_index) << 9)) >> mftrecbits); else printf("target_vcn %016llx\n", - (long long)le64_to_cpu(logr->target_vcn)); + (long long)sle64_to_cpu(logr->target_vcn)); /* Compute a base for the current run of mft */ - baselcn = le64_to_cpu(logr->lcn_list[0]) - - le64_to_cpu(logr->target_vcn); + baselcn = sle64_to_cpu(logr->lcn_list[0]) + - sle64_to_cpu(logr->target_vcn); for (i=0; ilcns_to_follow) && (ilcn_list[i]); + lcn = sle64_to_cpu(logr->lcn_list[i]); printf(" (%d offs 0x%x) lcn %016llx",i, (int)(8*i + sizeof(LOG_RECORD) - 8), (long long)lcn); @@ -1992,7 +1992,7 @@ off = le16_to_cpu(logr->record_offset) + le16_to_cpu(logr->attribute_offset); printf("redo data (new data) cluster 0x%llx pos 0x%x :\n", - (long long)le64_to_cpu(logr->lcn_list[off + (long long)sle64_to_cpu(logr->lcn_list[off >> clusterbits]), (int)(off & (clustersz - 1))); } @@ -2021,7 +2021,7 @@ off = le16_to_cpu(logr->record_offset) + le16_to_cpu(logr->attribute_offset); printf("undo data (old data) cluster 0x%llx pos 0x%x :\n", - (long long)le64_to_cpu(logr->lcn_list[off + (long long)sle64_to_cpu(logr->lcn_list[off >> clusterbits]), (int)(off & (clustersz - 1))); } @@ -2120,7 +2120,7 @@ switch (logr->record_type) { case LOG_STANDARD : for (i=0; ilcns_to_follow); i++) { - lcn = MREF(le64_to_cpu(logr->lcn_list[i])); + lcn = MREF(sle64_to_cpu(logr->lcn_list[i])); if ((lcn >= firstlcn) && (lcn <= lastlcn)) within = TRUE; } @@ -2709,9 +2709,9 @@ printf("restart_area_offset %04x\n", (int)le16_to_cpu(rest->restart_area_offset)); printf("minor_vers %d\n", - (int)le16_to_cpu(rest->minor_ver)); + (int)sle16_to_cpu(rest->minor_ver)); printf("major_vers %d\n", - (int)le16_to_cpu(rest->major_ver)); + (int)sle16_to_cpu(rest->major_ver)); printf("usn %04x\n", (int)le16_to_cpu(rest->usn)); printf("\n"); @@ -2740,7 +2740,7 @@ printf("client_array_offset %04x\n", (int)le16_to_cpu(resa->client_array_offset)); printf("file_size %016llx\n", - (long long)le64_to_cpu(resa->file_size)); + (long long)sle64_to_cpu(resa->file_size)); printf("last_lsn_data_len %08lx\n", (long)le32_to_cpu(resa->last_lsn_data_length)); printf("record_length %04x\n", @@ -2945,8 +2945,8 @@ } if (!bad && !ctx->vol) dorest(ctx, 0, &buf->block.restart, TRUE); - major = le16_to_cpu(buf->block.restart.major_ver); - minor = le16_to_cpu(buf->block.restart.minor_ver); + major = sle16_to_cpu(buf->block.restart.major_ver); + minor = sle16_to_cpu(buf->block.restart.minor_ver); if ((major == 2) && (minor == 0)) { if (!optk) { printf("** Fast restart mode detected," @@ -2986,8 +2986,8 @@ restart.flags |= RESTART_VOLUME_IS_CLEAN; client.oldest_lsn = cpu_to_sle64(restart_lsn); /* Set $LogFile version to 1.1 so that volume can be mounted */ - log_header.major_ver = const_cpu_to_le16(1); - log_header.minor_ver = const_cpu_to_le16(1); + log_header.major_ver = const_cpu_to_sle16(1); + log_header.minor_ver = const_cpu_to_sle16(1); memcpy(buffer, &log_header, sizeof(RESTART_PAGE_HEADER)); off = le16_to_cpu(log_header.restart_area_offset); diff -Nru ntfs-3g-2016.2.22AR.2/ntfsprogs/ntfsresize.c ntfs-3g-2017.3.23/ntfsprogs/ntfsresize.c --- ntfs-3g-2016.2.22AR.2/ntfsprogs/ntfsresize.c 2016-10-01 06:42:00.000000000 +0000 +++ ntfs-3g-2017.3.23/ntfsprogs/ntfsresize.c 2017-03-23 09:42:44.000000000 +0000 @@ -2397,7 +2397,7 @@ ctx = resize->ctx; ctx->attr->data_size = cpu_to_sle64(na->data_size); ctx->attr->initialized_size = cpu_to_sle64(na->initialized_size); - ctx->attr->flags = cpu_to_le16(na->data_flags); + ctx->attr->flags = na->data_flags; ctx->attr->compression_unit = 0; ntfs_inode_mark_dirty(ctx->ntfs_ino); NInoFileNameSetDirty(na->ni); diff -Nru ntfs-3g-2016.2.22AR.2/ntfsprogs/ntfssecaudit.c ntfs-3g-2017.3.23/ntfsprogs/ntfssecaudit.c --- ntfs-3g-2016.2.22AR.2/ntfsprogs/ntfssecaudit.c 2016-10-01 06:42:00.000000000 +0000 +++ ntfs-3g-2017.3.23/ntfsprogs/ntfssecaudit.c 2017-03-23 09:42:44.000000000 +0000 @@ -2083,6 +2083,7 @@ unsigned int off; int i; le32 *pattr; + BOOL acceptable; BOOL isdump; BOOL done; @@ -2107,13 +2108,26 @@ isdump = ishexdump(line, first, lth); if (isdump) off = getmsbhex(&line[first]); /* line is not an hexadecimal dump */ - /* display what we have in store */ - if ((!isdump || !off) && pos && ntfs_valid_descr((char*)attr,pos)) { + /* display what we have in store if acceptable */ + acceptable = ((!isdump || !off) + && (pos >= 20)) + && (pos > get4l(attr,4)) + && (pos > get4l(attr,8)) + && (pos > get4l(attr,12)) + && (pos > get4l(attr,16)) + && (pos >= ntfs_attr_size(attr)); + if (acceptable) { printf(" Computed hash : 0x%08lx\n", (unsigned long)hash((le32*)attr, ntfs_attr_size(attr))); isdir = guess_dir(attr); - printf(" Estimated type : %s\n",(isdir ? "directory" : "file")); + printf(" Estimated type : %s\n", + (isdir ? "directory" : "file")); + if (!ntfs_valid_descr((char*)attr,pos)) { + printf("** Bad descriptor," + " trying to display anyway\n"); + errors++; + } showheader(attr,4); showusid(attr,4); showgsid(attr,4); @@ -2308,7 +2322,7 @@ isdump = ishexdump(line, first, lth); if (isdump) off = getmsbhex(&line[first]); /* line is not an hexadecimal dump */ - /* apply what we have in store */ + /* apply what we have in store, only if valid */ if ((!isdump || !off) && pos && ntfs_valid_descr((char*)attr,pos)) { withattr = TRUE; if (opt_v >= 2) { diff -Nru ntfs-3g-2016.2.22AR.2/ntfsprogs/ntfsusermap.c ntfs-3g-2017.3.23/ntfsprogs/ntfsusermap.c --- ntfs-3g-2016.2.22AR.2/ntfsprogs/ntfsusermap.c 2016-10-01 06:41:59.000000000 +0000 +++ ntfs-3g-2017.3.23/ntfsprogs/ntfsusermap.c 2017-03-23 09:42:44.000000000 +0000 @@ -237,7 +237,7 @@ { boolean r; - r = ntfs_leave_file_security(ntfs_context); + r = ntfs_leave_file_security(ntfs_context) ? AGREED : DENIED; if (r) fprintf(stderr,"\"%s\" closed\n",volume); else diff -Nru ntfs-3g-2016.2.22AR.2/ntfsprogs/ntfswipe.8.in ntfs-3g-2017.3.23/ntfsprogs/ntfswipe.8.in --- ntfs-3g-2016.2.22AR.2/ntfsprogs/ntfswipe.8.in 2016-02-22 07:34:33.000000000 +0000 +++ ntfs-3g-2017.3.23/ntfsprogs/ntfswipe.8.in 2017-03-23 09:42:44.000000000 +0000 @@ -35,7 +35,9 @@ range 0-255 expressed in octal, decimal or hexadecimal base. .TP \fB\-c\fR, \fB\-\-count\fR NUM -Define the number of times the unused space is to be overwritten. +Define the number of times the unused space is to be overwritten. If both +options \fB\-\-bytes\fR and \fB\-\-count\fR are set, the space is +repeatedly overwritten this number of times by each of the values in the list. .TP \fB\-d\fR, \fB\-\-directory\fR Wipe all the directory indexes, which may contain names of deleted files. @@ -68,7 +70,9 @@ .TP \fB\-s\fR, \fB\-\-undel\fR Overwrite the space which had been allocated to a file which has been deleted -recently and is still undeletable. +recently and is still undeletable. This option is not compatible with +\fB\-\-bytes\fR and the replacement bytes are random ones or taken from a +standard list. .TP \fB\-t\fR, \fB\-\-tails\fR Overwrite the space at the end of files which is unused, but allocated diff -Nru ntfs-3g-2016.2.22AR.2/ntfsprogs/ntfswipe.c ntfs-3g-2017.3.23/ntfsprogs/ntfswipe.c --- ntfs-3g-2016.2.22AR.2/ntfsprogs/ntfswipe.c 2016-02-22 07:34:33.000000000 +0000 +++ ntfs-3g-2017.3.23/ntfsprogs/ntfswipe.c 2017-03-23 09:42:44.000000000 +0000 @@ -403,6 +403,10 @@ } } + if (opts.bytes && opts.undel) { + ntfs_log_error("Options --bytes and --undel are not compatible.\n"); + err++; + } /* Make sure we're in sync with the log levels */ levels = ntfs_log_get_levels(); if (levels & NTFS_LOG_LEVEL_VERBOSE) @@ -1661,12 +1665,12 @@ /* For other passes, one of the fixed patterns is selected. */ do { #if (!defined __STRICT_ANSI__) && (defined HAVE_RANDOM) - i = (size_t)(random() % NPAT); + i = (size_t)random() % NPAT; #else - i = (size_t)(rand() % NPAT); + i = (size_t)rand() % NPAT; #endif } while (selected[i] == 1); - bits = opts.bytes[i]; + bits = patterns[i]; selected[i] = 1; } @@ -2123,6 +2127,9 @@ ntfs_log_quiet("0x%02x ", opts.bytes[i]); } ntfs_log_quiet("\n"); + if (opts.undel) + ntfs_log_quiet("(however undelete data will be overwritten" + " by random values)\n"); if (opts.count > 1) ntfs_log_quiet("%s will repeat these operations %d times.\n", EXEC_NAME, opts.count); diff -Nru ntfs-3g-2016.2.22AR.2/ntfsprogs/playlog.c ntfs-3g-2017.3.23/ntfsprogs/playlog.c --- ntfs-3g-2016.2.22AR.2/ntfsprogs/playlog.c 2016-10-01 06:41:59.000000000 +0000 +++ ntfs-3g-2017.3.23/ntfsprogs/playlog.c 2017-03-23 09:42:44.000000000 +0000 @@ -122,7 +122,7 @@ { u64 offset; - offset = ((u64)le64_to_cpu(logr->target_vcn) + offset = ((u64)sle64_to_cpu(logr->target_vcn) << clusterbits) + ((u32)le16_to_cpu(logr->cluster_index) << NTFS_BLOCK_SIZE_BITS); @@ -431,7 +431,7 @@ fail = FALSE; for (i=0; (ilcn_list[i]); + lcn = sle64_to_cpu(logr->lcn_list[i]); target = buffer + clustersz*i; if (optn) { store = getclusterentry(lcn, FALSE); @@ -494,7 +494,7 @@ printf("** Error : no lcn to write to\n"); if (optn) { for (i=0; (ilcn_list[i]); + lcn = sle64_to_cpu(logr->lcn_list[i]); source = buffer + clustersz*i; store = getclusterentry(lcn, TRUE); if (store) { @@ -513,7 +513,7 @@ } } else { for (i=0; (ilcn_list[i]); + lcn = sle64_to_cpu(logr->lcn_list[i]); if (optv) printf("== lcn 0x%llx to device\n", (long long)lcn); @@ -549,7 +549,7 @@ if (!optn) { for (i=0; (imftmirr_na, - le64_to_cpu(logr->target_vcn) + i); + sle64_to_cpu(logr->target_vcn) + i); source = buffer + clustersz*i; if ((lcn < 0) || (ntfs_pwrite(vol->dev, lcn << clusterbits, @@ -594,7 +594,7 @@ if (buffer && (ntfs_mst_post_read_fixup_warn( (NTFS_RECORD*)buffer, size, FALSE) < 0)) { if (warn) { - lcn = le64_to_cpu(logr->lcn_list[0]); + lcn = sle64_to_cpu(logr->lcn_list[0]); printf("** Invalid protected record at 0x%llx" " index %d\n", (long long)lcn, @@ -642,14 +642,14 @@ (long long)sle64_to_cpu(logr->this_lsn)); if (optv > 1) printf("mft vcn %lld index %d\n", - (long long)le64_to_cpu(logr->target_vcn), + (long long)sle64_to_cpu(logr->target_vcn), (int)le16_to_cpu(logr->cluster_index)); err = sanity_mft(buffer); /* Should set to some previous lsn for undos */ if (opts) record->lsn = logr->this_lsn; /* Duplicate on mftmirr if not overflowing its size */ - mftmirr = (((u64)le64_to_cpu(logr->target_vcn) + mftmirr = (((u64)sle64_to_cpu(logr->target_vcn) + le16_to_cpu(logr->lcns_to_follow)) << clusterbits) <= (((u64)vol->mftmirr_size) << mftrecbits); @@ -859,7 +859,7 @@ if (action->record.undo_length != action->record.redo_length) printf("** Error size change in change_resident\n"); if (optv > 1) { - lcn = le64_to_cpu(action->record.lcn_list[0]); + lcn = sle64_to_cpu(action->record.lcn_list[0]); printf("-> inode %lld lcn 0x%llx target 0x%x length %d\n", (long long)inode_number(&action->record), (long long)lcn, (int)target, (int)length); @@ -913,7 +913,7 @@ if (action->record.undo_length != action->record.redo_length) printf("** Error size change in change_resident\n"); if (optv > 1) { - lcn = le64_to_cpu(action->record.lcn_list[0]); + lcn = sle64_to_cpu(action->record.lcn_list[0]); printf("-> inode %lld lcn 0x%llx target 0x%x length %d\n", (long long)inode_number(&action->record), (long long)lcn, (int)target, (int)length); @@ -965,7 +965,7 @@ err = 1; count = le16_to_cpu(action->record.lcns_to_follow); if (optv > 1) { - lcn = le64_to_cpu(action->record.lcn_list[0]); + lcn = sle64_to_cpu(action->record.lcn_list[0]); printf("-> lcn 0x%llx target 0x%x length %d\n", (long long)lcn, (int)target, (int)length); } @@ -1010,7 +1010,7 @@ err = 1; if (optv > 1) { - lcn = le64_to_cpu(action->record.lcn_list[0]); + lcn = sle64_to_cpu(action->record.lcn_list[0]); printf("-> inode %lld lcn 0x%llx target 0x%x length %d\n", (long long)inode_number(&action->record), (long long)lcn, (int)target, (int)length); @@ -1092,7 +1092,7 @@ err = 1; if (optv > 1) { - lcn = le64_to_cpu(action->record.lcn_list[0]); + lcn = sle64_to_cpu(action->record.lcn_list[0]); printf("-> inode %lld lcn 0x%llx target 0x%x length %d\n", (long long)inode_number(&action->record), (long long)lcn, (int)target, (int)length); @@ -1175,7 +1175,7 @@ err = 1; if (optv > 1) { - lcn = le64_to_cpu(action->record.lcn_list[0]); + lcn = sle64_to_cpu(action->record.lcn_list[0]); printf("-> inode %lld lcn 0x%llx target 0x%x length %d\n", (long long)inode_number(&action->record), (long long)lcn, (int)target, (int)length); @@ -1257,7 +1257,7 @@ err = 1; if (optv > 1) { - lcn = le64_to_cpu(action->record.lcn_list[0]); + lcn = sle64_to_cpu(action->record.lcn_list[0]); printf("-> inode %lld lcn 0x%llx target 0x%x length %d\n", (long long)inode_number(&action->record), (long long)lcn, (int)target, (int)length); @@ -1343,7 +1343,7 @@ printf("-> %s()\n",__func__); err = 1; if (optv > 1) { - lcn = le64_to_cpu(action->record.lcn_list[0]); + lcn = sle64_to_cpu(action->record.lcn_list[0]); printf("-> inode %lld lcn 0x%llx target 0x%x length %d\n", (long long)inode_number(&action->record), (long long)lcn, (int)target, (int)length); @@ -1403,7 +1403,7 @@ printf("-> %s()\n",__func__); err = 1; if (optv > 1) { - lcn = le64_to_cpu(action->record.lcn_list[0]); + lcn = sle64_to_cpu(action->record.lcn_list[0]); printf("-> inode %lld lcn 0x%llx target 0x%x length %d\n", (long long)inode_number(&action->record), (long long)lcn, (int)target, (int)length); @@ -1479,7 +1479,7 @@ err = 1; if (optv > 1) { - lcn = le64_to_cpu(action->record.lcn_list[0]); + lcn = sle64_to_cpu(action->record.lcn_list[0]); printf("-> lcn 0x%llx target 0x%x length %d\n", (long long)lcn, (int)target, (int)length); } @@ -1787,7 +1787,7 @@ indx->usa_ofs = const_cpu_to_le16(0x28); indx->usa_count = const_cpu_to_le16(9); indx->lsn = action->record.this_lsn; - vcn = le64_to_cpu(action->record.target_vcn); + vcn = sle64_to_cpu(action->record.target_vcn); /* beware of size change on big-endian cpus */ indx->index_block_vcn = cpu_to_sle64(vcn); /* INDEX_HEADER */ @@ -1866,7 +1866,7 @@ target = le16_to_cpu(action->record.record_offset) + le16_to_cpu(action->record.attribute_offset); if (optv > 1) { - lcn = le64_to_cpu(action->record.lcn_list[0]); + lcn = sle64_to_cpu(action->record.lcn_list[0]); printf("-> lcn 0x%llx target 0x%x length %d\n", (long long)lcn, (int)target, (int)length); } @@ -1929,7 +1929,7 @@ target = le16_to_cpu(action->record.record_offset) + le16_to_cpu(action->record.attribute_offset); if (optv > 1) { - lcn = le64_to_cpu(action->record.lcn_list[0]); + lcn = sle64_to_cpu(action->record.lcn_list[0]); printf("-> inode %lld lcn 0x%llx target 0x%x length %d\n", (long long)inode_number(&action->record), (long long)lcn, (int)target, (int)length); @@ -2007,7 +2007,7 @@ target = le16_to_cpu(action->record.record_offset) + le16_to_cpu(action->record.attribute_offset); if (optv > 1) { - lcn = le64_to_cpu(action->record.lcn_list[0]); + lcn = sle64_to_cpu(action->record.lcn_list[0]); printf("-> inode %lld lcn 0x%llx target 0x%x length %d\n", (long long)inode_number(&action->record), (long long)lcn, (int)target, (int)length); @@ -2105,7 +2105,7 @@ target = le16_to_cpu(action->record.record_offset) + le16_to_cpu(action->record.attribute_offset); if (optv > 1) { - lcn = le64_to_cpu(action->record.lcn_list[0]); + lcn = sle64_to_cpu(action->record.lcn_list[0]); printf("-> inode %lld lcn 0x%llx target 0x%x length %d\n", (long long)inode_number(&action->record), (long long)lcn, (int)target, (int)length); @@ -2161,7 +2161,7 @@ target = le16_to_cpu(action->record.record_offset) + le16_to_cpu(action->record.attribute_offset); if (optv > 1) { - lcn = le64_to_cpu(action->record.lcn_list[0]); + lcn = sle64_to_cpu(action->record.lcn_list[0]); printf("-> lcn 0x%llx target 0x%x length %d\n", (long long)lcn, (int)target, (int)length); } @@ -2220,7 +2220,7 @@ + le16_to_cpu(action->record.attribute_offset); if (optv > 1) { - lcn = le64_to_cpu(action->record.lcn_list[0]); + lcn = sle64_to_cpu(action->record.lcn_list[0]); printf("-> inode %lld lcn 0x%llx target 0x%x length %d\n", (long long)inode_number(&action->record), (long long)lcn, (int)target, (int)length); @@ -2289,7 +2289,7 @@ // TODO consistency undo_offset == redo_offset, etc. // firstbit + count < 8*clustersz (multiple clusters possible ?) if (optv > 1) { - lcn = le64_to_cpu(action->record.lcn_list[0]); + lcn = sle64_to_cpu(action->record.lcn_list[0]); printf("-> lcn 0x%llx firstbit %d count %d wanted %d\n", (long long)lcn,(int)firstbit,(int)count,(int)wanted); } @@ -2476,7 +2476,7 @@ target = le16_to_cpu(action->record.record_offset) + le16_to_cpu(action->record.attribute_offset); if (optv > 1) { - lcn = le64_to_cpu(action->record.lcn_list[0]); + lcn = sle64_to_cpu(action->record.lcn_list[0]); printf("-> inode %lld lcn 0x%llx target 0x%x length %d\n", (long long)inode_number(&action->record), (long long)lcn, (int)target, (int)length); @@ -2567,7 +2567,7 @@ + le16_to_cpu(action->record.attribute_offset); if (length == oldlength) { if (optv > 1) { - lcn = le64_to_cpu(action->record.lcn_list[0]); + lcn = sle64_to_cpu(action->record.lcn_list[0]); printf("-> inode %lld lcn 0x%llx target 0x%x" " length %d\n", (long long)inode_number(&action->record), @@ -2688,7 +2688,7 @@ + le16_to_cpu(action->record.attribute_offset); count = le16_to_cpu(action->record.lcns_to_follow); if (optv > 1) { - lcn = le64_to_cpu(action->record.lcn_list[0]); + lcn = sle64_to_cpu(action->record.lcn_list[0]); printf("-> lcn 0x%llx target 0x%x length %d\n", (long long)lcn, (int)target, (int)length); } @@ -2775,7 +2775,7 @@ + le16_to_cpu(action->record.attribute_offset); if (length == oldlength) { if (optv > 1) { - lcn = le64_to_cpu(action->record.lcn_list[0]); + lcn = sle64_to_cpu(action->record.lcn_list[0]); printf("-> inode %lld lcn 0x%llx target 0x%x" " length %d\n", (long long)inode_number(&action->record), @@ -2835,7 +2835,7 @@ target = le16_to_cpu(action->record.record_offset) + le16_to_cpu(action->record.attribute_offset); if (optv > 1) { - lcn = le64_to_cpu(action->record.lcn_list[0]); + lcn = sle64_to_cpu(action->record.lcn_list[0]); printf("-> lcn 0x%llx target 0x%x length %d\n", (long long)lcn, (int)target, (int)length); } @@ -2924,7 +2924,7 @@ target = le16_to_cpu(action->record.record_offset) + le16_to_cpu(action->record.attribute_offset); if (optv > 1) { - lcn = le64_to_cpu(action->record.lcn_list[0]); + lcn = sle64_to_cpu(action->record.lcn_list[0]); printf("-> lcn 0x%llx target 0x%x length %d\n", (long long)lcn, (int)target, (int)length); } @@ -2986,7 +2986,7 @@ target = le16_to_cpu(action->record.record_offset) + le16_to_cpu(action->record.attribute_offset); if (optv > 1) { - lcn = le64_to_cpu(action->record.lcn_list[0]); + lcn = sle64_to_cpu(action->record.lcn_list[0]); printf("-> inode %lld lcn 0x%llx target 0x%x length %d\n", (long long)inode_number(&action->record), (long long)lcn, (int)target, (int)length); @@ -3094,7 +3094,7 @@ target = le16_to_cpu(action->record.record_offset) + le16_to_cpu(action->record.attribute_offset); if (optv > 1) { - lcn = le64_to_cpu(action->record.lcn_list[0]); + lcn = sle64_to_cpu(action->record.lcn_list[0]); printf("-> lcn 0x%llx target 0x%x length %d\n", (long long)lcn, (int)target, (int)length); } @@ -3160,7 +3160,7 @@ target = le16_to_cpu(action->record.record_offset) + le16_to_cpu(action->record.attribute_offset); if (optv > 1) { - lcn = le64_to_cpu(action->record.lcn_list[0]); + lcn = sle64_to_cpu(action->record.lcn_list[0]); printf("-> inode %lld lcn 0x%llx target 0x%x length %d\n", (long long)inode_number(&action->record), (long long)lcn, (int)target, (int)length); @@ -3232,7 +3232,7 @@ target = le16_to_cpu(action->record.record_offset) + le16_to_cpu(action->record.attribute_offset); if (optv > 1) { - lcn = le64_to_cpu(action->record.lcn_list[0]); + lcn = sle64_to_cpu(action->record.lcn_list[0]); printf("-> inode %lld lcn 0x%llx target 0x%x length %d\n", (long long)inode_number(&action->record), (long long)lcn, (int)target, (int)length); @@ -3283,7 +3283,7 @@ target = le16_to_cpu(action->record.record_offset) + le16_to_cpu(action->record.attribute_offset); if (optv > 1) { - lcn = le64_to_cpu(action->record.lcn_list[0]); + lcn = sle64_to_cpu(action->record.lcn_list[0]); printf("-> inode %lld lcn 0x%llx target 0x%x length %d\n", (long long)inode_number(&action->record), (long long)lcn, (int)target, (int)length); @@ -3359,7 +3359,7 @@ // TODO consistency undo_offset == redo_offset, etc. // firstbit + count < 8*clustersz (multiple clusters possible ?) if (optv > 1) { - lcn = le64_to_cpu(action->record.lcn_list[0]); + lcn = sle64_to_cpu(action->record.lcn_list[0]); printf("-> lcn 0x%llx firstbit %d count %d wanted %d\n", (long long)lcn,(int)firstbit,(int)count,(int)wanted); } @@ -3526,7 +3526,7 @@ target = le16_to_cpu(action->record.record_offset) + le16_to_cpu(action->record.attribute_offset); if (optv > 1) { - lcn = le64_to_cpu(action->record.lcn_list[0]); + lcn = sle64_to_cpu(action->record.lcn_list[0]); printf("-> lcn 0x%llx target 0x%x length %d\n", (long long)lcn, (int)target, (int)length); } @@ -3602,7 +3602,7 @@ target = le16_to_cpu(action->record.record_offset) + le16_to_cpu(action->record.attribute_offset); if (optv > 1) { - lcn = le64_to_cpu(action->record.lcn_list[0]); + lcn = sle64_to_cpu(action->record.lcn_list[0]); printf("-> inode %lld lcn 0x%llx target 0x%x new length %d resize %d\n", (long long)inode_number(&action->record), (long long)lcn, (int)target, (int)length, (int)resize); @@ -3694,7 +3694,7 @@ + le16_to_cpu(action->record.attribute_offset); if (length == oldlength) { if (optv > 1) { - lcn = le64_to_cpu(action->record.lcn_list[0]); + lcn = sle64_to_cpu(action->record.lcn_list[0]); printf("-> inode %lld lcn 0x%llx target 0x%x length %d\n", (long long)inode_number(&action->record), (long long)lcn, (int)target, (int)length); @@ -3805,7 +3805,7 @@ + le16_to_cpu(action->record.attribute_offset); count = le16_to_cpu(action->record.lcns_to_follow); if (optv > 1) { - lcn = le64_to_cpu(action->record.lcn_list[0]); + lcn = sle64_to_cpu(action->record.lcn_list[0]); printf("-> lcn 0x%llx target 0x%x length %d\n", (long long)lcn, (int)target, (int)length); } @@ -3873,7 +3873,7 @@ + le16_to_cpu(action->record.attribute_offset); if (length == oldlength) { if (optv > 1) { - lcn = le64_to_cpu(action->record.lcn_list[0]); + lcn = sle64_to_cpu(action->record.lcn_list[0]); printf("-> inode %lld lcn 0x%llx target 0x%x" " length %d\n", (long long)inode_number(&action->record), @@ -3940,7 +3940,7 @@ + le16_to_cpu(action->record.attribute_offset); if (length == oldlength) { if (optv > 1) { - lcn = le64_to_cpu(action->record.lcn_list[0]); + lcn = sle64_to_cpu(action->record.lcn_list[0]); printf("-> inode %lld lcn 0x%llx target 0x%x" " length %d\n", (long long)inode_number(&action->record), diff -Nru ntfs-3g-2016.2.22AR.2/README ntfs-3g-2017.3.23/README --- ntfs-3g-2016.2.22AR.2/README 2016-10-01 06:42:00.000000000 +0000 +++ ntfs-3g-2017.3.23/README 2017-03-23 09:42:44.000000000 +0000 @@ -23,10 +23,6 @@ http://www.tuxera.com/community/ntfs-3g-advanced/ -This specific version has support for new features as described in - - http://jp-andre.pagesperso-orange.fr/ntfs-3g.html - News, support answers, problem submission instructions, support and discussion forums, performance numbers and other information are available on the project web site at @@ -77,11 +73,7 @@ make drivers : only build drivers and libraries, without ntfsprogs make ntfsprogs : only build ntfsprogs and libntfs-3g, without drivers -Solaris and OpenIndiana: Please see - - http://jp-andre.pagesperso-orange.fr/openindiana-ntfs-3g.html - -Other: Please see +Non-Linux: Please see http://www.tuxera.com/community/ntfs-3g-download/ @@ -126,25 +118,6 @@ umount /dev/sda1 -PRELINKED BINARY VERSION -======================== - -Statically prelinked versions for X86 are compiled with gcc 4.1.2 and -prepared as an upgrade to the ntfs-3g shipped with the live-CD Knoppix 5.1.1. -The statically prelinked versions for Sparc are compiled with gcc 4.0.0. -Both are restricting to using glibc 2.3.2 and should be usable on -virtually any configuration since kernel 2.6.20 having a fuse kernel -module (fuse.ko) installed. - -They can be used like ordinary versions. Just copy the appropriate -executable file into a readable directory, set the executable flags and -start as root with the mount arguments : - - linked-ntfs-3g /dev/sda1 /mnt/windows -or - sparc-ntfs-3g /dev/sda1 /mnt/windows - - NTFS UTILITIES ============== diff -Nru ntfs-3g-2016.2.22AR.2/src/lowntfs-3g.c ntfs-3g-2017.3.23/src/lowntfs-3g.c --- ntfs-3g-2016.2.22AR.2/src/lowntfs-3g.c 2016-10-01 06:42:00.000000000 +0000 +++ ntfs-3g-2017.3.23/src/lowntfs-3g.c 2017-03-23 09:42:44.000000000 +0000 @@ -4,7 +4,7 @@ * Copyright (c) 2005-2007 Yura Pakhuchiy * Copyright (c) 2005 Yuval Fledel * Copyright (c) 2006-2009 Szabolcs Szakacsits - * Copyright (c) 2007-2016 Jean-Pierre Andre + * Copyright (c) 2007-2017 Jean-Pierre Andre * Copyright (c) 2009 Erik Larsson * * This file is originated from the Linux-NTFS project. @@ -260,7 +260,7 @@ "\n" "Copyright (C) 2005-2007 Yura Pakhuchiy\n" "Copyright (C) 2006-2009 Szabolcs Szakacsits\n" -"Copyright (C) 2007-2016 Jean-Pierre Andre\n" +"Copyright (C) 2007-2017 Jean-Pierre Andre\n" "Copyright (C) 2009 Erik Larsson\n" "\n" "Usage: %s [-o option[,...]] \n" @@ -515,36 +515,99 @@ } #if 0 && (defined(__APPLE__) || defined(__DARWIN__)) /* Unfinished. */ - -static void ntfs_macfuse_getxtimes(fuse_req_t req, fuse_ino_t ino, - struct fuse_file_info *fi __attribute__((unused))) +static int ntfs_macfuse_getxtimes(const char *org_path, + struct timespec *bkuptime, struct timespec *crtime) { int res = 0; ntfs_inode *ni; + char *path = NULL; ntfschar *stream_name; int stream_name_len; - struct timespec bkuptime; - struct timespec crtime; - memset(&bkuptime, 0, sizeof(struct timespec)); - memset(&crtime, 0, sizeof(struct timespec)); - ni = ntfs_inode_open(ctx->vol, INODE(ino)); + stream_name_len = ntfs_fuse_parse_path(org_path, &path, &stream_name); + if (stream_name_len < 0) + return stream_name_len; + memset(bkuptime, 0, sizeof(struct timespec)); + memset(crtime, 0, sizeof(struct timespec)); + ni = ntfs_pathname_to_inode(ctx->vol, NULL, path); if (!ni) { res = -errno; - } else { - /* We have no backup timestamp in NTFS. */ - crtime = ntfs2timespec(ni->creation_time); - if (ntfs_inode_close(ni)) - set_fuse_error(&res); + goto exit; } + + /* We have no backup timestamp in NTFS. */ + crtime->tv_sec = ni->creation_time; +exit: + if (ntfs_inode_close(ni)) + set_fuse_error(&res); + free(path); if (stream_name_len) free(stream_name); - if (res < 0) - fuse_reply_err(req, -res); - else - fuse_reply_xtimes(req, &bkuptime, &crtime); + return res; +} + +int ntfs_macfuse_setcrtime(const char *path, const struct timespec *tv) +{ + ntfs_inode *ni; + int res = 0; + + if (ntfs_fuse_is_named_data_stream(path)) + return -EINVAL; /* n/a for named data streams. */ + ni = ntfs_pathname_to_inode(ctx->vol, NULL, path); + if (!ni) + return -errno; + + if (tv) { + ni->creation_time = tv->tv_sec; + ntfs_fuse_update_times(ni, NTFS_UPDATE_CTIME); + } + + if (ntfs_inode_close(ni)) + set_fuse_error(&res); + return res; } +int ntfs_macfuse_setbkuptime(const char *path, const struct timespec *tv) +{ + ntfs_inode *ni; + int res = 0; + + if (ntfs_fuse_is_named_data_stream(path)) + return -EINVAL; /* n/a for named data streams. */ + ni = ntfs_pathname_to_inode(ctx->vol, NULL, path); + if (!ni) + return -errno; + + /* + * Only pretending to set backup time successfully to please the APIs of + * Mac OS X. In reality, NTFS has no backup time. + */ + + if (ntfs_inode_close(ni)) + set_fuse_error(&res); + return res; +} + +int ntfs_macfuse_setchgtime(const char *path, const struct timespec *tv) +{ + ntfs_inode *ni; + int res = 0; + + if (ntfs_fuse_is_named_data_stream(path)) + return -EINVAL; /* n/a for named data streams. */ + ni = ntfs_pathname_to_inode(ctx->vol, NULL, path); + if (!ni) + return -errno; + + if (tv) { + ni->last_mft_change_time = tv->tv_sec; + ntfs_fuse_update_times(ni, 0); + } + + if (ntfs_inode_close(ni)) + set_fuse_error(&res); + return res; +} #endif /* defined(__APPLE__) || defined(__DARWIN__) */ static void ntfs_init(void *userdata __attribute__((unused)), @@ -1456,9 +1519,9 @@ of->parent = 0; of->ino = ino; of->state = state; -#ifdef PLUGIN_ENABLED +#ifndef DISABLE_PLUGINS memcpy(&of->fi, fi, sizeof(struct fuse_file_info)); -#endif /* PLUGIN_ENABLED */ +#endif /* DISABLE_PLUGINS */ of->next = ctx->open_files; of->previous = (struct open_file*)NULL; if (ctx->open_files) @@ -1505,7 +1568,7 @@ REPARSE_POINT *reparse; struct open_file *of; - of = (struct open_file*)fi; + of = (struct open_file*)(long)fi->fh; res = CALL_REPARSE_PLUGIN(ni, read, buf, size, offset, &of->fi); if (res >= 0) { goto stamps; @@ -1586,7 +1649,7 @@ REPARSE_POINT *reparse; struct open_file *of; - of = (struct open_file*)fi; + of = (struct open_file*)(long)fi->fh; res = CALL_REPARSE_PLUGIN(ni, write, buf, size, offset, &of->fi); if (res >= 0) { @@ -2044,277 +2107,6 @@ fuse_reply_attr(req, &stbuf, ATTR_TIMEOUT); } -#if 0 && (defined(__APPLE__) || defined(__DARWIN__)) /* Unfinished. */ - -#if defined(HAVE_UTIMENSAT) & defined(FUSE_SET_ATTR_ATIME_NOW) - - /* - * utimens_x (MacOsX) - * - * This is much similar to ntfs_fuse_utimens() - */ - -static int ntfs_fuse_utimens_x(struct SECURITY_CONTEXT *scx, fuse_ino_t ino, - struct setattr_x *stin, struct stat *stbuf, int to_set) -{ - ntfs_inode *ni; - int res = 0; - - ni = ntfs_inode_open(ctx->vol, INODE(ino)); - if (!ni) - return -errno; - - /* no check or update if both UTIME_OMIT */ - if (to_set & (FUSE_SET_ATTR_ATIME - + FUSE_SET_ATTR_MTIME - + FUSE_SET_ATTR_BKUPTIME - + FUSE_SET_ATTR_CHGTIME - + FUSE_SET_ATTR_CRTIME)) { -#if !KERNELPERMS | (POSIXACLS & !KERNELACLS) - if (ntfs_allowed_as_owner(scx, ni) - || ((to_set & FUSE_SET_ATTR_ATIME_NOW) - && (to_set & FUSE_SET_ATTR_MTIME_NOW) - && ntfs_allowed_access(scx, ni, S_IWRITE))) { -#endif - ntfs_time_update_flags mask = 0; - - if (to_set & FUSE_SET_ATTR_ATIME_NOW) - mask |= NTFS_UPDATE_ATIME; - else - if (to_set & FUSE_SET_ATTR_ATIME) - ni->last_access_time - = timespec2ntfs(stin->acctime); - if (to_set & FUSE_SET_ATTR_MTIME_NOW) - mask |= NTFS_UPDATE_MTIME; - else - if (to_set & FUSE_SET_ATTR_MTIME) - ni->last_data_change_time - = timespec2ntfs(stin->modtime); - if (to_set & FUSE_SET_ATTR_CRTIME) - ni->creation_time - = timespec2ntfs(stin->crtime); - if (to_set & FUSE_SET_ATTR_BKUPTIME) { - /* does not exist */ - } - if (to_set & FUSE_SET_ATTR_CHGTIME) { - ni->last_mft_change_time - = timespec2ntfs(stin->chgtime); - } else - mask |= FUSE_SET_ATTR_CTIME; - ntfs_inode_update_times(ni, mask); -#if !KERNELPERMS | (POSIXACLS & !KERNELACLS) - } else - res = -errno; -#endif - } - if (!res) - res = ntfs_fuse_getstat(scx, ni, stbuf); - if (ntfs_inode_close(ni)) - set_fuse_error(&res); - return res; -} - -#else /* defined(HAVE_UTIMENSAT) & defined(FUSE_SET_ATTR_ATIME_NOW) */ - - /* - * utime_x (MacOsX) - * - * This is somewhat similar to ntfs_fuse_utime() - * - * TODO : check whether there is any need for this function - * HAVE_UTIMENSAT may be always defined on MacOsX - */ - -static int ntfs_fuse_utime_x(struct SECURITY_CONTEXT *scx, fuse_ino_t ino, - struct setattr_x *stin, struct stat *stbuf) -{ - ntfs_inode *ni; - int res = 0; - ntfs_time_update_flags mask = 0; -#if !KERNELPERMS | (POSIXACLS & !KERNELACLS) - BOOL ownerok; - BOOL writeok; -#endif - - ni = ntfs_inode_open(ctx->vol, INODE(ino)); - if (!ni) - return -errno; - -#if !KERNELPERMS | (POSIXACLS & !KERNELACLS) - ownerok = ntfs_allowed_as_owner(scx, ni); - if (stin) { - /* - * fuse never calls with a NULL buf and we do not - * know whether the specific condition can be applied - * So we have to accept updating by a non-owner having - * write access. - */ - writeok = !ownerok - && (stin->st_atime == stin->st_mtime) - && ntfs_allowed_access(scx, ni, S_IWRITE); - /* Must be owner */ - if (!ownerok && !writeok) - res = (stin->acctime.tv_sec == stin->modtime.tv_sec - ? -EACCES : -EPERM); - else { - if (to_set & FUSE_SET_ATTR_ATIME) - ni->last_access_time - = timespec2ntfs(stin->acctime); - if (to_set & FUSE_SET_ATTR_CTIME) - ni->last_data_change_time - = timespec2ntfs(stin->modtime); - if (to_set & FUSE_SET_ATTR_CHGTIME) - ni->last_mft_change_time - = timespec2ntfs(stin->chgtime); - else - flags |= NTFS_UPDATE_CTIME; - if (to_set & FUSE_SET_ATTR_CRTIME) - ni->creation_time - = timespec2ntfs(stin->crtime); - ntfs_fuse_update_times(ni, mask); - } - } else { - /* Must be owner or have write access */ - writeok = !ownerok - && ntfs_allowed_access(scx, ni, S_IWRITE); - if (!ownerok && !writeok) - res = -EACCES; - else - ntfs_inode_update_times(ni, NTFS_UPDATE_AMCTIME); - } -#else - if (stin) { - if (to_set & FUSE_SET_ATTR_ATIME) - ni->last_access_time - = timespec2ntfs(stin->acctime); - if (to_set & FUSE_SET_ATTR_CTIME) - ni->last_data_change_time - = timespec2ntfs(stin->modtime); - if (to_set & FUSE_SET_ATTR_CHGTIME) - ni->last_mft_change_time - = timespec2ntfs(stin->chgtime); - else - flags |= NTFS_UPDATE_CTIME; - if (to_set & FUSE_SET_ATTR_CRTIME) - ni->creation_time - = timespec2ntfs(stin->crtime); - ntfs_fuse_update_times(ni, mask); - } else - ntfs_inode_update_times(ni, NTFS_UPDATE_AMCTIME); -#endif - - res = ntfs_fuse_getstat(scx, ni, stbuf); - if (ntfs_inode_close(ni)) - set_fuse_error(&res); - return res; -} - -#endif /* defined(HAVE_UTIMENSAT) & defined(FUSE_SET_ATTR_ATIME_NOW) */ - - /* - * setattr_x (MacOsX) - * - * This is much similar to ntfs_fuse_setattr() - * - * TODO : check whether ntfs_fuse_setattr() is needed when - * ntfs_fuse_setattr_x() is defined - */ - -static void ntfs_macfuse_setattr_x(fuse_req_t req, fuse_ino_t ino, - struct setattr_x *attr, int to_set, - struct fuse_file_info *fi __attribute__((unused))) -{ - struct stat stbuf; - ntfs_inode *ni; - int res; - struct SECURITY_CONTEXT security; - - res = 0; - ntfs_fuse_fill_security_context(req, &security); - /* no flags */ - if (!(to_set - & (FUSE_SET_ATTR_MODE - | FUSE_SET_ATTR_UID | FUSE_SET_ATTR_GID - | FUSE_SET_ATTR_SIZE - | FUSE_SET_ATTR_ATIME | FUSE_SET_ATTR_MTIME - | FUSE_SET_ATTR_BKUPTIME - | FUSE_SET_ATTR_CHGTIME - | FUSE_SET_ATTR_CRTIME))) { - ni = ntfs_inode_open(ctx->vol, INODE(ino)); - if (!ni) - res = -errno; - else { - res = ntfs_fuse_getstat(&security, ni, &stbuf); - if (ntfs_inode_close(ni)) - set_fuse_error(&res); - } - } - /* some set of uid/gid/mode */ - if (to_set - & (FUSE_SET_ATTR_MODE - | FUSE_SET_ATTR_UID | FUSE_SET_ATTR_GID)) { - switch (to_set - & (FUSE_SET_ATTR_MODE - | FUSE_SET_ATTR_UID | FUSE_SET_ATTR_GID)) { - case FUSE_SET_ATTR_MODE : - res = ntfs_fuse_chmod(&security, ino, - attr->st_mode & 07777, &stbuf); - break; - case FUSE_SET_ATTR_UID : - res = ntfs_fuse_chown(&security, ino, attr->st_uid, - (gid_t)-1, &stbuf); - break; - case FUSE_SET_ATTR_GID : - res = ntfs_fuse_chown(&security, ino, (uid_t)-1, - attr->st_gid, &stbuf); - break; - case FUSE_SET_ATTR_UID + FUSE_SET_ATTR_GID : - res = ntfs_fuse_chown(&security, ino, attr->st_uid, - attr->st_gid, &stbuf); - break; - case FUSE_SET_ATTR_UID + FUSE_SET_ATTR_MODE: - res = ntfs_fuse_chownmod(&security, ino, attr->st_uid, - (gid_t)-1,attr->st_mode, - &stbuf); - break; - case FUSE_SET_ATTR_GID + FUSE_SET_ATTR_MODE: - res = ntfs_fuse_chownmod(&security, ino, (uid_t)-1, - attr->st_gid,attr->st_mode, - &stbuf); - break; - case FUSE_SET_ATTR_UID + FUSE_SET_ATTR_GID + FUSE_SET_ATTR_MODE: - res = ntfs_fuse_chownmod(&security, ino, attr->st_uid, - attr->st_gid,attr->st_mode, &stbuf); - break; - default : - break; - } - } - /* size */ - if (!res && (to_set & FUSE_SET_ATTR_SIZE)) { - res = ntfs_fuse_trunc(&security, ino, attr->st_size, - !fi, &stbuf); - } - /* some set of times */ - if (!res && (to_set & (FUSE_SET_ATTR_ATIME - + FUSE_SET_ATTR_MTIME - + FUSE_SET_ATTR_BKUPTIME - + FUSE_SET_ATTR_CHGTIME - + FUSE_SET_ATTR_CRTIME))) { -#if defined(HAVE_UTIMENSAT) & defined(FUSE_SET_ATTR_ATIME_NOW) - res = ntfs_fuse_utimens_x(&security, ino, attr, &stbuf, to_set); -#else /* defined(HAVE_UTIMENSAT) & defined(FUSE_SET_ATTR_ATIME_NOW) */ - res = ntfs_fuse_utime_x(&security, ino, attr, &stbuf); -#endif /* defined(HAVE_UTIMENSAT) & defined(FUSE_SET_ATTR_ATIME_NOW) */ - } - if (res) - fuse_reply_err(req, -res); - else - fuse_reply_attr(req, &stbuf, ATTR_TIMEOUT); -} - -#endif /* defined(__APPLE__) || defined(__DARWIN__) */ - #if !KERNELPERMS | (POSIXACLS & !KERNELACLS) static void ntfs_fuse_access(fuse_req_t req, fuse_ino_t ino, int mask) @@ -2377,7 +2169,7 @@ uname_len = ntfs_mbstoucs(name, &uname); if ((uname_len < 0) || (ctx->windows_names - && ntfs_forbidden_names(ctx->vol,uname,uname_len))) { + && ntfs_forbidden_names(ctx->vol,uname,uname_len,TRUE))) { res = -errno; goto exit; } @@ -2598,7 +2390,7 @@ uname_len = ntfs_mbstoucs(newname, &uname); if ((uname_len < 0) || (ctx->windows_names - && ntfs_forbidden_names(ctx->vol,uname,uname_len))) { + && ntfs_forbidden_names(ctx->vol,uname,uname_len,TRUE))) { res = -errno; goto exit; } @@ -3779,7 +3571,7 @@ lename_len = fix_xattr_prefix(name, namespace, &lename); if ((lename_len == -1) || (ctx->windows_names - && ntfs_forbidden_chars(lename,lename_len))) { + && ntfs_forbidden_chars(lename,lename_len,TRUE))) { res = -errno; goto exit; } @@ -4150,7 +3942,9 @@ #if 0 && (defined(__APPLE__) || defined(__DARWIN__)) /* Unfinished. */ /* MacFUSE extensions. */ .getxtimes = ntfs_macfuse_getxtimes, - .setattr_x = ntfs_macfuse_setattr_x, + .setcrtime = ntfs_macfuse_setcrtime, + .setbkuptime = ntfs_macfuse_setbkuptime, + .setchgtime = ntfs_macfuse_setchgtime, #endif /* defined(__APPLE__) || defined(__DARWIN__) */ .init = ntfs_init }; @@ -4331,13 +4125,14 @@ struct stat st; pid_t pid; const char *cmd = "/sbin/modprobe"; + char *env = (char*)NULL; struct timespec req = { 0, 100000000 }; /* 100 msec */ fuse_fstype fstype; if (!stat(cmd, &st) && !geteuid()) { pid = fork(); if (!pid) { - execl(cmd, cmd, "fuse", NULL); + execle(cmd, cmd, "fuse", (char*)NULL, &env); _exit(1); } else if (pid != -1) waitpid(pid, NULL, 0); diff -Nru ntfs-3g-2016.2.22AR.2/src/Makefile.in ntfs-3g-2017.3.23/src/Makefile.in --- ntfs-3g-2016.2.22AR.2/src/Makefile.in 2016-10-01 06:42:16.000000000 +0000 +++ ntfs-3g-2017.3.23/src/Makefile.in 2017-03-23 09:43:00.000000000 +0000 @@ -857,10 +857,10 @@ @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES) -@ENABLE_MOUNT_HELPER_FALSE@install-exec-local: -@ENABLE_NTFS_3G_FALSE@install-exec-local: @ENABLE_MOUNT_HELPER_FALSE@install-data-local: @ENABLE_NTFS_3G_FALSE@install-data-local: +@ENABLE_MOUNT_HELPER_FALSE@install-exec-local: +@ENABLE_NTFS_3G_FALSE@install-exec-local: @ENABLE_MOUNT_HELPER_FALSE@uninstall-local: @ENABLE_NTFS_3G_FALSE@uninstall-local: @ENABLE_NTFS_3G_FALSE@install-exec-hook: diff -Nru ntfs-3g-2016.2.22AR.2/src/ntfs-3g.c ntfs-3g-2017.3.23/src/ntfs-3g.c --- ntfs-3g-2016.2.22AR.2/src/ntfs-3g.c 2016-10-01 06:42:00.000000000 +0000 +++ ntfs-3g-2017.3.23/src/ntfs-3g.c 2017-03-23 09:42:44.000000000 +0000 @@ -4,7 +4,7 @@ * Copyright (c) 2005-2007 Yura Pakhuchiy * Copyright (c) 2005 Yuval Fledel * Copyright (c) 2006-2009 Szabolcs Szakacsits - * Copyright (c) 2007-2016 Jean-Pierre Andre + * Copyright (c) 2007-2017 Jean-Pierre Andre * Copyright (c) 2009 Erik Larsson * * This file is originated from the Linux-NTFS project. @@ -196,7 +196,7 @@ "\n" "Copyright (C) 2005-2007 Yura Pakhuchiy\n" "Copyright (C) 2006-2009 Szabolcs Szakacsits\n" -"Copyright (C) 2007-2016 Jean-Pierre Andre\n" +"Copyright (C) 2007-2017 Jean-Pierre Andre\n" "Copyright (C) 2009 Erik Larsson\n" "\n" "Usage: %s [-o option[,...]] \n" @@ -595,7 +595,7 @@ } /* We have no backup timestamp in NTFS. */ - *crtime = ntfs2timespec(ni->creation_time); + crtime->tv_sec = sle64_to_cpu(ni->creation_time); exit: if (ntfs_inode_close(ni)) set_fuse_error(&res); @@ -605,7 +605,7 @@ return res; } -static int ntfs_macfuse_setcrtime(const char *path, const struct timespec *tv) +int ntfs_macfuse_setcrtime(const char *path, const struct timespec *tv) { ntfs_inode *ni; int res = 0; @@ -617,7 +617,7 @@ return -errno; if (tv) { - ni->creation_time = timespec2ntfs(*tv); + ni->creation_time = cpu_to_sle64(tv->tv_sec); ntfs_fuse_update_times(ni, NTFS_UPDATE_CTIME); } @@ -626,7 +626,7 @@ return res; } -static int ntfs_macfuse_setbkuptime(const char *path, const struct timespec *tv) +int ntfs_macfuse_setbkuptime(const char *path, const struct timespec *tv) { ntfs_inode *ni; int res = 0; @@ -647,7 +647,7 @@ return res; } -static int ntfs_macfuse_setchgtime(const char *path, const struct timespec *tv) +int ntfs_macfuse_setchgtime(const char *path, const struct timespec *tv) { ntfs_inode *ni; int res = 0; @@ -659,7 +659,7 @@ return -errno; if (tv) { - ni->last_mft_change_time = timespec2ntfs(*tv); + ni->last_mft_change_time = cpu_to_sle64(tv->tv_sec); ntfs_fuse_update_times(ni, 0); } @@ -1954,7 +1954,7 @@ uname_len = ntfs_mbstoucs(name, &uname); if ((uname_len < 0) || (ctx->windows_names - && ntfs_forbidden_names(ctx->vol,uname,uname_len))) { + && ntfs_forbidden_names(ctx->vol,uname,uname_len,TRUE))) { res = -errno; goto exit; } @@ -2162,7 +2162,7 @@ && (!S_ISREG(mode) || (ctx->windows_names && ntfs_forbidden_names(ctx->vol,stream_name, - stream_name_len)))) { + stream_name_len, TRUE)))) { res = -EINVAL; goto exit; } @@ -2231,7 +2231,7 @@ uname_len = ntfs_mbstoucs(name, &uname); if ((uname_len < 0) || (ctx->windows_names - && ntfs_forbidden_names(ctx->vol,uname,uname_len))) { + && ntfs_forbidden_names(ctx->vol,uname,uname_len,TRUE))) { res = -errno; goto exit; } @@ -3379,7 +3379,7 @@ lename_len = fix_xattr_prefix(name, namespace, &lename); if ((lename_len == -1) || (ctx->windows_names - && ntfs_forbidden_chars(lename,lename_len))) { + && ntfs_forbidden_chars(lename,lename_len,TRUE))) { res = -errno; goto exit; } @@ -3920,13 +3920,14 @@ struct stat st; pid_t pid; const char *cmd = "/sbin/modprobe"; + char *env = (char*)NULL; struct timespec req = { 0, 100000000 }; /* 100 msec */ fuse_fstype fstype; if (!stat(cmd, &st) && !geteuid()) { pid = fork(); if (!pid) { - execl(cmd, cmd, "fuse", NULL); + execle(cmd, cmd, "fuse", (char*)NULL, &env); _exit(1); } else if (pid != -1) waitpid(pid, NULL, 0);