{"thread":{"id":"14844","subject":"[PATCH] Teach fsck and prune that tmp_obj_ file names may not be 14 bytes long","startedAt":"2008-08-05T18:01:50Z","lastAt":"2008-08-05T19:07:22Z","messageCount":2,"participants":["Brandon Casey","Shawn O. Pearce"],"isPatch":true,"patchVersion":1,"patchTotal":null},"messages":[{"id":"86284","messageId":"I1vUBkF5DO9PiWvc0SRIfOHigaNX9d2kNHLqpAUceLenX-_BWPAliQ@cipher.nrlssc.navy.mil","threadId":"14844","inReplyTo":null,"subject":"[PATCH] Teach fsck and prune that tmp_obj_ file names may not be 14 bytes long","fromName":"Brandon Casey","fromEmail":"casey@nrlssc.navy.mil","sentAt":"2008-08-05T18:01:50Z","receivedAt":"2008-08-05T18:01:50Z","isPatch":true,"sender":{"key":"drafnel@gmail.com","avatar":"https://avatars.githubusercontent.com/u/921167?v=4"},"body":"As Shawn pointed out, not all temporary file creation routines can\nensure that the generated temporary file is of a certain length.\ne.g. Java's createTempFile(prefix, suffix). So just depend on the\nprefix 'tmp_obj_' for detection.\n\nUpdate prune, and fix the \"fix\" introduced by a08c53a1 :)\n\nSigned-off-by: Brandon \"appendixless\" Casey <casey@nrlssc.navy.mil>\n---\n builtin-fsck.c  |    2 +-\n builtin-prune.c |    9 ++++-----\n 2 files changed, 5 insertions(+), 6 deletions(-)\n\ndiff --git a/builtin-fsck.c b/builtin-fsck.c\nindex 6eb7da8..d3f3de9 100644\n--- a/builtin-fsck.c\n+++ b/builtin-fsck.c\n@@ -385,7 +385,7 @@ static void fsck_dir(int i, char *path)\n \t\t\tadd_sha1_list(sha1, DIRENT_SORT_HINT(de));\n \t\t\tcontinue;\n \t\t}\n-\t\tif (prefixcmp(de->d_name, \"tmp_obj_\"))\n+\t\tif (!prefixcmp(de->d_name, \"tmp_obj_\"))\n \t\t\tcontinue;\n \t\tfprintf(stderr, \"bad sha1 file: %s/%s\\n\", path, de->d_name);\n \t}\ndiff --git a/builtin-prune.c b/builtin-prune.c\nindex 947de8c..c767a0a 100644\n--- a/builtin-prune.c\n+++ b/builtin-prune.c\n@@ -69,11 +69,6 @@ static int prune_dir(int i, char *path)\n \t\t\tif (de->d_name[0] != '.')\n \t\t\t\tbreak;\n \t\t\tcontinue;\n-\t\tcase 14:\n-\t\t\tif (prefixcmp(de->d_name, \"tmp_obj_\"))\n-\t\t\t\tbreak;\n-\t\t\tprune_tmp_object(path, de->d_name);\n-\t\t\tcontinue;\n \t\tcase 38:\n \t\t\tsprintf(name, \"%02x\", i);\n \t\t\tmemcpy(name+2, de->d_name, len+1);\n@@ -90,6 +85,10 @@ static int prune_dir(int i, char *path)\n \t\t\tprune_object(path, de->d_name, sha1);\n \t\t\tcontinue;\n \t\t}\n+\t\tif (!prefixcmp(de->d_name, \"tmp_obj_\")) {\n+\t\t\tprune_tmp_object(path, de->d_name);\n+\t\t\tcontinue;\n+\t\t}\n \t\tfprintf(stderr, \"bad sha1 file: %s/%s\\n\", path, de->d_name);\n \t}\n \tif (!show_only)\n-- \n1.5.6.2\n"},{"id":"86286","messageId":"20080805190722.GC27207@spearce.org","threadId":"14844","inReplyTo":"I1vUBkF5DO9PiWvc0SRIfOHigaNX9d2kNHLqpAUceLenX-_BWPAliQ@cipher.nrlssc.navy.mil","subject":"Re: [PATCH] Teach fsck and prune that tmp_obj_ file names may not be 14 bytes long","fromName":"Shawn O. Pearce","fromEmail":"spearce@spearce.org","sentAt":"2008-08-05T19:07:22Z","receivedAt":"2008-08-05T19:07:22Z","isPatch":true,"sender":{"key":"spearce@spearce.org","avatar":"https://avatars.githubusercontent.com/u/34844?v=4"},"body":"Brandon Casey <casey@nrlssc.navy.mil> wrote:\n> As Shawn pointed out, not all temporary file creation routines can\n> ensure that the generated temporary file is of a certain length.\n> e.g. Java's createTempFile(prefix, suffix). So just depend on the\n> prefix 'tmp_obj_' for detection.\n> \n> Update prune, and fix the \"fix\" introduced by a08c53a1 :)\n\nArrrrgh!  :-)\n\nThanks for cleaning up my mess.\n \n> Signed-off-by: Brandon \"appendixless\" Casey <casey@nrlssc.navy.mil>\n> ---\n>  builtin-fsck.c  |    2 +-\n>  builtin-prune.c |    9 ++++-----\n>  2 files changed, 5 insertions(+), 6 deletions(-)\n> \n> diff --git a/builtin-fsck.c b/builtin-fsck.c\n> index 6eb7da8..d3f3de9 100644\n> --- a/builtin-fsck.c\n> +++ b/builtin-fsck.c\n> @@ -385,7 +385,7 @@ static void fsck_dir(int i, char *path)\n>  \t\t\tadd_sha1_list(sha1, DIRENT_SORT_HINT(de));\n>  \t\t\tcontinue;\n>  \t\t}\n> -\t\tif (prefixcmp(de->d_name, \"tmp_obj_\"))\n> +\t\tif (!prefixcmp(de->d_name, \"tmp_obj_\"))\n>  \t\t\tcontinue;\n>  \t\tfprintf(stderr, \"bad sha1 file: %s/%s\\n\", path, de->d_name);\n>  \t}\n> diff --git a/builtin-prune.c b/builtin-prune.c\n> index 947de8c..c767a0a 100644\n> --- a/builtin-prune.c\n> +++ b/builtin-prune.c\n> @@ -69,11 +69,6 @@ static int prune_dir(int i, char *path)\n>  \t\t\tif (de->d_name[0] != '.')\n>  \t\t\t\tbreak;\n>  \t\t\tcontinue;\n> -\t\tcase 14:\n> -\t\t\tif (prefixcmp(de->d_name, \"tmp_obj_\"))\n> -\t\t\t\tbreak;\n> -\t\t\tprune_tmp_object(path, de->d_name);\n> -\t\t\tcontinue;\n>  \t\tcase 38:\n>  \t\t\tsprintf(name, \"%02x\", i);\n>  \t\t\tmemcpy(name+2, de->d_name, len+1);\n> @@ -90,6 +85,10 @@ static int prune_dir(int i, char *path)\n>  \t\t\tprune_object(path, de->d_name, sha1);\n>  \t\t\tcontinue;\n>  \t\t}\n> +\t\tif (!prefixcmp(de->d_name, \"tmp_obj_\")) {\n> +\t\t\tprune_tmp_object(path, de->d_name);\n> +\t\t\tcontinue;\n> +\t\t}\n>  \t\tfprintf(stderr, \"bad sha1 file: %s/%s\\n\", path, de->d_name);\n>  \t}\n>  \tif (!show_only)\n> -- \n> 1.5.6.2\n> \n\n-- \nShawn.\n"}]}