mirror of
git://git.sv.gnu.org/coreutils.git
synced 2026-02-21 06:42:02 +02:00
We carry local adjustments for a few gnulib modules via the patches in gl/. Nearly all of those patches had become stale due to evolution of the originals in gnulib. To refresh them, first make sure you have no local changes in gl/ or in the gnulib submodule, then run "make refresh-gnulib-patches".
46 lines
1.5 KiB
Diff
46 lines
1.5 KiB
Diff
diff --git a/lib/regexec.c b/lib/regexec.c
|
|
index 7d130a0..a58d454 100644
|
|
--- a/lib/regexec.c
|
|
+++ b/lib/regexec.c
|
|
@@ -16,6 +16,8 @@
|
|
You should have received a copy of the GNU General Public License along
|
|
with this program; if not, see <http://www.gnu.org/licenses/>. */
|
|
|
|
+#include "verify.h"
|
|
+#include "intprops.h"
|
|
static reg_errcode_t match_ctx_init (re_match_context_t *cache, int eflags,
|
|
Idx n) internal_function;
|
|
static void match_ctx_clean (re_match_context_t *mctx) internal_function;
|
|
@@ -374,8 +376,11 @@ re_search_2_stub (struct re_pattern_buffer *bufp,
|
|
Idx len = length1 + length2;
|
|
char *s = NULL;
|
|
|
|
- if (BE (length1 < 0 || length2 < 0 || stop < 0 || len < length1, 0))
|
|
- return -2;
|
|
+ verify (! TYPE_SIGNED (Idx));
|
|
+ if (BE (len < length1, 0))
|
|
+ return -2;
|
|
+ /* if (BE (length1 < 0 || length2 < 0 || stop < 0, 0))
|
|
+ return -2; */
|
|
|
|
/* Concatenate the strings. */
|
|
if (length2 > 0)
|
|
@@ -426,11 +431,14 @@ re_search_stub (struct re_pattern_buffer *bufp,
|
|
Idx last_start = start + range;
|
|
|
|
/* Check for out-of-range. */
|
|
- if (BE (start < 0 || start > length, 0))
|
|
- return -1;
|
|
+ verify (! TYPE_SIGNED (Idx));
|
|
+ /* if (BE (start < 0, 0))
|
|
+ return -1; */
|
|
+ if (BE (start > length, 0))
|
|
+ return -1;
|
|
if (BE (length < last_start || (0 <= range && last_start < start), 0))
|
|
last_start = length;
|
|
- else if (BE (last_start < 0 || (range < 0 && start <= last_start), 0))
|
|
+ else if (BE (/* last_start < 0 || */ (range < 0 && start <= last_start), 0))
|
|
last_start = 0;
|
|
|
|
__libc_lock_lock (dfa->lock);
|