Fix the resource release sequence in table update.
Fixes: 5074e1d551 ("examples/pipeline: add configuration commands")
Coverity issues: 362882, 363041, 363044, 363047
Signed-off-by: Cristian Dumitrescu <cristian.dumitrescu@intel.com>
---
examples/pipeline/cli.c | 22 ++++++++++------------
1 file changed, 10 insertions(+), 12 deletions(-)
diff --git a/examples/pipeline/cli.c b/examples/pipeline/cli.c
index 76a58ee28..5800cc98e 100644
--- a/examples/pipeline/cli.c
+++ b/examples/pipeline/cli.c
@@ -866,7 +866,7 @@ cmd_pipeline_table_update(char **tokens,
}
/* Add. */
- if (file_add) {
+ if (file_add)
for (line_id = 1; ; line_id++) {
struct rte_swx_table_entry *entry;
@@ -893,11 +893,9 @@ cmd_pipeline_table_update(char **tokens,
}
}
- fclose(file_add);
- }
/* Delete. */
- if (file_delete) {
+ if (file_delete)
for (line_id = 1; ; line_id++) {
struct rte_swx_table_entry *entry;
@@ -924,11 +922,8 @@ cmd_pipeline_table_update(char **tokens,
}
}
- fclose(file_delete);
- }
-
/* Default. */
- if (file_default) {
+ if (file_default)
for (line_id = 1; ; line_id++) {
struct rte_swx_table_entry *entry;
@@ -955,19 +950,22 @@ cmd_pipeline_table_update(char **tokens,
}
}
- fclose(file_default);
- }
-
status = rte_swx_ctl_pipeline_commit(p->ctl, 1);
if (status) {
snprintf(out, out_size, "Commit failed.");
goto error;
}
- free(line);
rte_swx_ctl_pipeline_table_fprintf(stdout, p->ctl, table_name);
+ free(line);
+ if (file_add)
+ fclose(file_add);
+ if (file_delete)
+ fclose(file_delete);
+ if (file_default)
+ fclose(file_default);
return;
error:
--
2.17.1