aboutsummaryrefslogtreecommitdiff
path: root/src/testbed/gnunet-helper-testbed.c
diff options
context:
space:
mode:
authorSree Harsha Totakura <totakura@in.tum.de>2013-11-11 09:48:09 +0000
committerSree Harsha Totakura <totakura@in.tum.de>2013-11-11 09:48:09 +0000
commit366d1d323166b84106692554564c8321f825fe95 (patch)
tree802ac9c1b00338f7f12e6eb9799cfa7f8f213285 /src/testbed/gnunet-helper-testbed.c
parent846771a80f56a41803c8b5b5bf165c3b06be7677 (diff)
downloadgnunet-366d1d323166b84106692554564c8321f825fe95.tar.gz
gnunet-366d1d323166b84106692554564c8321f825fe95.zip
-fix leaks with putenv()
Diffstat (limited to 'src/testbed/gnunet-helper-testbed.c')
-rw-r--r--src/testbed/gnunet-helper-testbed.c27
1 files changed, 16 insertions, 11 deletions
diff --git a/src/testbed/gnunet-helper-testbed.c b/src/testbed/gnunet-helper-testbed.c
index 510b42dba..6b080cfa9 100644
--- a/src/testbed/gnunet-helper-testbed.c
+++ b/src/testbed/gnunet-helper-testbed.c
@@ -338,7 +338,7 @@ tokenizer_cb (void *cls, void *client,
338 char *config; 338 char *config;
339 char *xconfig; 339 char *xconfig;
340 char *evstr; 340 char *evstr;
341 char *str; 341 //char *str;
342 size_t config_size; 342 size_t config_size;
343 uLongf ul_config_size; 343 uLongf ul_config_size;
344 size_t xconfig_size; 344 size_t xconfig_size;
@@ -407,7 +407,8 @@ tokenizer_cb (void *cls, void *client,
407 if (NULL != evstr) 407 if (NULL != evstr)
408 { 408 {
409#if WINDOWS 409#if WINDOWS
410 GNUNET_break (0 == putenv (GNUNET_TESTING_PREFIX "=")); 410 static char *evar = GNUNET_TESTING_PREFIX "=";
411 GNUNET_break (0 == putenv (evar));
411#else 412#else
412 GNUNET_break (0 == unsetenv (GNUNET_TESTING_PREFIX)); 413 GNUNET_break (0 == unsetenv (GNUNET_TESTING_PREFIX));
413#endif 414#endif
@@ -417,11 +418,11 @@ tokenizer_cb (void *cls, void *client,
417 NULL); 418 NULL);
418 if (NULL != evstr) 419 if (NULL != evstr)
419 { 420 {
420 GNUNET_assert (0 < GNUNET_asprintf (&str, 421 static char evar[2* PATH_MAX];
422
423 GNUNET_assert (0 < GNUNET_snprintf (evar, sizeof (evar),
421 GNUNET_TESTING_PREFIX "=%s", evstr)); 424 GNUNET_TESTING_PREFIX "=%s", evstr));
422 putenv (str); 425 putenv (evar);
423 /* do not free str will be consumed by putenv */
424 str = NULL;
425 /* do not free evstr */ 426 /* do not free evstr */
426 evstr = NULL; 427 evstr = NULL;
427 } 428 }
@@ -444,11 +445,15 @@ tokenizer_cb (void *cls, void *client,
444 } 445 }
445 LOG_DEBUG ("Staring testbed with config: %s\n", config); 446 LOG_DEBUG ("Staring testbed with config: %s\n", config);
446 binary = GNUNET_OS_get_libexec_binary_path ("gnunet-service-testbed"); 447 binary = GNUNET_OS_get_libexec_binary_path ("gnunet-service-testbed");
447 /* expose testbed configuration through env variable */ 448 {
448 GNUNET_assert (0 < GNUNET_asprintf (&evstr, "%s=%s", ENV_TESTBED_CONFIG, config)); 449 static char evar[2 * PATH_MAX];
449 GNUNET_assert (0 == putenv (evstr)); /* Do NOT free evstr; it is consumed by 450
450 putenv */ 451 /* expose testbed configuration through env variable */
451 evstr = NULL; 452 GNUNET_assert (0 < GNUNET_snprintf (evar, sizeof (evar),
453 "%s=%s", ENV_TESTBED_CONFIG, config));
454 GNUNET_assert (0 == putenv (evar));
455 evstr = NULL;
456 }
452 testbed = 457 testbed =
453 GNUNET_OS_start_process (PIPE_CONTROL, 458 GNUNET_OS_start_process (PIPE_CONTROL,
454 GNUNET_OS_INHERIT_STD_ERR /*verbose? */ , NULL, 459 GNUNET_OS_INHERIT_STD_ERR /*verbose? */ , NULL,