diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/irmd/ipcp.c | 3 | ||||
| -rw-r--r-- | src/irmd/main.c | 5 | 
2 files changed, 4 insertions, 4 deletions
| diff --git a/src/irmd/ipcp.c b/src/irmd/ipcp.c index d7abe15d..5a9a79d3 100644 --- a/src/irmd/ipcp.c +++ b/src/irmd/ipcp.c @@ -107,7 +107,8 @@ ipcp_msg_t * send_recv_ipcp_msg(pid_t        pid,          free(sock_path);          len = ipcp_msg__get_packed_size(msg); -        if (len == 0) { +        if (len == 0 || len >= SOCK_BUF_SIZE) { +                log_warn("IPCP message has invalid size: %zd.", len);                  close(sockfd);                  return NULL;          } diff --git a/src/irmd/main.c b/src/irmd/main.c index 6e1a1262..bc13fa7c 100644 --- a/src/irmd/main.c +++ b/src/irmd/main.c @@ -970,9 +970,7 @@ static int get_ipcp_by_dst(const char *     dst,                  type = ipcps[i]->type;                  algo = ipcps[i]->hash_algo; -                hash->len  = hash_len(algo); - -                tmp = ipcps[i]->pid; +                tmp  = ipcps[i]->pid;                  enrolled = strcmp(ipcps[i]->layer, "Not enrolled.") != 0; @@ -984,6 +982,7 @@ static int get_ipcp_by_dst(const char *     dst,                  if (err == 0 /* solution found */ || !enrolled)                          continue; +                hash->len  = hash_len(algo);                  hash->data = malloc(hash->len);                  if (hash->data == NULL) {                          log_warn("Failed to malloc hash for query."); | 
