Set less crazy limits (than INT_MAX) for pad and trim, makes ossfuzz happier.

This commit is contained in:
nicm
2026-04-05 13:24:02 +00:00
parent cad282ebb7
commit d5ed967f58

View File

@@ -84,6 +84,12 @@ format_job_cmp(struct format_job *fj1, struct format_job *fj2)
return (strcmp(fj1->cmd, fj2->cmd)); return (strcmp(fj1->cmd, fj2->cmd));
} }
/* Maimum pad and trim width. */
#define FORMAT_MAX_WIDTH 10000
/* Maimum repeat size. */
#define FORMAT_MAX_REPEAT 10000
/* Format modifiers. */ /* Format modifiers. */
#define FORMAT_TIMESTRING 0x1 #define FORMAT_TIMESTRING 0x1
#define FORMAT_BASENAME 0x2 #define FORMAT_BASENAME 0x2
@@ -4989,8 +4995,8 @@ format_replace(struct format_expand_state *es, const char *key, size_t keylen,
case '=': case '=':
if (fm->argc < 1) if (fm->argc < 1)
break; break;
limit = strtonum(fm->argv[0], INT_MIN + 1, limit = strtonum(fm->argv[0], -FORMAT_MAX_WIDTH,
INT_MAX, &errstr); FORMAT_MAX_WIDTH, &errstr);
if (errstr != NULL) if (errstr != NULL)
limit = 0; limit = 0;
if (fm->argc >= 2 && fm->argv[1] != NULL) if (fm->argc >= 2 && fm->argv[1] != NULL)
@@ -4999,8 +5005,8 @@ format_replace(struct format_expand_state *es, const char *key, size_t keylen,
case 'p': case 'p':
if (fm->argc < 1) if (fm->argc < 1)
break; break;
width = strtonum(fm->argv[0], INT_MIN + 1, width = strtonum(fm->argv[0], -FORMAT_MAX_WIDTH,
INT_MAX, &errstr); FORMAT_MAX_WIDTH, &errstr);
if (errstr != NULL) if (errstr != NULL)
width = 0; width = 0;
break; break;
@@ -5223,7 +5229,7 @@ format_replace(struct format_expand_state *es, const char *key, size_t keylen,
format_log(es, "repeat syntax error: %s", copy); format_log(es, "repeat syntax error: %s", copy);
goto fail; goto fail;
} }
nrep = strtonum(right, 1, 10000, &errstr); nrep = strtonum(right, 1, FORMAT_MAX_REPEAT, &errstr);
if (errstr != NULL) if (errstr != NULL)
value = xstrdup(""); value = xstrdup("");
else { else {