X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=compat%2Fsetenv.c;h=b7d76785980b81a6f1057d678d34a732f45ca4cd;hb=HEAD;hp=94acd2da9e2e95f9f9a72061d9575de6079dcaec;hpb=e40b61fb6bd2e0ed2dc4799096fcf4c828c28d6d;p=git.git diff --git a/compat/setenv.c b/compat/setenv.c index 94acd2da..b7d76785 100644 --- a/compat/setenv.c +++ b/compat/setenv.c @@ -16,7 +16,7 @@ int gitsetenv(const char *name, const char *value, int replace) namelen = strlen(name); valuelen = strlen(value); - envstr = malloc((namelen + valuelen + 2) * sizeof(char)); + envstr = malloc((namelen + valuelen + 2)); if (!envstr) return -1; memcpy(envstr, name, namelen); @@ -25,7 +25,11 @@ int gitsetenv(const char *name, const char *value, int replace) envstr[namelen + valuelen + 1] = 0; out = putenv(envstr); + /* putenv(3) makes the argument string part of the environment, + * and changing that string modifies the environment --- which + * means we do not own that storage anymore. Do not free + * envstr. + */ - free(envstr); return out; }