From 2b25f93f7ad09ec1c2b93e07ceae577b56b44a80 Mon Sep 17 00:00:00 2001 From: Ulrich Drepper Date: Tue, 21 Jul 1998 10:36:59 +0000 Subject: Update. 1998-07-20 Jose M. Moya * hurd/hurdmsg.c (_S_msg_get_env_variable): Copy getenv return value. 1998-07-20 Roland McGrath * sysdeps/mach/hurd/getdomain.c: New file. * sysdeps/mach/hurd/setdomain.c: New file. 1998-07-20 Roland McGrath * sysdeps/unix/bsd/sigsuspend.c: Define __sigsuspend with sigsuspend as a weak alias. --- hurd/hurdmsg.c | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) (limited to 'hurd/hurdmsg.c') diff --git a/hurd/hurdmsg.c b/hurd/hurdmsg.c index 5fac8d4cd3..2348550611 100644 --- a/hurd/hurdmsg.c +++ b/hurd/hurdmsg.c @@ -315,14 +315,24 @@ _S_msg_get_env_variable (mach_port_t msgport, char *variable, char **data, mach_msg_type_number_t *datalen) { + error_t err; + mach_msg_type_number_t valuelen; const char *value = getenv (variable); if (value == NULL) return ENOENT; - /* XXX this pointer might become invalid */ - *data = value; - *datalen = strlen (value); + valuelen = strlen (value); + if (valuelen > *datalen) + { + if (err = __vm_allocate (__mach_task_self (), + (vm_address_t *) data, valuelen, 1)) + return err; + } + + memcpy (*data, value, valuelen); + *datalen = valuelen; + return 0; } -- cgit v1.2.3