git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH v2 04/19] Disallow the empty string as an attribute name

From
Michael Haggerty <mhagger@alum.mit.edu>
Date
Jul 28, 2011, 04:46 UTC
Message-ID
<1311828418-2676-5-git-send-email-mhagger@alum.mit.edu>
In-Reply-To
<1311828418-2676-1-git-send-email-mhagger@alum.mit.edu>

Previously, it was possible to have a line like "file.txt =foo" in a .gitattribute file, after which an invocation like "git check-attr '' -- file.txt" would succeed. This patch disallows both constructs.

Please note that any existing .gitattributes file that tries to set an empty attribute will now trigger the error message "error: : not a valid attribute name" whereas previously the nonsense was allowed through.

Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
---
 attr.c                |    2 +-
 t/t0003-attributes.sh |    6 ++++++
 2 files changed, 7 insertions(+), 1 deletions(-)
diff --git a/attr.c b/attr.c
index 4a1244f..b1d1d6d 100644
--- a/attr.c
+++ b/attr.c
@@ -53,7 +53,7 @@ static int invalid_attr_name(const char *name, int namelen)
 	 * Attribute name cannot begin with '-' and must consist of
 	 * characters from [-A-Za-z0-9_.].
 	 */
-	if (*name == '-')
+	if (namelen <= 0 || *name == '-')
 		return -1;
 	while (namelen--) {
 		char ch = *name++;
diff --git a/t/t0003-attributes.sh b/t/t0003-attributes.sh
index ebbc755..8c76b79 100755
--- a/t/t0003-attributes.sh
+++ b/t/t0003-attributes.sh
@@ -42,6 +42,12 @@ test_expect_success 'setup' '
 
 '
 
+test_expect_success 'command line checks' '
+
+	test_must_fail git check-attr "" -- f
+
+'
+
 test_expect_success 'attribute test' '
 
 	attr_check f f &&
-- 
1.7.6.8.gd2879
Previous: Michael HaggertyNext: Michael Haggerty
Message 5 of 24 in “Add --all option to git-check-attr”
  1. 00/19 Add --all option to git-check-attrMichael Haggerty, Jul 28, 2011
  2. 01/19 doc: Add a link from gitattributes(5) to git-check-attr(1)Michael Haggerty, Jul 28, 2011
  3. 02/19 doc: Correct git_attr() calls in example codeMichael Haggerty, Jul 28, 2011
  4. 03/19 Remove anachronism from commentMichael Haggerty, Jul 28, 2011
  5. 04/19 Disallow the empty string as an attribute nameMichael Haggerty, Jul 28, 2011
  6. 05/19 git-check-attr: Add missing "&&"Michael Haggerty, Jul 28, 2011
  7. 06/19 git-check-attr: Add tests of command-line parsingMichael Haggerty, Jul 28, 2011
  8. 07/19 Provide access to the name attribute of git_attrMichael Haggerty, Jul 28, 2011
  9. 08/19 git-check-attr: Use git_attr_name()Michael Haggerty, Jul 28, 2011
  10. 09/19 Allow querying all attributes on a fileMichael Haggerty, Jul 28, 2011
  11. Junio C HamanoAug 2, 2011
  12. Michael HaggertyAug 4, 2011
  13. 10/19 git-check-attr: Extract a function output_attr()Michael Haggerty, Jul 28, 2011
  14. 11/19 git-check-attr: Introduce a new variableMichael Haggerty, Jul 28, 2011
  15. 12/19 git-check-attr: Extract a function error_with_usage()Michael Haggerty, Jul 28, 2011
  16. 13/19 git-check-attr: Handle each error separatelyMichael Haggerty, Jul 28, 2011
  17. 14/19 git-check-attr: Process command-line args more systematicallyMichael Haggerty, Jul 28, 2011
  18. 15/19 git-check-attr: Error out if no pathnames are specifiedMichael Haggerty, Jul 28, 2011
  19. 16/19 git-check-attr: Add an --all option to show all attributesMichael Haggerty, Jul 28, 2011
  20. 17/19 git-check-attr: Drive two tests using the same raw dataMichael Haggerty, Jul 28, 2011
  21. 18/19 git-check-attr: Fix command-line handling to match docsMichael Haggerty, Jul 28, 2011
  22. 19/19 Rename struct git_attr_check to git_attr_valueMichael Haggerty, Jul 28, 2011
  23. Junio C HamanoAug 2, 2011
  24. Michael HaggertyAug 4, 2011

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.