Commit updated repeat() patch, from Neil Conway
authorBruce Momjian
Thu, 22 Aug 2002 05:05:19 +0000 (05:05 +0000)
committerBruce Momjian
Thu, 22 Aug 2002 05:05:19 +0000 (05:05 +0000)
src/backend/utils/adt/oracle_compat.c

index 6236d74c9d450b408c259c0cc2265e79736a4ab1..bd2d884b3fd0c1b682f40f626f81a8afff964780 100644 (file)
@@ -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);