diff options
-rw-r--r-- | commit.c | 3 | ||||
-rwxr-xr-x | t/t3900-i18n-commit.sh | 6 |
2 files changed, 9 insertions, 0 deletions
@@ -855,6 +855,9 @@ int commit_tree(const struct strbuf *msg, unsigned char *tree, assert_sha1_type(tree, OBJ_TREE); + if (memchr(msg->buf, '\0', msg->len)) + return error("a NUL byte in commit log message not allowed."); + /* Not having i18n.commitencoding is the same as having utf-8 */ encoding_is_utf8 = is_encoding_utf8(git_commit_encoding); diff --git a/t/t3900-i18n-commit.sh b/t/t3900-i18n-commit.sh index 1f62c151b..d48a7c002 100755 --- a/t/t3900-i18n-commit.sh +++ b/t/t3900-i18n-commit.sh @@ -34,6 +34,12 @@ test_expect_success 'no encoding header for base case' ' test z = "z$E" ' +test_expect_failure 'UTF-16 refused because of NULs' ' + echo UTF-16 >F && + git commit -a -F "$TEST_DIRECTORY"/t3900/UTF-16.txt +' + + for H in ISO8859-1 eucJP ISO-2022-JP do test_expect_success "$H setup" ' |