diff options
author | Bruce Momjian <bruce@momjian.us> | 2002-08-22 05:05:19 +0000 |
---|---|---|
committer | Bruce Momjian <bruce@momjian.us> | 2002-08-22 05:05:19 +0000 |
commit | b4f24fed7a731e6d015403d5dfb40a52a80be926 (patch) | |
tree | 00a214610a08b46ea34a7f03cb4cff0fb10ae499 /src/backend/utils/adt/oracle_compat.c | |
parent | 090884bed3449b730d028a9ff8c613bd6c70f586 (diff) | |
download | postgresql-b4f24fed7a731e6d015403d5dfb40a52a80be926.tar.gz postgresql-b4f24fed7a731e6d015403d5dfb40a52a80be926.zip |
Commit updated repeat() patch, from Neil Conway
Diffstat (limited to 'src/backend/utils/adt/oracle_compat.c')
-rw-r--r-- | src/backend/utils/adt/oracle_compat.c | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/src/backend/utils/adt/oracle_compat.c b/src/backend/utils/adt/oracle_compat.c index 6236d74c9d4..bd2d884b3fd 100644 --- a/src/backend/utils/adt/oracle_compat.c +++ b/src/backend/utils/adt/oracle_compat.c @@ -9,7 +9,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/utils/adt/oracle_compat.c,v 1.40 2002/08/22 04:55:05 momjian Exp $ + * $Header: /cvsroot/pgsql/src/backend/utils/adt/oracle_compat.c,v 1.41 2002/08/22 05:05:19 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -1008,8 +1008,14 @@ repeat(PG_FUNCTION_ARGS) tlen = (VARHDRSZ + (count * slen)); /* Check for integer overflow */ - if (slen != 0 && count != 0 && tlen / slen != count) - elog(ERROR, "Requested buffer is too large."); + if (slen != 0 && count != 0) + { + int check = count * slen; + int check2 = check + VARHDRSZ; + + if ((check / slen) != count || check2 <= check) + elog(ERROR, "Requested buffer is too large."); + } result = (text *) palloc(tlen); |