Fix a wrong open() if no motd is specified.

This commit is contained in:
Jan Vidar Krey 2009-11-18 17:28:36 +01:00
parent 00995a1946
commit 828c19cfc6
1 changed files with 7 additions and 11 deletions

View File

@ -654,7 +654,7 @@ void hub_set_variables(struct hub_info* hub, struct acl_handle* acl)
/* (Re-)read the message of the day */ /* (Re-)read the message of the day */
hub->command_motd = 0; hub->command_motd = 0;
fd = open(hub->config->file_motd, 0); fd = (hub->config->file_motd && *hub->config->file_motd) ? open(hub->config->file_motd, 0) : -1;
if (fd != -1) if (fd != -1)
{ {
ret = read(fd, buf, MAX_RECV_BUF); ret = read(fd, buf, MAX_RECV_BUF);
@ -663,22 +663,18 @@ void hub_set_variables(struct hub_info* hub, struct acl_handle* acl)
buf[ret] = 0; buf[ret] = 0;
tmp = adc_msg_escape(buf); tmp = adc_msg_escape(buf);
hub->command_motd = adc_msg_construct(ADC_CMD_IMSG, 6 + strlen(tmp)); hub->command_motd = adc_msg_construct(ADC_CMD_IMSG, 6 + strlen(tmp));
adc_msg_add_argument(hub->command_motd, tmp); adc_msg_add_argument(hub->command_motd, tmp);
hub_free(tmp); hub_free(tmp);
}
else
{
} }
close(fd); close(fd);
} }
hub->command_support = adc_msg_construct(ADC_CMD_ISUP, 6 + strlen(ADC_PROTO_SUPPORT)); hub->command_support = adc_msg_construct(ADC_CMD_ISUP, 6 + strlen(ADC_PROTO_SUPPORT));
if (hub->command_support) if (hub->command_support)
{ {
adc_msg_add_argument(hub->command_support, ADC_PROTO_SUPPORT); adc_msg_add_argument(hub->command_support, ADC_PROTO_SUPPORT);
} }
hub->command_banner = adc_msg_construct(ADC_CMD_ISTA, 25 + strlen(server)); hub->command_banner = adc_msg_construct(ADC_CMD_ISTA, 25 + strlen(server));
if (hub->command_banner) if (hub->command_banner)
{ {
@ -687,7 +683,7 @@ void hub_set_variables(struct hub_info* hub, struct acl_handle* acl)
adc_msg_add_argument(hub->command_banner, tmp); adc_msg_add_argument(hub->command_banner, tmp);
hub_free(tmp); hub_free(tmp);
} }
hub->status = (hub->config->hub_enabled ? hub_status_running : hub_status_disabled); hub->status = (hub->config->hub_enabled ? hub_status_running : hub_status_disabled);
hub_free(server); hub_free(server);
} }
@ -697,10 +693,10 @@ void hub_free_variables(struct hub_info* hub)
{ {
adc_msg_free(hub->command_info); adc_msg_free(hub->command_info);
adc_msg_free(hub->command_banner); adc_msg_free(hub->command_banner);
if (hub->command_motd) if (hub->command_motd)
adc_msg_free(hub->command_motd); adc_msg_free(hub->command_motd);
adc_msg_free(hub->command_support); adc_msg_free(hub->command_support);
} }