mirror of
https://github.com/yrutschle/sslh.git
synced 2025-04-14 08:07:14 +03:00
allocate listen[] before writing to it...
This commit is contained in:
parent
cce42c6882
commit
7d561af423
@ -17,7 +17,7 @@ static char* resolve_listen(const char *hostname, const char *port) {
|
||||
}
|
||||
|
||||
|
||||
static int get_listen_from_conf(const char *filename, char **listen) {
|
||||
static int get_listen_from_conf(const char *filename, char **listen[]) {
|
||||
config_t config;
|
||||
config_setting_t *setting, *addr;
|
||||
const char *hostname, *port;
|
||||
@ -39,6 +39,7 @@ static int get_listen_from_conf(const char *filename, char **listen) {
|
||||
setting = config_lookup(&config, "listen");
|
||||
if (setting) {
|
||||
len = config_setting_length(setting);
|
||||
*listen = malloc(len * sizeof(**listen));
|
||||
for (int i = 0; i < len; i++) {
|
||||
addr = config_setting_get_elem(setting, i);
|
||||
if (! (config_setting_lookup_string(addr, "host", &hostname) &&
|
||||
@ -48,8 +49,8 @@ static int get_listen_from_conf(const char *filename, char **listen) {
|
||||
config_setting_source_line(addr));
|
||||
return -1;
|
||||
} else {
|
||||
listen[i] = malloc(strlen(resolve_listen(hostname, port)));
|
||||
strcpy(listen[i], resolve_listen(hostname, port));
|
||||
(*listen)[i] = malloc(strlen(resolve_listen(hostname, port)));
|
||||
strcpy((*listen)[i], resolve_listen(hostname, port));
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -59,7 +60,7 @@ static int get_listen_from_conf(const char *filename, char **listen) {
|
||||
|
||||
}
|
||||
|
||||
static int write_socket_unit(FILE *socket, char **listen, int num_addr, const char *source) {
|
||||
static int write_socket_unit(FILE *socket, char *listen[], int num_addr, const char *source) {
|
||||
|
||||
fprintf(socket,
|
||||
"# Automatically generated by systemd-sslh-generator\n\n"
|
||||
@ -100,8 +101,7 @@ static int gen_sslh_config(char *runtime_unit_dir) {
|
||||
|
||||
fclose(config);
|
||||
|
||||
|
||||
num_addr = get_listen_from_conf(sslh_conf, listen);
|
||||
num_addr = get_listen_from_conf(sslh_conf, &listen);
|
||||
if (num_addr < 0)
|
||||
return -1;
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user