- DEBUG(D_acl) debug_printf("Malware scan: %s tmo %s\n", scanner_name, readconf_printtime(timeout));
+ DEBUG(D_acl) debug_printf_indent("Malware scan: %s tmo %s\n", scanner_name, readconf_printtime(timeout));
drweb_slen = htonl(fsize);
lseek(drweb_fd, 0, SEEK_SET);
drweb_slen = htonl(fsize);
lseek(drweb_fd, 0, SEEK_SET);
scanner_name, buf);
if (m_sock_send(sock, buf, Ustrlen(buf), &errstr) < 0)
return m_errlog_defer(scanent, CUS callout_address, errstr);
scanner_name, buf);
if (m_sock_send(sock, buf, Ustrlen(buf), &errstr) < 0)
return m_errlog_defer(scanent, CUS callout_address, errstr);
scanner_name, scanner_options);
/* pass options */
memset(av_buffer, 0, sizeof(av_buffer));
scanner_name, scanner_options);
/* pass options */
memset(av_buffer, 0, sizeof(av_buffer));
- /* read report, linewise */
+ /* read report, linewise. Using size from stream to read amount of data
+ from same stream is safe enough. */
+ /* coverity[tainted_data] */
while (kav_reportlen > 0)
{
if ((bread = recv_line(sock, tmpbuf, sizeof(tmpbuf), tmo)) < 0)
while (kav_reportlen > 0)
{
if ((bread = recv_line(sock, tmpbuf, sizeof(tmpbuf), tmo)) < 0)
/* redirect STDERR too */
commandline = string_sprintf("%s 2>&1", commandline);
/* redirect STDERR too */
commandline = string_sprintf("%s 2>&1", commandline);
scanner_name, commandline);
/* store exims signal handlers */
scanner_name, commandline);
/* store exims signal handlers */
scanner_name, scanner_options);
if ( write(sock, file_name, Ustrlen(file_name)) < 0
scanner_name, scanner_options);
if ( write(sock, file_name, Ustrlen(file_name)) < 0
cd->hostspec, cd->tcp_port);
/* Lookup the host. This is to ensure that we connect to the same IP
cd->hostspec, cd->tcp_port);
/* Lookup the host. This is to ensure that we connect to the same IP
* that port on a second connection; then in the scan-method-neutral
* part, read the response back on the original connection. */
* that port on a second connection; then in the scan-method-neutral
* part, read the response back on the original connection. */
{
CLOSE_SOCKDATA; (void)close(clam_fd);
return m_errlog_defer_3(scanent, NULL,
{
CLOSE_SOCKDATA; (void)close(clam_fd);
return m_errlog_defer_3(scanent, NULL,
/* Pass the string to ClamAV (7 = "SCAN \n" + \0) */
file_name = string_sprintf("SCAN %s\n", eml_filename);
/* Pass the string to ClamAV (7 = "SCAN \n" + \0) */
file_name = string_sprintf("SCAN %s\n", eml_filename);
"Malware scan: issuing %s local-path scan [%s]\n",
scanner_name, scanner_options);
"Malware scan: issuing %s local-path scan [%s]\n",
scanner_name, scanner_options);
if ((retval = mksd_scan_packed(scanent, sock, eml_filename, tmo)) != OK)
{
if ((retval = mksd_scan_packed(scanent, sock, eml_filename, tmo)) != OK)
{
/* match virus name against pattern (caseless ------->----------v) */
if (malware_name && regex_match_and_setup(re, malware_name, 0, -1))
{
/* match virus name against pattern (caseless ------->----------v) */
if (malware_name && regex_match_and_setup(re, malware_name, 0, -1))
{