static char * env_block(const struct env_set *es) { char force_path[256]; char *sysroot = get_win_sys_path(); if (!openvpn_snprintf(force_path, sizeof(force_path), "PATH=%s\\System32;%s;%s\\System32\\Wbem", sysroot, sysroot, sysroot)) { msg(M_WARN, "env_block: default path truncated to %s", force_path); } if (es) { struct env_item *e; char *ret; char *p; size_t nchars = 1; bool path_seen = false; for (e = es->list; e != NULL; e = e->next) { nchars += strlen(e->string) + 1; } nchars += strlen(force_path)+1; ret = (char *) malloc(nchars); check_malloc_return(ret); p = ret; for (e = es->list; e != NULL; e = e->next) { if (env_allowed(e->string)) { strcpy(p, e->string); p += strlen(e->string) + 1; } if (strncmp(e->string, "PATH=", 5 ) == 0) { path_seen = true; } } /* make sure PATH is set */ if (!path_seen) { msg( M_INFO, "env_block: add %s", force_path ); strcpy( p, force_path ); p += strlen(force_path) + 1; } *p = '\0'; return ret; } else { return NULL; } }
static char * env_block (const struct env_set *es) { if (es) { struct env_item *e; char *ret; char *p; size_t nchars = 1; for (e = es->list; e != NULL; e = e->next) nchars += strlen (e->string) + 1; ret = (char *) malloc (nchars); check_malloc_return (ret); p = ret; for (e = es->list; e != NULL; e = e->next) { if (env_allowed (e->string)) { strcpy (p, e->string); p += strlen (e->string) + 1; } } *p = '\0'; return ret; } else return NULL; }
static char * env_block (const struct env_set *es) { char * force_path = "PATH=C:\\Windows\\System32;C:\\WINDOWS;C:\\WINDOWS\\System32\\Wbem"; if (es) { struct env_item *e; char *ret; char *p; size_t nchars = 1; bool path_seen = false; for (e = es->list; e != NULL; e = e->next) nchars += strlen (e->string) + 1; nchars += strlen(force_path)+1; ret = (char *) malloc (nchars); check_malloc_return (ret); p = ret; for (e = es->list; e != NULL; e = e->next) { if (env_allowed (e->string)) { strcpy (p, e->string); p += strlen (e->string) + 1; } if ( strncmp(e->string, "PATH=", 5 ) == 0 ) path_seen = true; } /* make sure PATH is set */ if ( !path_seen ) { msg( M_INFO, "env_block: add %s", force_path ); strcpy( p, force_path ); p += strlen(force_path) + 1; } *p = '\0'; return ret; } else return NULL; }