1078a47634
fixes CVE-2017-8366 and CVE-2017-6430. Patches from upstream, git revisions 1083d604930ebb9f350126b83802ecd2cbc17f90 and 7f50c57b2101fe75592c8dc9960883bbd1878bce
57 lines
2 KiB
Diff
57 lines
2 KiB
Diff
diff --git a/utils/etterfilter/ef_compiler.c b/utils/etterfilter/ef_compiler.c
|
|
index db876636..ddb73bd3 100644
|
|
--- utils/etterfilter/ef_compiler.c
|
|
+++ utils/etterfilter/ef_compiler.c
|
|
@@ -239,7 +239,9 @@ size_t compile_tree(struct filter_op **fop)
|
|
struct filter_op *array = NULL;
|
|
struct unfold_elm *ue;
|
|
|
|
- BUG_IF(tree_root == NULL);
|
|
+ // invalid file
|
|
+ if (tree_root == NULL)
|
|
+ return 0;
|
|
|
|
fprintf(stdout, " Unfolding the meta-tree ");
|
|
fflush(stdout);
|
|
diff --git a/utils/etterfilter/ef_main.c b/utils/etterfilter/ef_main.c
|
|
index ae459134..431084b9 100644
|
|
--- utils/etterfilter/ef_main.c
|
|
+++ utils/etterfilter/ef_main.c
|
|
@@ -39,7 +39,7 @@ struct globals *gbls;
|
|
|
|
int main(int argc, char *argv[])
|
|
{
|
|
-
|
|
+ int ret_value = 0;
|
|
globals_alloc();
|
|
/* etterfilter copyright */
|
|
fprintf(stdout, "\n" EC_COLOR_BOLD "%s %s" EC_COLOR_END " copyright %s %s\n\n",
|
|
@@ -84,8 +84,12 @@ int main(int argc, char *argv[])
|
|
fprintf(stdout, "\n\nThe script contains errors...\n\n");
|
|
|
|
/* write to file */
|
|
- if (write_output() != E_SUCCESS)
|
|
- FATAL_ERROR("Cannot write output file (%s)", GBL_OPTIONS->output_file);
|
|
+ ret_value = write_output();
|
|
+ if (ret_value == -E_NOTHANDLED)
|
|
+ FATAL_ERROR("Cannot write output file (%s): the filter is not correctly handled.", GBL_OPTIONS->output_file);
|
|
+ else if (ret_value == -E_INVALID)
|
|
+ FATAL_ERROR("Cannot write output file (%s): the filter format is not correct. ", GBL_OPTIONS->output_file);
|
|
+
|
|
globals_free();
|
|
return 0;
|
|
}
|
|
diff --git a/utils/etterfilter/ef_output.c b/utils/etterfilter/ef_output.c
|
|
index 5ae59190..fcf19f01 100644
|
|
--- utils/etterfilter/ef_output.c
|
|
+++ utils/etterfilter/ef_output.c
|
|
@@ -51,6 +51,9 @@ int write_output(void)
|
|
if (fop == NULL)
|
|
return -E_NOTHANDLED;
|
|
|
|
+ if (ninst == 0)
|
|
+ return -E_INVALID;
|
|
+
|
|
/* create the file */
|
|
fd = open(GBL_OPTIONS->output_file, O_CREAT | O_RDWR | O_TRUNC | O_BINARY, 0644);
|
|
ON_ERROR(fd, -1, "Can't create file %s", GBL_OPTIONS->output_file);
|