summaryrefslogtreecommitdiff
path: root/src/tools/irm
diff options
context:
space:
mode:
Diffstat (limited to 'src/tools/irm')
-rw-r--r--src/tools/irm/irm_ipcp_bootstrap.c7
-rw-r--r--src/tools/irm/irm_ipcp_destroy.c1
-rw-r--r--src/tools/irm/irm_unregister.c7
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) {