[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH 09/11] Fix up a bunch of "gcc -Werror=sign-compare" complaints
From: |
Robbie Harwood |
Subject: |
[PATCH 09/11] Fix up a bunch of "gcc -Werror=sign-compare" complaints |
Date: |
Mon, 25 Oct 2021 17:55:42 -0400 |
From: Peter Jones <pjones@redhat.com>
[rharwood@redhat.com: rebase conflicts in regexec]
Signed-off-by: Robbie Harwood <rharwood@redhat.com>
---
lib/argp-fmtstream.c | 2 +-
lib/regcomp.c | 28 +++++++++++++++-------------
lib/regex_internal.c | 6 +++---
lib/regexec.c | 36 ++++++++++++++++++++----------------
lib/vasnprintf.c | 4 ++--
5 files changed, 41 insertions(+), 35 deletions(-)
diff --git a/lib/argp-fmtstream.c b/lib/argp-fmtstream.c
index f679751b9..4aa401e2d 100644
--- a/lib/argp-fmtstream.c
+++ b/lib/argp-fmtstream.c
@@ -234,7 +234,7 @@ __argp_fmtstream_update (argp_fmtstream_t fs)
else
{
size_t display_width = mbsnwidth (buf, nl - buf, MBSW_STOP_AT_NUL);
- if (display_width < (ssize_t) fs->rmargin)
+ if (display_width < fs->rmargin)
{
/* The buffer contains a full line that fits within the maximum
line width. Reset point and scan the next line. */
diff --git a/lib/regcomp.c b/lib/regcomp.c
index 4a106ff59..a33a74488 100644
--- a/lib/regcomp.c
+++ b/lib/regcomp.c
@@ -300,7 +300,7 @@ re_compile_fastmap_iter (regex_t *bufp, const re_dfastate_t
*init_state,
bool icase = (dfa->mb_cur_max == 1 && (bufp->syntax & RE_ICASE));
for (node_cnt = 0; node_cnt < init_state->nodes.nelem; ++node_cnt)
{
- Idx node = init_state->nodes.elems[node_cnt];
+ size_t node = init_state->nodes.elems[node_cnt];
re_token_type_t type = dfa->nodes[node].type;
if (type == CHARACTER)
@@ -321,7 +321,7 @@ re_compile_fastmap_iter (regex_t *bufp, const re_dfastate_t
*init_state,
&& dfa->nodes[node].mb_partial)
*p++ = dfa->nodes[node].opr.c;
memset (&state, '\0', sizeof (state));
- if (__mbrtowc (&wc, (const char *) buf, p - buf,
+ if ((ssize_t)__mbrtowc (&wc, (const char *) buf, p - buf,
&state) == p - buf
&& (__wcrtomb ((char *) buf, __towlower (wc), &state)
!= (size_t) -1))
@@ -582,7 +582,8 @@ static const bitset_t utf8_sb_map =
static void
free_dfa_content (re_dfa_t *dfa)
{
- Idx i, j;
+ size_t i;
+ Idx j;
if (dfa->nodes)
for (i = 0; i < dfa->nodes_len; ++i)
@@ -893,7 +894,8 @@ init_dfa (re_dfa_t *dfa, size_t pat_len)
dfa->sb_char = (re_bitset_ptr_t) utf8_sb_map;
else
{
- int i, j, ch;
+ int i, j;
+ wint_t ch;
dfa->sb_char = (re_bitset_ptr_t) calloc (sizeof (bitset_t), 1);
if (__glibc_unlikely (dfa->sb_char == NULL))
@@ -1082,7 +1084,7 @@ create_initial_state (re_dfa_t *dfa)
static void
optimize_utf8 (re_dfa_t *dfa)
{
- Idx node;
+ size_t node;
int i;
bool mb_chars = false;
bool has_period = false;
@@ -1177,12 +1179,12 @@ analyze (regex_t *preg)
dfa->subexp_map = re_malloc (Idx, preg->re_nsub);
if (dfa->subexp_map != NULL)
{
- Idx i;
+ size_t i;
for (i = 0; i < preg->re_nsub; i++)
dfa->subexp_map[i] = i;
preorder (dfa->str_tree, optimize_subexps, dfa);
for (i = 0; i < preg->re_nsub; i++)
- if (dfa->subexp_map[i] != i)
+ if (dfa->subexp_map[i] != (ssize_t)i)
break;
if (i == preg->re_nsub)
{
@@ -1627,7 +1629,7 @@ duplicate_node (re_dfa_t *dfa, Idx org_idx, unsigned int
constraint)
static reg_errcode_t
calc_inveclosure (re_dfa_t *dfa)
{
- Idx src, idx;
+ size_t src, idx;
bool ok;
for (idx = 0; idx < dfa->nodes_len; ++idx)
re_node_set_init_empty (dfa->inveclosures + idx);
@@ -1635,7 +1637,7 @@ calc_inveclosure (re_dfa_t *dfa)
for (src = 0; src < dfa->nodes_len; ++src)
{
Idx *elems = dfa->eclosures[src].elems;
- for (idx = 0; idx < dfa->eclosures[src].nelem; ++idx)
+ for (idx = 0; (ssize_t)idx < dfa->eclosures[src].nelem; ++idx)
{
ok = re_node_set_insert_last (dfa->inveclosures + elems[idx], src);
if (__glibc_unlikely (! ok))
@@ -1651,7 +1653,7 @@ calc_inveclosure (re_dfa_t *dfa)
static reg_errcode_t
calc_eclosure (re_dfa_t *dfa)
{
- Idx node_idx;
+ size_t node_idx;
bool incomplete;
DEBUG_ASSERT (dfa->nodes_len > 0);
incomplete = false;
@@ -2717,7 +2719,7 @@ build_range_exp (const reg_syntax_t syntax,
# ifdef RE_ENABLE_I18N
{
- wchar_t wc;
+ wint_t wc;
wint_t start_wc;
wint_t end_wc;
@@ -2728,9 +2730,9 @@ build_range_exp (const reg_syntax_t syntax,
: ((end_elem->type == COLL_SYM) ? end_elem->opr.name[0]
: 0));
start_wc = ((start_elem->type == SB_CHAR || start_elem->type == COLL_SYM)
- ? parse_byte (start_ch, mbcset) : start_elem->opr.wch);
+ ? parse_byte (start_ch, mbcset) : (wint_t)start_elem->opr.wch);
end_wc = ((end_elem->type == SB_CHAR || end_elem->type == COLL_SYM)
- ? parse_byte (end_ch, mbcset) : end_elem->opr.wch);
+ ? parse_byte (end_ch, mbcset) : (wint_t)end_elem->opr.wch);
if (start_wc == WEOF || end_wc == WEOF)
return REG_ECOLLATE;
else if (__glibc_unlikely ((syntax & RE_NO_EMPTY_RANGES)
diff --git a/lib/regex_internal.c b/lib/regex_internal.c
index aefcfa2f5..405a97267 100644
--- a/lib/regex_internal.c
+++ b/lib/regex_internal.c
@@ -146,7 +146,7 @@ re_string_realloc_buffers (re_string_t *pstr, Idx
new_buf_len)
/* Avoid overflow in realloc. */
const size_t max_object_size = MAX (sizeof (wint_t), sizeof (Idx));
- if (__glibc_unlikely (MIN (IDX_MAX, SIZE_MAX / max_object_size)
+ if (__glibc_unlikely ((ssize_t)MIN (IDX_MAX, SIZE_MAX / max_object_size)
< new_buf_len))
return REG_ESPACE;
@@ -403,7 +403,7 @@ build_wcs_upper_buffer (re_string_t *pstr)
{
size_t i;
- if (byte_idx + mbcdlen > pstr->bufs_len)
+ if ((ssize_t)(byte_idx + mbcdlen) > pstr->bufs_len)
{
pstr->cur_state = prev_st;
break;
@@ -753,7 +753,7 @@ re_string_reconstruct (re_string_t *pstr, Idx idx, int
eflags)
memset (&cur_state, 0, sizeof (cur_state));
mbclen = __mbrtowc (&wc2, (const char *) pp, mlen,
&cur_state);
- if (raw + offset - p <= mbclen
+ if (raw + offset - p <= (ssize_t)mbclen
&& mbclen < (size_t) -2)
{
memset (&pstr->cur_state, '\0',
diff --git a/lib/regexec.c b/lib/regexec.c
index 90330ef39..9ad488044 100644
--- a/lib/regexec.c
+++ b/lib/regexec.c
@@ -34,7 +34,7 @@ static void sift_ctx_init (re_sift_context_t *sctx,
re_dfastate_t **sifted_sts,
static reg_errcode_t re_search_internal (const regex_t *preg,
const char *string, Idx length,
Idx start, Idx last_start, Idx stop,
- size_t nmatch, regmatch_t pmatch[],
+ ssize_t nmatch, regmatch_t pmatch[],
int eflags);
static regoff_t re_search_2_stub (struct re_pattern_buffer *bufp,
const char *string1, Idx length1,
@@ -63,7 +63,7 @@ static reg_errcode_t push_fail_stack (struct re_fail_stack_t
*fs,
re_node_set *eps_via_nodes);
static reg_errcode_t set_regs (const regex_t *preg,
const re_match_context_t *mctx,
- size_t nmatch, regmatch_t *pmatch,
+ ssize_t nmatch, regmatch_t *pmatch,
bool fl_backtrack);
static reg_errcode_t free_fail_stack_return (struct re_fail_stack_t *fs);
@@ -484,7 +484,7 @@ re_copy_regs (struct re_registers *regs, regmatch_t
*pmatch, Idx nregs,
{ /* Yes. If we need more elements than were already
allocated, reallocate them. If we need fewer, just
leave it alone. */
- if (__glibc_unlikely (need_regs > regs->num_regs))
+ if (__glibc_unlikely (need_regs > (ssize_t)regs->num_regs))
{
regoff_t *new_start = re_realloc (regs->start, regoff_t, need_regs);
regoff_t *new_end;
@@ -505,7 +505,7 @@ re_copy_regs (struct re_registers *regs, regmatch_t
*pmatch, Idx nregs,
{
DEBUG_ASSERT (regs_allocated == REGS_FIXED);
/* This function may not be called with REGS_FIXED and nregs too big. */
- DEBUG_ASSERT (nregs <= regs->num_regs);
+ DEBUG_ASSERT ((ssize_t)nregs <= regs->num_regs);
rval = REGS_FIXED;
}
@@ -515,7 +515,7 @@ re_copy_regs (struct re_registers *regs, regmatch_t
*pmatch, Idx nregs,
regs->start[i] = pmatch[i].rm_so;
regs->end[i] = pmatch[i].rm_eo;
}
- for ( ; i < regs->num_regs; ++i)
+ for ( ; i < (ssize_t)regs->num_regs; ++i)
regs->start[i] = regs->end[i] = -1;
return rval;
@@ -584,7 +584,7 @@ re_exec (const char *s)
static reg_errcode_t
__attribute_warn_unused_result__
re_search_internal (const regex_t *preg, const char *string, Idx length,
- Idx start, Idx last_start, Idx stop, size_t nmatch,
+ Idx start, Idx last_start, Idx stop, ssize_t nmatch,
regmatch_t pmatch[], int eflags)
{
reg_errcode_t err;
@@ -604,7 +604,7 @@ re_search_internal (const regex_t *preg, const char
*string, Idx length,
? preg->fastmap : NULL);
RE_TRANSLATE_TYPE t = preg->translate;
- extra_nmatch = (nmatch > preg->re_nsub) ? nmatch - (preg->re_nsub + 1) : 0;
+ extra_nmatch = (nmatch > (ssize_t)preg->re_nsub) ? nmatch - (preg->re_nsub +
1) : 0;
nmatch -= extra_nmatch;
/* Check if the DFA haven't been compiled. */
@@ -653,9 +653,10 @@ re_search_internal (const regex_t *preg, const char
*string, Idx length,
if (nmatch > 1 || dfa->has_mb_node)
{
/* Avoid overflow. */
- if (__glibc_unlikely ((MIN (IDX_MAX, SIZE_MAX / sizeof (re_dfastate_t *))
- <= mctx.input.bufs_len)))
- {
+ if (__glibc_unlikely ((ssize_t)MIN (IDX_MAX,
+ SIZE_MAX / sizeof (re_dfastate_t *))
+ <= mctx.input.bufs_len))
+ {
err = REG_ESPACE;
goto free_return;
}
@@ -920,7 +921,8 @@ prune_impossible_nodes (re_match_context_t *mctx)
halt_node = mctx->last_node;
/* Avoid overflow. */
- if (__glibc_unlikely (MIN (IDX_MAX, SIZE_MAX / sizeof (re_dfastate_t *))
+ if (__glibc_unlikely ((ssize_t)MIN (IDX_MAX,
+ SIZE_MAX / sizeof (re_dfastate_t *))
<= match_last))
return REG_ESPACE;
@@ -1381,7 +1383,7 @@ pop_fail_stack (struct re_fail_stack_t *fs, Idx *pidx,
Idx nregs,
static reg_errcode_t
__attribute_warn_unused_result__
-set_regs (const regex_t *preg, const re_match_context_t *mctx, size_t nmatch,
+set_regs (const regex_t *preg, const re_match_context_t *mctx, ssize_t nmatch,
regmatch_t *pmatch, bool fl_backtrack)
{
const re_dfa_t *dfa = preg->buffer;
@@ -1416,7 +1418,7 @@ set_regs (const regex_t *preg, const re_match_context_t
*mctx, size_t nmatch,
regmatch_t *prev_idx_match = regmatch_list_begin (&prev_match);
memcpy (prev_idx_match, pmatch, sizeof (regmatch_t) * nmatch);
- for (idx = pmatch[0].rm_so; idx <= pmatch[0].rm_eo ;)
+ for (idx = pmatch[0].rm_so; (ssize_t)idx <= (long)pmatch[0].rm_eo ;)
{
update_regs (dfa, pmatch, prev_idx_match, cur_node, idx, nmatch);
@@ -2860,7 +2862,8 @@ check_arrival (re_match_context_t *mctx, state_array_t
*path, Idx top_node,
if (__glibc_unlikely (IDX_MAX - old_alloc < incr_alloc))
return REG_ESPACE;
new_alloc = old_alloc + incr_alloc;
- if (__glibc_unlikely (SIZE_MAX / sizeof (re_dfastate_t *) < new_alloc))
+ if (__glibc_unlikely ((ssize_t)(SIZE_MAX / sizeof (re_dfastate_t *))
+ < new_alloc))
return REG_ESPACE;
new_array = re_realloc (path->array, re_dfastate_t *, new_alloc);
if (__glibc_unlikely (new_array == NULL))
@@ -3996,7 +3999,8 @@ extend_buffers (re_match_context_t *mctx, int min_len)
re_string_t *pstr = &mctx->input;
/* Avoid overflow. */
- if (__glibc_unlikely (MIN (IDX_MAX, SIZE_MAX / sizeof (re_dfastate_t *)) / 2
+ if (__glibc_unlikely ((ssize_t)MIN (IDX_MAX,
+ SIZE_MAX / sizeof (re_dfastate_t *)) / 2
<= pstr->bufs_len))
return REG_ESPACE;
@@ -4066,7 +4070,7 @@ match_ctx_init (re_match_context_t *mctx, int eflags, Idx
n)
size_t max_object_size =
MAX (sizeof (struct re_backref_cache_entry),
sizeof (re_sub_match_top_t *));
- if (__glibc_unlikely (MIN (IDX_MAX, SIZE_MAX / max_object_size) < n))
+ if (__glibc_unlikely ((ssize_t)MIN (IDX_MAX, SIZE_MAX / max_object_size)
< n))
return REG_ESPACE;
mctx->bkref_ents = re_malloc (struct re_backref_cache_entry, n);
diff --git a/lib/vasnprintf.c b/lib/vasnprintf.c
index d9b669d15..360ca6948 100644
--- a/lib/vasnprintf.c
+++ b/lib/vasnprintf.c
@@ -5573,7 +5573,7 @@ VASNPRINTF (DCHAR_T *resultbuf, size_t *lengthp,
#endif
#if !USE_SNPRINTF
- if (count >= tmp_length)
+ if (count >= (ssize_t)tmp_length)
/* tmp_length was incorrectly calculated - fix the
code above! */
abort ();
@@ -5663,7 +5663,7 @@ VASNPRINTF (DCHAR_T *resultbuf, size_t *lengthp,
#if DCHAR_IS_TCHAR && !USE_SNPRINTF
/* Make room for the result. */
- if (count > allocated - length)
+ if (count > (ssize_t)(allocated - length))
{
/* Need at least count elements. But allocate
proportionally. */
--
2.33.0
- [PATCH 00/11] Code hygiene fixes from grub, Robbie Harwood, 2021/10/25
- [PATCH 08/11] Fix __argp_fmtstream_point()'s return type and comparisons with it, Robbie Harwood, 2021/10/25
- [PATCH 07/11] Make CFLAGS less painful, Robbie Harwood, 2021/10/25
- [PATCH 02/11] argp-parse.c (__argp_input): Don't crash if pstate is NULL, Robbie Harwood, 2021/10/25
- [PATCH 05/11] Fix width computation, Robbie Harwood, 2021/10/25
- [PATCH 01/11] Fix base64 module to work with grub codebase, Robbie Harwood, 2021/10/25
- [PATCH 06/11] Make gnulib's regcomp not abort(), Robbie Harwood, 2021/10/25
- [PATCH 03/11] gnulib/regexec: Fix possible null-dereference, Robbie Harwood, 2021/10/25
- [PATCH 11/11] Fixup for -Werror=ignored-qualifiers issues, Robbie Harwood, 2021/10/25
- [PATCH 04/11] gnulib/regexec: Resolve unused variable, Robbie Harwood, 2021/10/25
- [PATCH 09/11] Fix up a bunch of "gcc -Werror=sign-compare" complaints,
Robbie Harwood <=
- [PATCH 10/11] Paper over a stringop-overflow warning about wide char handling, Robbie Harwood, 2021/10/25