Changeset: 3d13c05bec56 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/3d13c05bec56
Modified Files:
        geom/monetdb5/geom.c
        geom/monetdb5/geom_atoms.c
        monetdb5/modules/kernel/aggr.c
Branch: Dec2025
Log Message:

Add overflow tests.


diffs (51 lines):

diff --git a/geom/monetdb5/geom.c b/geom/monetdb5/geom.c
--- a/geom/monetdb5/geom.c
+++ b/geom/monetdb5/geom.c
@@ -2385,6 +2385,11 @@ geos2wkb(allocator *ma, wkb **geomWKB, s
                return NULL;
 
        assert(wkbLen <= GDK_int_max);
+       if (wkbLen > (size_t) GDK_int_max) {
+               GEOSFree_r(geoshandle, w);
+               GDKerror("geos2wkb: wkb length too large\n");
+               return NULL;
+       }
 
        *geomWKB = ma_alloc(ma, wkb_size(wkbLen));
        //If malloc failed create a NULL wkb
@@ -2564,6 +2569,8 @@ wkbFromBinaryWithBuffer(allocator *ma, w
 
        wkbLength = strLength / 2;
        assert(wkbLength <= GDK_int_max);
+       if (wkbLength > (size_t) GDK_int_max)
+               throw(MAL, "geom.FromBinary", SQLSTATE(38000) "Geos length too 
large");
 
        if (!*geomWKB || *len < wkb_size(wkbLength)) {
                *len = wkb_size(wkbLength);
diff --git a/geom/monetdb5/geom_atoms.c b/geom/monetdb5/geom_atoms.c
--- a/geom/monetdb5/geom_atoms.c
+++ b/geom/monetdb5/geom_atoms.c
@@ -211,9 +211,9 @@ wkbWRITE(const void *A, stream *s, size_
 
        (void) cnt;
        assert(cnt == 1);
-       if (!mnstr_writeInt(s, len))    /* 64bit: check for overflow */
+       if (!mnstr_writeInt(s, len))
                return GDK_FAIL;
-       if (!mnstr_writeInt(s, srid))   /* 64bit: check for overflow */
+       if (!mnstr_writeInt(s, srid))
                return GDK_FAIL;
        if (len > 0 &&          /* 64bit: check for overflow */
            mnstr_write(s, (char *) a->data, len, 1) < 0)
diff --git a/monetdb5/modules/kernel/aggr.c b/monetdb5/modules/kernel/aggr.c
--- a/monetdb5/modules/kernel/aggr.c
+++ b/monetdb5/modules/kernel/aggr.c
@@ -75,7 +75,7 @@ AGGRgrouped_bat_or_val(bat *retval1, bat
                        }
                        BBPunfix(q->batCacheid);
                } else {
-                       qvalue = *(quantile_val);
+                       qvalue = *quantile_val;
                }
                if (qvalue < 0 || qvalue > 1) {
                        BBPreclaim(b);
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to