diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/tools/irm/irm_ipcp_bootstrap.c | 7 | ||||
| -rw-r--r-- | src/tools/irm/irm_ipcp_destroy.c | 1 | ||||
| -rw-r--r-- | src/tools/irm/irm_unregister.c | 7 | 
3 files changed, 12 insertions, 3 deletions
| diff --git a/src/tools/irm/irm_ipcp_bootstrap.c b/src/tools/irm/irm_ipcp_bootstrap.c index e1f75956..3d9386ad 100644 --- a/src/tools/irm/irm_ipcp_bootstrap.c +++ b/src/tools/irm/irm_ipcp_bootstrap.c @@ -287,10 +287,15 @@ int do_bootstrap_ipcp(int     argc,                          if (autobind && conf.type != IPCP_NORMAL) {                                  printf("Can only bind normal IPCPs, " -                                       "autobind disabled.\n"); +                                       "autobind disabled.\n\n");                                  autobind = false;                          } +                        if (strlen(layer) > LAYER_NAME_SIZE) { +                                printf("Layer name too big.\n\n"); +                                goto fail_usage; +                        } +                          strcpy(conf.layer_info.layer_name, layer);                          if (conf.type != IPCP_UDP)                                  conf.layer_info.dir_hash_algo = hash_algo; diff --git a/src/tools/irm/irm_ipcp_destroy.c b/src/tools/irm/irm_ipcp_destroy.c index cb86b167..2d5ed983 100644 --- a/src/tools/irm/irm_ipcp_destroy.c +++ b/src/tools/irm/irm_ipcp_destroy.c @@ -89,6 +89,7 @@ int do_destroy_ipcp(int     argc,                          break;                  } +        free(ipcps);          return 0;   fail_destroy: diff --git a/src/tools/irm/irm_unregister.c b/src/tools/irm/irm_unregister.c index 52491b42..137bc7e9 100644 --- a/src/tools/irm/irm_unregister.c +++ b/src/tools/irm/irm_unregister.c @@ -69,7 +69,7 @@ int do_unregister(int argc, char ** argv)          char *             ipcp[MAX_IPCPS];          size_t             ipcp_len   = 0;          struct ipcp_info * ipcps; -        size_t             len; +        ssize_t            len;          size_t             i;          while (argc > 0) { @@ -103,7 +103,10 @@ int do_unregister(int argc, char ** argv)          }          len = irm_list_ipcps(&ipcps); -        for (i = 0; i < len; ++i) { +        if (len < 0) +                return -1; + +        for (i = 0; i < (size_t) len; ++i) {                  size_t j;                  for (j = 0; j < layers_len; j++) {                          if (wildcard_match(ipcps[i].layer, layers[j]) == 0) { | 
