Compare commits

...

2 Commits

Author SHA1 Message Date
27b4c624b3 env init probe 2024-05-14 21:30:43 +03:00
c2e418676b minor fix README.md 2024-05-14 18:45:35 +03:00
4 changed files with 51 additions and 14 deletions

View File

@ -25,13 +25,18 @@ New Versions
------------
https://prj.zxalexis.ru/gitea/zx/bforce
Copyright (c) 1998-2000 Alexander Belkin, Moscow, Russia.
(c) 2004-2007 Evgeniy Kozhuhovskiy 2:450/256, 2:450/267
(c) 2005 Andrey Slusar
(c) 2006-2016 Max N. Boyarov
(c) 2007-2008 Sergey Babitch
(c) 2011-2014 Sergey Dorofeev
(c) 2014 Alexander Skovpen
(c) 2024 Alexey Khromov
##Older Sources
-------------
https://github.com/zotrix/binkleyforce/
https://sourceforge.net/projects/binkforce/
Copyright <br>
> (c) 1998-2000 Alexander Belkin, Moscow, Russia.<br>
> (c) 2004-2007 Evgeniy Kozhuhovskiy 2:450/256, 2:450/267<br>
> (c) 2005 Andrey Slusar<br>
> (c) 2006-2016 Max N. Boyarov<br>
> (c) 2007-2008 Sergey Babitch<br>
> (c) 2011-2014 Sergey Dorofeev<br>
> (c) 2014 Alexander Skovpen<br>
> (c) 2024 Alexey Khromov<br>

View File

@ -20,6 +20,8 @@
#include "nodelist.h"
#include "session.h"
char ** sessenv;
/* PID of our child process (if use fork) */
pid_t child_pid = 0;
@ -254,6 +256,10 @@ int main(int argc, char *argv[], char *envp[])
int ch = 0;
opts.runmode = MODE_UNDEFINED;
int i = 0;
int argsz = 0;
memset(&opts, '\0', sizeof(s_bforce_opts));
// parsing
@ -453,7 +459,7 @@ int main(int argc, char *argv[], char *envp[])
/* Reopen log file if it was defined in config */
if( log_reopen(log_getfilename(LOG_FILE_SESSION), NULL, NULL) )
{
log("can't continue without logging");
DEB((D_CONFIG, "can't continue without logging"));
gotoexit(BFERR_FATALERROR);
}
@ -461,6 +467,21 @@ int main(int argc, char *argv[], char *envp[])
//snprintf(runmode_str, 20, "Run mode: %d", opts.runmode);
//log(runmode_str);
/* Init environment table for childs */
argsz = 4096;
//argsz = sysconf(_SC_ARG_MAX);
DEB((D_CONFIG, "Limits: %d\n",argsz));
sessenv = malloc(sizeof(sessenv)*argsz);
sessenv[0] = NULL;
i=0;
while (envp[i]) {
sessenv[i] = malloc(strlen(envp[i])+2);
strcpy(sessenv[i], envp[i]);
sessenv[i++] = NULL;
DEB((D_FREE, "session ENV: %s\n", sessenv[(i-1)]));
}
switch( opts.runmode )
{
case MODE_DAEMON:
@ -488,6 +509,14 @@ default:
exit:
/* de-init sessenv */
i=0;
while(sessenv[i]) {
DEB((D_FREE, "De-init session ENV: %s\n", sessenv[(i)]));
free(sessenv[i]);
}
free(sessenv);
deinit_conf();
deinit_opts(&opts);

View File

@ -82,10 +82,10 @@ void exec_options_init(s_exec_options *eopt)
eopt->umask = EXEC_DEFAULT_UMASK;
eopt->envp[0] = NULL;
while(environ[i]) {
log("EXEC: Added ENV variable: %s\n", environ[i]);
eopt->envp[i] = xmalloc(strlen(environ[i]) + 2);
sprintf(eopt->envp[i], environ[i++]);
while(sessenv[i]) {
log("EXEC: Added ENV variable: %s\n", sessenv[i]);
eopt->envp[i] = xmalloc(strlen(sessenv[i]) + 2);
sprintf(eopt->envp[i], sessenv[i++]);
eopt->envp[i] = NULL;
}

View File

@ -175,6 +175,9 @@ typedef struct {
#define MODE_ANSWER (5)
#define MODE_DAEMON (6)
/* Environment for use with external tools as default */
extern char ** sessenv;
/*
* Global variables