X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=compat%2Fsetenv.c;h=3a22ea7b751efb768d72afa2f97fd963e10eec7e;hb=992221d05e42ad9f65a88318ca6339aa1c39fc79;hp=94acd2da9e2e95f9f9a72061d9575de6079dcaec;hpb=423325a2d24638ddcc82ce47be5e40be550f4507;p=git.git diff --git a/compat/setenv.c b/compat/setenv.c index 94acd2da9..3a22ea7b7 100644 --- a/compat/setenv.c +++ b/compat/setenv.c @@ -1,5 +1,4 @@ -#include -#include +#include "../git-compat-util.h" int gitsetenv(const char *name, const char *value, int replace) { @@ -16,7 +15,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 +24,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; }