[clang] [clang-format] Add null-terminated path option (#123921) (PR #123926)
via cfe-commits
cfe-commits at lists.llvm.org
Wed Jan 22 02:47:58 PST 2025
llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-clang-format
Author: Nikolaos Chatzikonstantinou (createyourpersonalaccount)
<details>
<summary>Changes</summary>
This makes the `git clang-format` tool compose nicely with other shell utilities in case of maliciously (or innocently) crafted filenames.
---
Full diff: https://github.com/llvm/llvm-project/pull/123926.diff
1 Files Affected:
- (modified) clang/tools/clang-format/git-clang-format (+16-3)
``````````diff
diff --git a/clang/tools/clang-format/git-clang-format b/clang/tools/clang-format/git-clang-format
index da271bbe6e3a07..04c49e8910d0ac 100755
--- a/clang/tools/clang-format/git-clang-format
+++ b/clang/tools/clang-format/git-clang-format
@@ -205,6 +205,12 @@ def main():
"commits"
),
)
+ p.add_argument(
+ "-0",
+ "--null",
+ action="store_true",
+ help="print the affected paths with null-terminated characters",
+ )
# We gather all the remaining positional arguments into 'args' since we need
# to use some heuristics to determine whether or not <commit> was present.
# However, to print pretty messages, we make use of metavar and help.
@@ -261,11 +267,11 @@ def main():
"ignored by clang-format):"
)
for filename in ignored_files:
- print(" %s" % filename)
+ print_filename(filename, opts.null)
if changed_lines:
print("Running clang-format on the following files:")
for filename in changed_lines:
- print(" %s" % filename)
+ print_filename(filename, opts.null)
if not changed_lines:
if opts.verbose >= 0:
@@ -304,7 +310,7 @@ def main():
if (opts.verbose >= 0 and not opts.patch) or opts.verbose >= 1:
print("changed files:")
for filename in changed_files:
- print(" %s" % filename)
+ print_filename(filename, opts.null)
return 1
@@ -869,5 +875,12 @@ def convert_string(bytes_input):
return str(bytes_input)
+def print_filename(filename, null=False):
+ if null:
+ print(filename + "\0", end="")
+ else:
+ print(" %s" % filename)
+
+
if __name__ == "__main__":
sys.exit(main())
``````````
</details>
https://github.com/llvm/llvm-project/pull/123926
More information about the cfe-commits
mailing list