Andrew's git
/
gitweb.git
/ diff
summary
|
log
|
commit
| diff |
tree
commit
grep
author
committer
pickaxe
?
re
config.c:store_write_pair(): don't read the byte before a malloc'd buffer.
author
Jim Meyering
<jim@meyering.net>
Sat, 8 Dec 2007 15:48:05 +0000
(16:48 +0100)
committer
Junio C Hamano
<gitster@pobox.com>
Sat, 8 Dec 2007 22:24:13 +0000
(14:24 -0800)
Signed-off-by: Jim Meyering <meyering@redhat.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
config.c
patch
|
blob
|
history
raw
|
patch
|
inline
| side by side (parent:
8e7425d
)
diff --git
a/config.c
b/config.c
index 56e99fc0f4750174299303b27237737e09549933..914cfce855d83d8a3404f315fd537f2f46da9d41 100644
(file)
--- a/
config.c
+++ b/
config.c
@@
-630,13
+630,19
@@
static int store_write_pair(int fd, const char* key, const char* value)
int length = strlen(key+store.baselen+1);
int quote = 0;
int length = strlen(key+store.baselen+1);
int quote = 0;
- /* Check to see if the value needs to be quoted. */
+ /*
+ * Check to see if the value needs to be surrounded with a dq pair.
+ * Note that problematic characters are always backslash-quoted; this
+ * check is about not losing leading or trailing SP and strings that
+ * follow beginning-of-comment characters (i.e. ';' and '#') by the
+ * configuration parser.
+ */
if (value[0] == ' ')
quote = 1;
for (i = 0; value[i]; i++)
if (value[i] == ';' || value[i] == '#')
quote = 1;
if (value[0] == ' ')
quote = 1;
for (i = 0; value[i]; i++)
if (value[i] == ';' || value[i] == '#')
quote = 1;
- if (value[i-1] == ' ')
+ if (
i &&
value[i-1] == ' ')
quote = 1;
if (write_in_full(fd, "\t", 1) != 1 ||
quote = 1;
if (write_in_full(fd, "\t", 1) != 1 ||