summaryrefslogtreecommitdiffstats
path: root/VNFs/vFW
diff options
context:
space:
mode:
Diffstat (limited to 'VNFs/vFW')
-rw-r--r--VNFs/vFW/init.c70
-rw-r--r--VNFs/vFW/pipeline/pipeline_vfw_be.c2
2 files changed, 68 insertions, 4 deletions
diff --git a/VNFs/vFW/init.c b/VNFs/vFW/init.c
index 0edc5e32..c3d4a6c3 100644
--- a/VNFs/vFW/init.c
+++ b/VNFs/vFW/init.c
@@ -97,14 +97,21 @@ app_init_eal(struct app_params *app)
uint32_t i;
int status;
+ if (unlikely (n_args >= APP_EAL_ARGC))
+ goto error_exit;
+
app->eal_argv[n_args++] = strdup(app->app_name);
app_core_build_core_mask_string(app, core_mask_str);
snprintf(buffer, sizeof(buffer), "-c%s", core_mask_str);
+ if (unlikely (n_args >= APP_EAL_ARGC))
+ goto error_exit;
app->eal_argv[n_args++] = strdup(buffer);
if (p->coremap) {
snprintf(buffer, sizeof(buffer), "--lcores=%s", p->coremap);
+ if (unlikely (n_args >= APP_EAL_ARGC))
+ goto error_exit;
app->eal_argv[n_args++] = strdup(buffer);
}
@@ -113,19 +120,27 @@ app_init_eal(struct app_params *app)
sizeof(buffer),
"--master-lcore=%" PRIu32,
p->master_lcore);
+ if (unlikely (n_args >= APP_EAL_ARGC))
+ goto error_exit;
app->eal_argv[n_args++] = strdup(buffer);
}
snprintf(buffer, sizeof(buffer), "-n%" PRIu32, p->channels);
+ if (unlikely (n_args >= APP_EAL_ARGC))
+ goto error_exit;
app->eal_argv[n_args++] = strdup(buffer);
if (p->memory_present) {
snprintf(buffer, sizeof(buffer), "-m%" PRIu32, p->memory);
+ if (unlikely (n_args >= APP_EAL_ARGC))
+ goto error_exit;
app->eal_argv[n_args++] = strdup(buffer);
}
if (p->ranks_present) {
snprintf(buffer, sizeof(buffer), "-r%" PRIu32, p->ranks);
+ if (unlikely (n_args >= APP_EAL_ARGC))
+ goto error_exit;
app->eal_argv[n_args++] = strdup(buffer);
}
@@ -137,6 +152,8 @@ app_init_eal(struct app_params *app)
sizeof(buffer),
"--pci-blacklist=%s",
p->pci_blacklist[i]);
+ if (unlikely (n_args >= APP_EAL_ARGC))
+ goto error_exit;
app->eal_argv[n_args++] = strdup(buffer);
}
@@ -149,6 +166,8 @@ app_init_eal(struct app_params *app)
sizeof(buffer),
"--pci-whitelist=%s",
p->pci_whitelist[i]);
+ if (unlikely (n_args >= APP_EAL_ARGC))
+ goto error_exit;
app->eal_argv[n_args++] = strdup(buffer);
}
else
@@ -159,6 +178,8 @@ app_init_eal(struct app_params *app)
sizeof(buffer),
"--pci-whitelist=%s",
pci_bdf);
+ if (unlikely (n_args >= APP_EAL_ARGC))
+ goto error_exit;
app->eal_argv[n_args++] = strdup(buffer);
}
@@ -170,11 +191,15 @@ app_init_eal(struct app_params *app)
sizeof(buffer),
"--vdev=%s",
p->vdev[i]);
+ if (unlikely (n_args >= APP_EAL_ARGC))
+ goto error_exit;
app->eal_argv[n_args++] = strdup(buffer);
}
if ((p->vmware_tsc_map_present) && p->vmware_tsc_map) {
snprintf(buffer, sizeof(buffer), "--vmware-tsc-map");
+ if (unlikely (n_args >= APP_EAL_ARGC))
+ goto error_exit;
app->eal_argv[n_args++] = strdup(buffer);
}
@@ -183,11 +208,15 @@ app_init_eal(struct app_params *app)
sizeof(buffer),
"--proc-type=%s",
p->proc_type);
+ if (unlikely (n_args >= APP_EAL_ARGC))
+ goto error_exit;
app->eal_argv[n_args++] = strdup(buffer);
}
if (p->syslog) {
snprintf(buffer, sizeof(buffer), "--syslog=%s", p->syslog);
+ if (unlikely (n_args >= APP_EAL_ARGC))
+ goto error_exit;
app->eal_argv[n_args++] = strdup(buffer);
}
@@ -196,41 +225,57 @@ app_init_eal(struct app_params *app)
sizeof(buffer),
"--log-level=%" PRIu32,
p->log_level);
+ if (unlikely (n_args >= APP_EAL_ARGC))
+ goto error_exit;
app->eal_argv[n_args++] = strdup(buffer);
}
if ((p->version_present) && p->version) {
snprintf(buffer, sizeof(buffer), "-v");
+ if (unlikely (n_args >= APP_EAL_ARGC))
+ goto error_exit;
app->eal_argv[n_args++] = strdup(buffer);
}
if ((p->help_present) && p->help) {
snprintf(buffer, sizeof(buffer), "--help");
+ if (unlikely (n_args >= APP_EAL_ARGC))
+ goto error_exit;
app->eal_argv[n_args++] = strdup(buffer);
}
if ((p->no_huge_present) && p->no_huge) {
snprintf(buffer, sizeof(buffer), "--no-huge");
+ if (unlikely (n_args >= APP_EAL_ARGC))
+ goto error_exit;
app->eal_argv[n_args++] = strdup(buffer);
}
if ((p->no_pci_present) && p->no_pci) {
snprintf(buffer, sizeof(buffer), "--no-pci");
+ if (unlikely (n_args >= APP_EAL_ARGC))
+ goto error_exit;
app->eal_argv[n_args++] = strdup(buffer);
}
if ((p->no_hpet_present) && p->no_hpet) {
snprintf(buffer, sizeof(buffer), "--no-hpet");
+ if (unlikely (n_args >= APP_EAL_ARGC))
+ goto error_exit;
app->eal_argv[n_args++] = strdup(buffer);
}
if ((p->no_shconf_present) && p->no_shconf) {
snprintf(buffer, sizeof(buffer), "--no-shconf");
+ if (unlikely (n_args >= APP_EAL_ARGC))
+ goto error_exit;
app->eal_argv[n_args++] = strdup(buffer);
}
if (p->add_driver) {
snprintf(buffer, sizeof(buffer), "-d=%s", p->add_driver);
+ if (unlikely (n_args >= APP_EAL_ARGC))
+ goto error_exit;
app->eal_argv[n_args++] = strdup(buffer);
}
@@ -239,11 +284,15 @@ app_init_eal(struct app_params *app)
sizeof(buffer),
"--socket-mem=%s",
p->socket_mem);
+ if (unlikely (n_args >= APP_EAL_ARGC))
+ goto error_exit;
app->eal_argv[n_args++] = strdup(buffer);
}
if (p->huge_dir) {
snprintf(buffer, sizeof(buffer), "--huge-dir=%s", p->huge_dir);
+ if (unlikely (n_args >= APP_EAL_ARGC))
+ goto error_exit;
app->eal_argv[n_args++] = strdup(buffer);
}
@@ -252,6 +301,8 @@ app_init_eal(struct app_params *app)
sizeof(buffer),
"--file-prefix=%s",
p->file_prefix);
+ if (unlikely (n_args >= APP_EAL_ARGC))
+ goto error_exit;
app->eal_argv[n_args++] = strdup(buffer);
}
@@ -260,11 +311,15 @@ app_init_eal(struct app_params *app)
sizeof(buffer),
"--base-virtaddr=%s",
p->base_virtaddr);
+ if (unlikely (n_args >= APP_EAL_ARGC))
+ goto error_exit;
app->eal_argv[n_args++] = strdup(buffer);
}
if ((p->create_uio_dev_present) && p->create_uio_dev) {
snprintf(buffer, sizeof(buffer), "--create-uio-dev");
+ if (unlikely (n_args >= APP_EAL_ARGC))
+ goto error_exit;
app->eal_argv[n_args++] = strdup(buffer);
}
@@ -273,15 +328,21 @@ app_init_eal(struct app_params *app)
sizeof(buffer),
"--vfio-intr=%s",
p->vfio_intr);
+ if (unlikely (n_args >= APP_EAL_ARGC))
+ goto error_exit;
app->eal_argv[n_args++] = strdup(buffer);
}
if ((p->xen_dom0_present) && (p->xen_dom0)) {
snprintf(buffer, sizeof(buffer), "--xen-dom0");
+ if (unlikely (n_args >= APP_EAL_ARGC))
+ goto error_exit;
app->eal_argv[n_args++] = strdup(buffer);
}
snprintf(buffer, sizeof(buffer), "--");
+ if (unlikely (n_args >= APP_EAL_ARGC))
+ goto error_exit;
app->eal_argv[n_args++] = strdup(buffer);
app->eal_argc = n_args;
@@ -297,8 +358,10 @@ app_init_eal(struct app_params *app)
}
status = rte_eal_init(app->eal_argc, app->eal_argv);
- if (status < 0)
+ if (status < 0) {
+error_exit:
rte_panic("EAL init error\n");
+ }
}
static inline int
app_link_filter_arp_add(struct app_link_params *link)
@@ -557,7 +620,7 @@ app_link_up_internal(__rte_unused struct app_params *app,
struct app_link_params *cp)
{
if(app == NULL || cp == NULL)
- printf("NULL Pointers");
+ rte_panic("NULL Pointers");
#if RTE_VERSION < 0x100b0000
if (app_link_is_virtual(cp)) {
@@ -576,7 +639,8 @@ app_link_down_internal(__rte_unused struct app_params *app,
struct app_link_params *cp)
{
if(app == NULL || cp == NULL)
- printf("NULL Pointers");
+ rte_panic("NULL Pointers");
+
#if RTE_VERSION < 0x100b0000
if (app_link_is_virtual(cp)) {
diff --git a/VNFs/vFW/pipeline/pipeline_vfw_be.c b/VNFs/vFW/pipeline/pipeline_vfw_be.c
index f0eab34b..71fd5cde 100644
--- a/VNFs/vFW/pipeline/pipeline_vfw_be.c
+++ b/VNFs/vFW/pipeline/pipeline_vfw_be.c
@@ -1969,7 +1969,7 @@ pipeline_vfw_parse_args(struct pipeline_vfw *vfw_pipe,
if (strcmp(arg_name, "n_flows") == 0) {
int n_flows = atoi(arg_value);
- if (n_flows == 0)
+ if ((n_flows == 0) || (n_flows > 8000000))
return -1;
/* must be power of 2, round up if not */