diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/irmd/main.c | 13 | ||||
| -rw-r--r-- | src/lib/sockets.c | 1 | 
2 files changed, 13 insertions, 1 deletions
| diff --git a/src/irmd/main.c b/src/irmd/main.c index b695519a..99896999 100644 --- a/src/irmd/main.c +++ b/src/irmd/main.c @@ -203,7 +203,7 @@ static void unreg_ipcp(struct irm * instance,  /* FIXME: Close sockfd on closing and release irm */  int main()  { -        struct irm * instance; +        struct irm * instance = NULL;          int sockfd;          uint8_t buf[IRM_MSG_BUF_SIZE]; @@ -222,6 +222,7 @@ int main()                  struct irm_msg * msg;                  ssize_t count;                  buffer_t buffer; +                int i;                  cli_sockfd = accept(sockfd, 0, 0);                  if (cli_sockfd < 0) { @@ -242,6 +243,7 @@ int main()                                  create_ipcp(instance,                                              *(msg->name),                                              msg->ipcp_type); +                                free(msg->ipcp_type);                                  break;                          case IRM_DESTROY_IPCP:                                  destroy_ipcp(instance, @@ -251,28 +253,37 @@ int main()                                  bootstrap_ipcp(instance,                                                 *(msg->name),                                                 *(msg->conf)); +                                free(msg->conf);                                  break;                          case IRM_ENROLL_IPCP:                                  enroll_ipcp(instance,                                              *(msg->name),                                              msg->dif_name); +                                free(msg->dif_name);                                  break;                          case IRM_REG_IPCP:                                  reg_ipcp(instance,                                           *(msg->name),                                           msg->difs,                                           msg->difs_size); +                                for (i = 0; i < msg->difs_size; i++) +                                        free(msg->difs[i]); +                                free(msg->difs);                                  break;                          case IRM_UNREG_IPCP:                                  unreg_ipcp(instance,                                             *(msg->name),                                             msg->difs,                                             msg->difs_size); +                                for (i = 0; i < msg->difs_size; i++) +                                        free(msg->difs[i]); +                                free(msg->difs);                                  break;                          default:                                  LOG_ERR("Don't know that message code");                                  break;                          } +                        name_destroy(msg->name);                          free(msg);                  } diff --git a/src/lib/sockets.c b/src/lib/sockets.c index 90117c5c..59ac40f9 100644 --- a/src/lib/sockets.c +++ b/src/lib/sockets.c @@ -338,6 +338,7 @@ struct irm_msg * deserialize_irm_msg(buffer_t * data)          case IRM_REG_IPCP:          case IRM_UNREG_IPCP:                  deser_copy_size_t(data->data, &difs_size, &offset); +                msg->difs_size = difs_size;                  msg->difs = malloc(sizeof(*(msg->difs)) * difs_size);                  if (msg->difs == NULL) { | 
