]> Kevux Git Server - fll/commitdiff
Security: Invalid access when calling fake without 'make' or 'build'.
authorKevin Day <thekevinday@gmail.com>
Wed, 23 Nov 2022 01:43:16 +0000 (19:43 -0600)
committerKevin Day <thekevinday@gmail.com>
Wed, 23 Nov 2022 01:43:16 +0000 (19:43 -0600)
This is caused by the F_data_not return result not being processed in some of the fl_fss functions.

Additional changes:
- Make the return status constant.
- The status is being returned regardless in some cases so remove the effectively redundant lines of code.
- Combined the additional if condition blocks together.

level_1/fl_fss/c/fss/basic.c
level_1/fl_fss/c/fss/extended.c
level_1/fl_fss/c/private-fss.c

index d081b3df3687ef9bf5f05483f9c4ec675af7e11b..610848ed63cc736f4b7be3e6cad8c0fbcaed0404 100644 (file)
@@ -133,9 +133,9 @@ extern "C" {
 
     const f_array_length_t delimits_used = delimits->used;
 
-    f_status_t status = private_fl_fss_basic_read(buffer, F_true, state, range, found, quote, delimits);
+    const f_status_t status = private_fl_fss_basic_read(buffer, F_true, state, range, found, quote, delimits);
 
-    if (F_status_is_error(status)) {
+    if (F_status_is_error(status) || status == F_fss_found_object_not || status == F_data_not || status == F_data_not_eos || status == F_data_not_stop) {
       delimits->used = delimits_used;
     }
 
index 48be121b89b90fec948cda3a90a8f3b85dc6baf4..d7624203f2b05092917377cd7560b4fd2a65cf40 100644 (file)
@@ -185,18 +185,10 @@ extern "C" {
 
     const f_array_length_t delimits_used = delimits->used;
 
-    f_status_t status = private_fl_fss_basic_read(buffer, F_true, state, range, found, quoted, delimits);
+    const f_status_t status = private_fl_fss_basic_read(buffer, F_true, state, range, found, quoted, delimits);
 
-    if (F_status_is_error(status)) {
+    if (F_status_is_error(status) || status == F_fss_found_object_not || status == F_data_not || status == F_data_not_eos || status == F_data_not_stop) {
       delimits->used = delimits_used;
-
-      return status;
-    }
-
-    if (status == F_fss_found_object_not || status == F_data_not || status == F_data_not_eos || status == F_data_not_stop) {
-      delimits->used = delimits_used;
-
-      return status;
     }
 
     return status;
index fb138b9a651af96bbdd9863cab981a15af350ac3..f0274055112e9972aaec74cf5a350f97a83e7e8f 100644 (file)
@@ -136,13 +136,9 @@ extern "C" {
       return F_fss_found_object_not;
     }
 
-    if (status == F_none_eos) {
-      return F_data_not_eos;
-    }
-
-    if (status == F_none_stop) {
-      return F_data_not_stop;
-    }
+    if (status == F_none_eos) return F_data_not_eos;
+    if (status == F_none_stop) return F_data_not_stop;
+    if (status == F_data_not) return status;
 
     // Begin the search.
     found->start = range->start;
@@ -704,17 +700,10 @@ extern "C" {
     f_status_t status = f_fss_skip_past_space(state, object, range);
     if (F_status_is_error(status)) return status;
 
-    if (status == F_none_eos) {
-      return F_data_not_eos;
-    }
-
-    if (status == F_none_stop) {
-      return F_data_not_stop;
-    }
-
-    if (status == F_none_eol) {
-      return F_status_set_error(F_none_eol);
-    }
+    if (status == F_none_eos) return F_data_not_eos;
+    if (status == F_none_stop) return F_data_not_stop;
+    if (status == F_none_eol) return F_status_set_error(F_none_eol);
+    if (status == F_data_not) return status;
 
     // Ensure that there is room for the potential start and stop quotes, a potential delimit at start, and the potential object open character.
     status = f_string_dynamic_increase_by(5, destination);