2b61e3a317
OpenSSH uses a link to take a backup while replacing the known_hosts file: (1) link known_hosts to known_hosts.old (2) move new file to known_hosts (overwriting the link there) Since links are not allowed we replace link with rename: (1) rename known_hosts to known_hosts.old (2) move new file to known_hosts This means that there is a window between (1) and (2) where the known_hosts file is not available, but that is a really short window and is hopefully acceptable here. Fixes #2909.
16 lines
470 B
Diff
16 lines
470 B
Diff
diff -u -r ../openssh-7.8p1/hostfile.c ./hostfile.c
|
|
--- ../openssh-7.8p1/hostfile.c 2018-08-23 05:41:42.000000000 +0000
|
|
+++ ./hostfile.c 2018-09-29 08:21:44.261152558 +0000
|
|
@@ -603,7 +603,11 @@
|
|
r = SSH_ERR_SYSTEM_ERROR;
|
|
goto fail;
|
|
}
|
|
+#ifdef __ANDROID__
|
|
+ if (rename(filename, back) == -1) {
|
|
+#else
|
|
if (link(filename, back) == -1) {
|
|
+#endif
|
|
oerrno = errno;
|
|
error("%s: link %.100s to %.100s: %s", __func__,
|
|
filename, back, strerror(errno));
|