From b3aa1878670c3584716cdf6d79c894277a2c7c00 Mon Sep 17 00:00:00 2001 From: ridiculousfish Date: Mon, 9 Feb 2015 15:37:51 -0800 Subject: Use a symlink instead of a hard link for fishd.socket compatibility path On OS X, work around filesystem corruption triggered by having hard links in /tmp, by using a symlink instead. --- fishd.cpp | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/fishd.cpp b/fishd.cpp index 503cefa6..7df887f4 100644 --- a/fishd.cpp +++ b/fishd.cpp @@ -626,12 +626,21 @@ repeat: // Attempt to hardlink the old socket name so that old versions of fish keep working on upgrade // Not critical if it fails + // On OS X, we use symlinks instead of hardlinks to work around a filesystem corruption bug http://openradar.appspot.com/19687545 + // On Linux, we use hardlinks instead of symlinks for compatibility with the Yama security model - see #1859 + int (*linkfunc)(const char *, const char *); +#if __APPLE__ + linkfunc = symlink; +#else + linkfunc = link; +#endif + if (unlink(old_sock_name.c_str()) != 0 && errno != ENOENT) { debug(0, L"Could not create legacy socket path"); wperror(L"unlink"); } - else if (link(sock_name.c_str(), old_sock_name.c_str()) != 0) + else if (linkfunc(sock_name.c_str(), old_sock_name.c_str()) != 0) { debug(0, L"Could not create legacy socket path"); wperror(L"link"); -- cgit v1.2.3 From 95687a03fb2ec61818e84e7c0c32303d7ee043d0 Mon Sep 17 00:00:00 2001 From: ridiculousfish Date: Mon, 16 Feb 2015 10:53:36 -0800 Subject: Bump OS X version from 2.1.1 to 2.1.2 --- fish.xcodeproj/project.pbxproj | 6 +++--- osx/config.h | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/fish.xcodeproj/project.pbxproj b/fish.xcodeproj/project.pbxproj index 8ce32a13..15a87171 100644 --- a/fish.xcodeproj/project.pbxproj +++ b/fish.xcodeproj/project.pbxproj @@ -1190,7 +1190,7 @@ "DATADIR=L\\\"/usr/local/share\\\"", "SYSCONFDIR=L\\\"/usr/local/etc\\\"", "BINDIR=L\\\"/usr/local/bin\\\"", - "FISH_BUILD_VERSION=\\\"2.1.1\\\"", + "FISH_BUILD_VERSION=\\\"2.1.2\\\"", ); GCC_WARN_64_TO_32_BIT_CONVERSION = YES; GCC_WARN_ABOUT_RETURN_TYPE = YES; @@ -1342,7 +1342,7 @@ "DATADIR=L\\\"/usr/local/share\\\"", "SYSCONFDIR=L\\\"/usr/local/etc\\\"", "BINDIR=L\\\"/usr/local/bin\\\"", - "FISH_BUILD_VERSION=\\\"2.1.1\\\"", + "FISH_BUILD_VERSION=\\\"2.1.2\\\"", ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; GCC_WARN_64_TO_32_BIT_CONVERSION = YES; @@ -1370,7 +1370,7 @@ "DATADIR=L\\\"/usr/local/share\\\"", "SYSCONFDIR=L\\\"/usr/local/etc\\\"", "BINDIR=L\\\"/usr/local/bin\\\"", - "FISH_BUILD_VERSION=\\\"2.1.1\\\"", + "FISH_BUILD_VERSION=\\\"2.1.2\\\"", ); GCC_WARN_64_TO_32_BIT_CONVERSION = YES; GCC_WARN_ABOUT_RETURN_TYPE = YES; diff --git a/osx/config.h b/osx/config.h index 5b74f106..4362ecb6 100644 --- a/osx/config.h +++ b/osx/config.h @@ -183,7 +183,7 @@ #define PACKAGE_NAME "fish" /* Define to the full name and version of this package. */ -#define PACKAGE_STRING "fish 2.1.1" +#define PACKAGE_STRING "fish 2.1.2" /* Define to the one symbol short name of this package. */ #define PACKAGE_TARNAME "fish" @@ -192,7 +192,7 @@ #define PACKAGE_URL "" /* Define to the version of this package. */ -#define PACKAGE_VERSION "2.1.1" +#define PACKAGE_VERSION "2.1.2" /* Define to 1 if you have the ANSI C header files. */ #define STDC_HEADERS 1 -- cgit v1.2.3