w32: Fix gnupg_unsetenv.

* common/sysutils.c (gnupg_unsetenv): Don't use nonstandard extension
of "NAME", but "NAME=".

--

Microsoft implementation of putenv works to remove an environment
variable by "NAME=".

POSIX doesn't say that putenv with "NAME=" has same effect.  GNU
implementation doesn't support this way for removal of environment
variable.

Signed-off-by: NIIBE Yutaka <gniibe@fsij.org>
This commit is contained in:
NIIBE Yutaka 2022-11-30 15:56:03 +09:00
parent de0c563f29
commit 8e8971403f
No known key found for this signature in database
GPG Key ID: 640114AF89DE6054
1 changed files with 11 additions and 2 deletions

View File

@ -1192,19 +1192,28 @@ gnupg_unsetenv (const char *name)
#else /*!HAVE_UNSETENV*/
{
char *buf;
int r;
if (!name)
{
gpg_err_set_errno (EINVAL);
return -1;
}
buf = xtrystrdup (name);
buf = strconcat (name, "=", NULL);
if (!buf)
return -1;
r = putenv (buf);
# ifdef HAVE_W32_SYSTEM
/* For Microsoft implementation, we can free the memory in this
use case. */
xfree (buf);
# else
# if __GNUC__
# warning no unsetenv - trying putenv but leaking memory.
# endif
return putenv (buf);
# endif
return r;
}
#endif /*!HAVE_UNSETENV*/
}