Add tests for '=' in names and values.

2003-08-07  Matthias Clasen  <maclas@gmx.de>

	* tests/env-test.c: Add tests for '=' in names and values.

	* glib/gutils.c (g_setenv, g_unsetenv): Check that the variable name doesn't contain '='. Add a
	declaration for environ.  (#119338)
This commit is contained in:
Matthias Clasen
2003-08-07 21:51:38 +00:00
committed by Matthias Clasen
parent 4d2921959e
commit 96838a7a88
8 changed files with 76 additions and 4 deletions

View File

@@ -34,6 +34,7 @@
#endif
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <glib.h>
@@ -42,6 +43,16 @@
#include <unistd.h>
#endif
static void
log (const gchar *log_domain,
GLogLevelFlags log_level,
const gchar *message,
gpointer user_data)
{
/* Silence g_assert () and friends.
*/
}
int
main (int argc, char *argv[])
{
@@ -51,6 +62,8 @@ main (int argc, char *argv[])
gchar *value1 = "works";
gchar *value2 = "again";
g_log_set_handler ("GLib", G_LOG_LEVEL_CRITICAL, log, NULL);
data = g_getenv (variable);
g_assert (data == NULL && "TEST_G_SETENV already set");
@@ -81,5 +94,22 @@ main (int argc, char *argv[])
data = g_getenv (variable);
g_assert (data == NULL && "g_unsetenv() doesn't work");
result = g_setenv ("foo=bar", "baz", TRUE);
g_assert (!result && "g_setenv() accepts '=' in names");
result = g_setenv ("foo", "bar=baz", TRUE);
g_assert (result && "g_setenv() doesn't accept '=' in values");
data = g_getenv ("foo=bar");
g_assert (strcmp (data, "baz") == 0 && "g_getenv() doesn't support '=' in names");
data = g_getenv ("foo");
g_assert (strcmp (data, "bar=baz") == 0 && "g_getenv() doesn't support '=' in values");
g_unsetenv ("foo=bar");
data = g_getenv ("foo");
g_assert (data != NULL && "g_unsetenv() accepts '=' in names");
g_unsetenv ("foo");
data = g_getenv ("foo");
g_assert (data == NULL && "g_unsetenv() doesn't support '=' in values");
return 0;
}