examples/ipsec-secgw: fix configuration parsing
authorFan Zhang <roy.fan.zhang@intel.com>
Mon, 7 Nov 2016 14:21:06 +0000 (14:21 +0000)
committerThomas Monjalon <thomas.monjalon@6wind.com>
Mon, 7 Nov 2016 20:38:45 +0000 (21:38 +0100)
Fix copy into fixed size buffer issue.

Coverity issue: 137875
Fixes: 0d547ed0 ("examples/ipsec-secgw: support configuration file")

Signed-off-by: Fan Zhang <roy.fan.zhang@intel.com>
Acked-by: Ferruh Yigit <ferruh.yigit@intel.com>
examples/ipsec-secgw/sa.c

index 9e2c8a9..8c4406c 100644 (file)
@@ -170,15 +170,18 @@ static uint32_t
 parse_key_string(const char *key_str, uint8_t *key)
 {
        const char *pt_start = key_str, *pt_end = key_str;
-       char sub_str[3];
        uint32_t nb_bytes = 0;
 
        while (pt_end != NULL) {
+               char sub_str[3] = {0};
+
                pt_end = strchr(pt_start, ':');
 
-               if (pt_end == NULL)
-                       strncpy(sub_str, pt_start, strlen(pt_start));
-               else {
+               if (pt_end == NULL) {
+                       if (strlen(pt_start) > 2)
+                               return 0;
+                       strncpy(sub_str, pt_start, 2);
+               } else {
                        if (pt_end - pt_start > 2)
                                return 0;