mirror of
https://github.com/postgres/postgres.git
synced 2026-06-09 00:32:10 -04:00
dict_synonym.c: remove incorrect outlen.
Previously, outlen was miscalculated if case_sensitive was false and str_tolower() changed the byte length of the string. If outlen was too large, pnstrdup() would stop at the NUL terminator, preventing overrun. But if outlen was too small, it would cause truncation. Fix by just removing outlen. It was only used in a single site, which could just as well use pstrdup(). Discussion: https://postgre.es/m/1101e1a3afbbabb503317069c40374b82e6f4cac.camel@j-davis.com Reviewed-by: Tristan Partin <tristan@partin.io> Backpatch-through: 14
This commit is contained in:
parent
a0354e29c4
commit
9234e33371
1 changed files with 1 additions and 3 deletions
|
|
@ -24,7 +24,6 @@ typedef struct
|
|||
{
|
||||
char *in;
|
||||
char *out;
|
||||
int outlen;
|
||||
uint16 flags;
|
||||
} Syn;
|
||||
|
||||
|
|
@ -189,7 +188,6 @@ dsynonym_init(PG_FUNCTION_ARGS)
|
|||
d->syn[cur].out = str_tolower(starto, strlen(starto), DEFAULT_COLLATION_OID);
|
||||
}
|
||||
|
||||
d->syn[cur].outlen = strlen(starto);
|
||||
d->syn[cur].flags = flags;
|
||||
|
||||
cur++;
|
||||
|
|
@ -237,7 +235,7 @@ dsynonym_lexize(PG_FUNCTION_ARGS)
|
|||
PG_RETURN_POINTER(NULL);
|
||||
|
||||
res = palloc0_array(TSLexeme, 2);
|
||||
res[0].lexeme = pnstrdup(found->out, found->outlen);
|
||||
res[0].lexeme = pstrdup(found->out);
|
||||
res[0].flags = found->flags;
|
||||
|
||||
PG_RETURN_POINTER(res);
|
||||
|
|
|
|||
Loading…
Reference in a new issue