163
164
if((opt = optget(opts, "LogFile"))->enabled) {
164
165
logg_file = opt->strarg;
165
if(strlen(logg_file) < 2 || logg_file[0] != '/') {
166
if(!cli_is_abspath(logg_file)) {
166
167
fprintf(stderr, "ERROR: LogFile requires full path.\n");
223
224
if(strcasecmp(pt, "No")) {
224
225
char myname[255];
226
if(!gethostname(myname, sizeof(myname))) {
227
if(((opt = optget(opts, "ReportHostname"))->enabled && strncpy(myname, opt->strarg, sizeof(myname))) || !gethostname(myname, sizeof(myname))) {
227
228
myname[sizeof(myname)-1] = '\0';
228
229
snprintf(xvirushdr, sizeof(xvirushdr), "clamav-milter %s at %s", get_version(), myname);
229
xvirushdr[sizeof(xvirushdr)-1] = '\0';
231
231
snprintf(xvirushdr, sizeof(xvirushdr), "clamav-milter %s", get_version());
232
xvirushdr[sizeof(xvirushdr)-1] = '\0';
232
xvirushdr[sizeof(xvirushdr)-1] = '\0';
235
234
descr.xxfi_flags |= SMFIF_ADDHDRS;
284
283
opt = optget(opts, "FixStaleSocket");
284
umsk = umask(0777); /* socket is created with 000 to avoid races */
285
285
if(smfi_opensocket(opt->enabled) == MI_FAILURE) {
286
286
logg("!Failed to create socket %s\n", my_socket);
287
287
localnets_free();
293
umask(umsk); /* restore umask */
294
if(strncmp(my_socket, "inet:", 5) && strncmp(my_socket, "inet6:", 6)) {
295
/* set group ownership and perms on the local socket */
296
char *sock_name = my_socket;
298
if(!strncmp(my_socket, "unix:", 5))
300
if(!strncmp(my_socket, "local:", 6))
302
if(*my_socket == ':')
305
if(optget(opts, "MilterSocketGroup")->enabled) {
306
char *gname = optget(opts, "MilterSocketGroup")->strarg, *end;
307
gid_t sock_gid = strtol(gname, &end, 10);
309
struct group *pgrp = getgrnam(gname);
311
logg("!Unknown group %s\n", gname);
318
sock_gid = pgrp->gr_gid;
320
if(chown(sock_name, -1, sock_gid)) {
321
logg("!Failed to change socket ownership to group %s\n", gname);
329
if(optget(opts, "MilterSocketMode")->enabled) {
331
sock_mode = strtol(optget(opts, "MilterSocketMode")->strarg, &end, 8);
333
logg("!Invalid MilterSocketMode %s\n", optget(opts, "MilterSocketMode")->strarg);
341
sock_mode = 0777 & ~umsk;
343
if(chmod(sock_name, sock_mode & 0666)) {
344
logg("!Cannot set milter socket permission to %s\n", optget(opts, "MilterSocketMode")->strarg);
294
353
maxfilesize = optget(opts, "MaxFileSize")->numarg;
295
354
readtimeout = optget(opts, "ReadTimeout")->numarg;