tempdir fixes

git-svn: trunk@559
remotes/push_mirror/metadata
Tomasz Kojm 21 years ago
parent 69435d2d14
commit 590135f999
  1. 2
      clamav-devel/AUTHORS
  2. 7
      clamav-devel/ChangeLog
  3. 14
      clamav-devel/clamd/clamd.c
  4. 6
      clamav-devel/clamscan/clamscan.c
  5. 10
      clamav-devel/clamscan/manager.c
  6. 1
      clamav-devel/clamscan/options.c
  7. 3
      clamav-devel/etc/clamav.conf
  8. 2
      clamav-devel/libclamav/clamav.h
  9. 22
      clamav-devel/libclamav/others.c
  10. 1
      clamav-devel/shared/cfgparser.c

@ -70,6 +70,7 @@ Michael Dankov <misha*btrc.ru>
Maxim Dounin <mdounin*rambler-co.ru>
Alejandro Dubrovsky <s328940*student.uq.edu.au>
Magnus Ekdahl <magnus*debian.org>
Jens Elkner <elkner*linofee.org>
Jason Englander <jason*englanders.cc>
Tony Finch <dot*dotat.at>
David Ford <david+cert*blue-labs.org>
@ -94,6 +95,7 @@ Joe Maimon <jmaimon*ttec.com>
Andrey V. Malyshev <amal*krasn.ru>
Everton da Silva Marques <everton*lab.ipaccess.diveo.net.br>
Andrey J. Melnikoff <temnota*kmv.ru>
Damian Menscher <menscher*uiuc.edu>
Denis De Messemacker <ddm*clamav.net>
Mark Mielke <mark*mark.mielke.cc>
Arkadiusz Miskiewicz <misiek*pld.org.pl>

@ -1,3 +1,10 @@
Thu May 13 02:22:50 CEST 2004 (tk)
----------------------------------
* libclamav: move putenv(TMPDIR) code from clamd to cl_settempdir()
* clamd: new directive LeaveTemporaryFiles (Debug no longer leaves temporary
files not removed)
* clamscan: respect --tempdir in libclamav; add --leave-temps
Wed May 12 15:25:47 BST 2004 (trog)
-----------------------------------
* libclamav/vba_extract.c: fix error path bug (spotted by Tomasz Klim)

@ -214,15 +214,11 @@ void clamd(struct optstruct *opt)
}
/* set the temporary dir */
if((cpt = cfgopt(copt, "TemporaryDirectory"))) {
var = (char *) mcalloc(8 + strlen(cpt->strarg), sizeof(char));
sprintf(var, "TMPDIR=%s", cpt->strarg);
if(!putenv(var))
logg("Setting %s as global temporary directory\n", cpt->strarg);
else
logg("!Can't set TMPDIR variable - insufficient space in the environment.\n");
/* DON'T CALL free(var) - see putenv(3) */
}
if((cpt = cfgopt(copt, "TemporaryDirectory")))
cl_settempdir(cpt->strarg, 0);
if(cfgopt(copt, "LeaveTemporaryFiles"))
cl_settempdir(NULL, 1);
/* load the database(s) */
if((cpt = cfgopt(copt, "DatabaseDirectory")) || (cpt = cfgopt(copt, "DataDirectory")))

@ -99,6 +99,12 @@ int clamscan(struct optstruct *opt)
if(optl(opt, "bell"))
bell = 1;
if(optl(opt, "tempdir"))
cl_settempdir(getargl(opt, "tempdir"), 0);
if(optl(opt, "leave-temps"))
cl_settempdir(NULL, 1);
/* initialize logger */
if(optc(opt, 'l')) {

@ -229,8 +229,7 @@ int scanmanager(const struct optstruct *opt)
}
#endif
if((tmpdir = getargl(opt, "tempdir")) == NULL)
tmpdir = getenv("TMPDIR");
tmpdir = getenv("TMPDIR");
if(tmpdir == NULL)
#ifdef P_tmpdir
@ -543,9 +542,7 @@ int scancompressed(const char *filename, struct cl_node *root, const struct pass
/* check write access */
if((tmpdir = getargl(opt, "tempdir")) == NULL)
/* njh@bandsman.co.uk: use TMPDIR as an alternative */
tmpdir = getenv("TMPDIR");
tmpdir = getenv("TMPDIR");
if(tmpdir == NULL)
#ifdef P_tmpdir
@ -745,8 +742,7 @@ int scandenied(const char *filename, struct cl_node *root, const struct passwd *
/* check write access */
if((tmpdir = getargl(opt, "tempdir")) == NULL)
tmpdir = getenv("TMPDIR");
tmpdir = getenv("TMPDIR");
if(tmpdir == NULL)
#ifdef P_tmpdir

@ -56,6 +56,7 @@ int main(int argc, char **argv)
{"debug", 0, 0, 0},
{"version", 0, 0, 'V'},
{"tempdir", 1, 0, 0},
{"leave-temps", 0, 0, 0},
{"config-file", 1, 0, 0}, /* clamdscan */
{"database", 1, 0, 'd'},
{"whole-file", 0, 0, 'w'}, /* not used */

@ -130,6 +130,9 @@ MaxDirectoryRecursion 15
# Enable debug messages in libclamav.
#Debug
# Do not remove temporary files (for debug purposes).
#LeaveTemporaryFiles
##
## Document scanning
##

@ -144,6 +144,8 @@ extern int cl_statfree(struct cl_stat *dbstat);
/* enable debug information */
extern void cl_debug(void);
extern void cl_settempdir(const char *dir, short leavetemps);
/* build a trie */
extern int cl_buildtrie(struct cl_node *root);

@ -51,7 +51,7 @@ pthread_mutex_t cl_gentemp_mutex = PTHREAD_MUTEX_INITIALIZER;
#define CL_FLEVEL 2 /* don't touch it */
int cli_debug_flag = 0;
short cli_debug_flag = 0, cli_leavetemps_flag = 0;
static unsigned char oldmd5buff[16] = { 16, 38, 97, 12, 8, 4, 72, 196, 217, 144, 33, 124, 18, 11, 17, 253 };
@ -269,6 +269,24 @@ unsigned int cl_rndnum(unsigned int max)
return rand() % max;
}
void cl_settempdir(const char *dir, short leavetemps)
{
char *var;
if(dir) {
var = (char *) cli_malloc(8 + strlen(dir));
sprintf(var, "TMPDIR=%s", dir);
if(!putenv(var))
cli_dbgmsg("Setting %s as global temporary directory\n", dir);
else
cli_warnmsg("Can't set TMPDIR variable - insufficient space in the environment.\n");
/* WARNING: var must not be released - see putenv(3) */
}
cli_leavetemps_flag = leavetemps;
}
char *cl_gentemp(const char *dir)
{
char *name, *tmp;
@ -320,7 +338,7 @@ int cli_rmdirs(const char *dirname)
char *fname;
if(cli_debug_flag)
if(cli_leavetemps_flag)
return 0;
chmod(dirname, 0700);

@ -87,6 +87,7 @@ struct cfgstruct *parsecfg(const char *cfgfile)
{"FollowFileSymlinks", OPT_NOARG},
{"Foreground", OPT_NOARG},
{"Debug", OPT_NOARG},
{"LeaveTemporaryFiles", OPT_NOARG},
{"FixStaleSocket", OPT_NOARG},
{"User", OPT_STR},
{"AllowSupplementaryGroups", OPT_NOARG},

Loading…
Cancel
Save