// make a temporary file for storing data which is to be scanned // returns FD in int and saves filename to String pointer // filename is not used as input int CSPlugin::makeTempFile(String * filename) { int tempfilefd; String tempfilepath(o.download_dir.c_str()); tempfilepath += "/tfXXXXXX"; char *tempfilepatharray = new char[tempfilepath.length() + 1]; strcpy(tempfilepatharray, tempfilepath.toCharArray()); if ((tempfilefd = mkstemp(tempfilepatharray)) < 1) { #ifdef DGDEBUG std::cerr << "error creating cs temp " << tempfilepath << ": " << strerror(errno) << std::endl; #endif syslog(LOG_ERR, "%s", "Could not create cs temp file."); tempfilefd = -1; } else { (*filename) = tempfilepatharray; } delete[]tempfilepatharray; return tempfilefd; }
// make a temporary file for storing data which is to be scanned // returns FD in int and saves filename to String pointer // filename is not used as input int CSPlugin::makeTempFile(String *filename) { int tempfilefd; String tempfilepath(o.download_dir.c_str()); tempfilepath += "/tfXXXXXX"; char *tempfilepatharray = new char[tempfilepath.length() + 1]; strcpy(tempfilepatharray, tempfilepath.toCharArray()); // mode_t mask = umask(S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP); // this mask is reversed umask(0007); // only allow access to e2g user and group if ((tempfilefd = mkstemp(tempfilepatharray)) < 1) { #ifdef DGDEBUG std::cerr << "error creating cs temp " << tempfilepath << ": " << strerror(errno) << std::endl; #endif syslog(LOG_ERR, "%s", "Could not create cs temp file."); tempfilefd = -1; } else { (*filename) = tempfilepatharray; } delete[] tempfilepatharray; return tempfilefd; }