From: Junio C Hamano <gitster@pobox.com>
To: git@vger.kernel.org
Subject: [PATCH v2 12/12] Revert "fsck: warn about symlink pointing inside a gitdir"
Date: Fri, 24 May 2024 12:47:15 -0700 [thread overview]
Message-ID: <20240524194715.695916-13-gitster@pobox.com> (raw)
In-Reply-To: <20240524194715.695916-1-gitster@pobox.com>
This reverts commit a33fea08 (fsck: warn about symlink pointing
inside a gitdir, 2024-04-10), which warns against symbolic links
commonly created by git-annex.
---
Documentation/fsck-msgids.txt | 12 --------
fsck.c | 56 -----------------------------------
fsck.h | 12 --------
t/t1450-fsck.sh | 37 -----------------------
4 files changed, 117 deletions(-)
diff --git a/Documentation/fsck-msgids.txt b/Documentation/fsck-msgids.txt
index b06ec385af..12eae8a222 100644
--- a/Documentation/fsck-msgids.txt
+++ b/Documentation/fsck-msgids.txt
@@ -157,18 +157,6 @@
`nullSha1`::
(WARN) Tree contains entries pointing to a null sha1.
-`symlinkPointsToGitDir`::
- (WARN) Symbolic link points inside a gitdir.
-
-`symlinkTargetBlob`::
- (ERROR) A non-blob found instead of a symbolic link's target.
-
-`symlinkTargetLength`::
- (WARN) Symbolic link target longer than maximum path length.
-
-`symlinkTargetMissing`::
- (ERROR) Unable to read symbolic link target's blob.
-
`treeNotSorted`::
(ERROR) A tree is not properly sorted.
diff --git a/fsck.c b/fsck.c
index b85868e122..47eaeedd70 100644
--- a/fsck.c
+++ b/fsck.c
@@ -636,8 +636,6 @@ static int fsck_tree(const struct object_id *tree_oid,
retval += report(options, tree_oid, OBJ_TREE,
FSCK_MSG_MAILMAP_SYMLINK,
".mailmap is a symlink");
- oidset_insert(&options->symlink_targets_found,
- entry_oid);
}
if ((backslash = strchr(name, '\\'))) {
@@ -1230,56 +1228,6 @@ static int fsck_blob(const struct object_id *oid, const char *buf,
}
}
- if (oidset_contains(&options->symlink_targets_found, oid)) {
- const char *ptr = buf;
- const struct object_id *reported = NULL;
-
- oidset_insert(&options->symlink_targets_done, oid);
-
- if (!buf || size > PATH_MAX) {
- /*
- * A missing buffer here is a sign that the caller found the
- * blob too gigantic to load into memory. Let's just consider
- * that an error.
- */
- return report(options, oid, OBJ_BLOB,
- FSCK_MSG_SYMLINK_TARGET_LENGTH,
- "symlink target too long");
- }
-
- while (!reported && ptr) {
- const char *p = ptr;
- char c, *slash = strchrnul(ptr, '/');
- char *backslash = memchr(ptr, '\\', slash - ptr);
-
- c = *slash;
- *slash = '\0';
-
- while (!reported && backslash) {
- *backslash = '\0';
- if (is_ntfs_dotgit(p))
- ret |= report(options, reported = oid, OBJ_BLOB,
- FSCK_MSG_SYMLINK_POINTS_TO_GIT_DIR,
- "symlink target points to git dir");
- *backslash = '\\';
- p = backslash + 1;
- backslash = memchr(p, '\\', slash - p);
- }
- if (!reported && is_ntfs_dotgit(p))
- ret |= report(options, reported = oid, OBJ_BLOB,
- FSCK_MSG_SYMLINK_POINTS_TO_GIT_DIR,
- "symlink target points to git dir");
-
- if (!reported && is_hfs_dotgit(ptr))
- ret |= report(options, reported = oid, OBJ_BLOB,
- FSCK_MSG_SYMLINK_POINTS_TO_GIT_DIR,
- "symlink target points to git dir");
-
- *slash = c;
- ptr = c ? slash + 1 : NULL;
- }
- }
-
return ret;
}
@@ -1371,10 +1319,6 @@ int fsck_finish(struct fsck_options *options)
FSCK_MSG_GITATTRIBUTES_MISSING, FSCK_MSG_GITATTRIBUTES_BLOB,
options, ".gitattributes");
- ret |= fsck_blobs(&options->symlink_targets_found, &options->symlink_targets_done,
- FSCK_MSG_SYMLINK_TARGET_MISSING, FSCK_MSG_SYMLINK_TARGET_BLOB,
- options, "<symlink-target>");
-
return ret;
}
diff --git a/fsck.h b/fsck.h
index 130fa8d8f9..fcecf4101c 100644
--- a/fsck.h
+++ b/fsck.h
@@ -63,8 +63,6 @@ enum fsck_msg_type {
FUNC(GITATTRIBUTES_LARGE, ERROR) \
FUNC(GITATTRIBUTES_LINE_LENGTH, ERROR) \
FUNC(GITATTRIBUTES_BLOB, ERROR) \
- FUNC(SYMLINK_TARGET_MISSING, ERROR) \
- FUNC(SYMLINK_TARGET_BLOB, ERROR) \
/* warnings */ \
FUNC(EMPTY_NAME, WARN) \
FUNC(FULL_PATHNAME, WARN) \
@@ -74,8 +72,6 @@ enum fsck_msg_type {
FUNC(NULL_SHA1, WARN) \
FUNC(ZERO_PADDED_FILEMODE, WARN) \
FUNC(NUL_IN_COMMIT, WARN) \
- FUNC(SYMLINK_TARGET_LENGTH, WARN) \
- FUNC(SYMLINK_POINTS_TO_GIT_DIR, WARN) \
/* infos (reported as warnings, but ignored by default) */ \
FUNC(BAD_FILEMODE, INFO) \
FUNC(GITMODULES_PARSE, INFO) \
@@ -143,8 +139,6 @@ struct fsck_options {
struct oidset gitmodules_done;
struct oidset gitattributes_found;
struct oidset gitattributes_done;
- struct oidset symlink_targets_found;
- struct oidset symlink_targets_done;
kh_oid_map_t *object_names;
};
@@ -154,8 +148,6 @@ struct fsck_options {
.gitmodules_done = OIDSET_INIT, \
.gitattributes_found = OIDSET_INIT, \
.gitattributes_done = OIDSET_INIT, \
- .symlink_targets_found = OIDSET_INIT, \
- .symlink_targets_done = OIDSET_INIT, \
.error_func = fsck_error_function \
}
#define FSCK_OPTIONS_STRICT { \
@@ -164,8 +156,6 @@ struct fsck_options {
.gitmodules_done = OIDSET_INIT, \
.gitattributes_found = OIDSET_INIT, \
.gitattributes_done = OIDSET_INIT, \
- .symlink_targets_found = OIDSET_INIT, \
- .symlink_targets_done = OIDSET_INIT, \
.error_func = fsck_error_function, \
}
#define FSCK_OPTIONS_MISSING_GITMODULES { \
@@ -174,8 +164,6 @@ struct fsck_options {
.gitmodules_done = OIDSET_INIT, \
.gitattributes_found = OIDSET_INIT, \
.gitattributes_done = OIDSET_INIT, \
- .symlink_targets_found = OIDSET_INIT, \
- .symlink_targets_done = OIDSET_INIT, \
.error_func = fsck_error_cb_print_missing_gitmodules, \
}
diff --git a/t/t1450-fsck.sh b/t/t1450-fsck.sh
index 5669872bc8..de0f6d5e7f 100755
--- a/t/t1450-fsck.sh
+++ b/t/t1450-fsck.sh
@@ -1023,41 +1023,4 @@ test_expect_success 'fsck error on gitattributes with excessive size' '
test_cmp expected actual
'
-test_expect_success 'fsck warning on symlink target with excessive length' '
- symlink_target=$(printf "pattern %032769d" 1 | git hash-object -w --stdin) &&
- test_when_finished "remove_object $symlink_target" &&
- tree=$(printf "120000 blob %s\t%s\n" $symlink_target symlink | git mktree) &&
- test_when_finished "remove_object $tree" &&
- cat >expected <<-EOF &&
- warning in blob $symlink_target: symlinkTargetLength: symlink target too long
- EOF
- git fsck --no-dangling >actual 2>&1 &&
- test_cmp expected actual
-'
-
-test_expect_success 'fsck warning on symlink target pointing inside git dir' '
- gitdir=$(printf ".git" | git hash-object -w --stdin) &&
- ntfs_gitdir=$(printf "GIT~1" | git hash-object -w --stdin) &&
- hfs_gitdir=$(printf ".${u200c}git" | git hash-object -w --stdin) &&
- inside_gitdir=$(printf "nested/.git/config" | git hash-object -w --stdin) &&
- benign_target=$(printf "legit/config" | git hash-object -w --stdin) &&
- tree=$(printf "120000 blob %s\t%s\n" \
- $benign_target benign_target \
- $gitdir gitdir \
- $hfs_gitdir hfs_gitdir \
- $inside_gitdir inside_gitdir \
- $ntfs_gitdir ntfs_gitdir |
- git mktree) &&
- for o in $gitdir $ntfs_gitdir $hfs_gitdir $inside_gitdir $benign_target $tree
- do
- test_when_finished "remove_object $o" || return 1
- done &&
- printf "warning in blob %s: symlinkPointsToGitDir: symlink target points to git dir\n" \
- $gitdir $hfs_gitdir $inside_gitdir $ntfs_gitdir |
- sort >expected &&
- git fsck --no-dangling >actual 2>&1 &&
- sort actual >actual.sorted &&
- test_cmp expected actual.sorted
-'
-
test_done
--
2.45.1-246-gb9cfe4845c
prev parent reply other threads:[~2024-05-24 19:47 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-05-24 19:47 [PATCH v2 00/12] Fix various overly aggressive protections in 2.45.1 and friends Junio C Hamano
2024-05-24 19:47 ` [PATCH v2 01/12] send-email: drop FakeTerm hack Junio C Hamano
2024-05-24 19:47 ` [PATCH v2 02/12] send-email: avoid creating more than one Term::ReadLine object Junio C Hamano
2024-05-24 19:47 ` [PATCH v2 03/12] ci: drop mention of BREW_INSTALL_PACKAGES variable Junio C Hamano
2024-05-24 19:47 ` [PATCH v2 04/12] ci: avoid bare "gcc" for osx-gcc job Junio C Hamano
2024-05-24 19:47 ` [PATCH v2 05/12] ci: stop installing "gcc-13" for osx-gcc Junio C Hamano
2024-05-24 19:47 ` [PATCH v2 06/12] hook: plug a new memory leak Junio C Hamano
2024-05-24 19:47 ` [PATCH v2 07/12] init: use the correct path of the templates directory again Junio C Hamano
2024-05-24 19:47 ` [PATCH v2 08/12] Revert "core.hooksPath: add some protection while cloning" Junio C Hamano
2024-05-24 19:47 ` [PATCH v2 09/12] tests: verify that `clone -c core.hooksPath=/dev/null` works again Junio C Hamano
2024-05-24 19:47 ` [PATCH v2 10/12] clone: drop the protections where hooks aren't run Junio C Hamano
2024-05-24 19:47 ` [PATCH v2 11/12] Revert "Add a helper function to compare file contents" Junio C Hamano
2024-05-24 19:47 ` Junio C Hamano [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20240524194715.695916-13-gitster@pobox.com \
--to=gitster@pobox.com \
--cc=git@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).