Changeset: 8801848d6f1b for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=8801848d6f1b
Modified Files:
        gdk/gdk_cand.c
Branch: unlock
Log Message:

Check boundaries so that we don't get overflow.


diffs (32 lines):

diff --git a/gdk/gdk_cand.c b/gdk/gdk_cand.c
--- a/gdk/gdk_cand.c
+++ b/gdk/gdk_cand.c
@@ -1007,15 +1007,20 @@ canditer_sliceval_mask(struct canditer *
                return NULL;
        bn->tkey = true;
 
-       lo1 -= ci->mskoff;
-       hi1 -= ci->mskoff;
-       for (oid o = lo1; o < hi1 && cnt1 > 0; o++) {
-               if (ci->mask[o / 32] & (1U << (o % 32))) {
-                       if (BUNappend(bn, &(oid){o + ci->mskoff}, false) != 
GDK_SUCCEED) {
-                               BBPreclaim(bn);
-                               return NULL;
+       if (hi1 > ci->mskoff) {
+               if (lo1 < ci->mskoff)
+                       lo1 = 0;
+               else
+                       lo1 -= ci->mskoff;
+               hi1 -= ci->mskoff;
+               for (oid o = lo1; o < hi1 && cnt1 > 0; o++) {
+                       if (ci->mask[o / 32] & (1U << (o % 32))) {
+                               if (BUNappend(bn, &(oid){o + ci->mskoff}, 
false) != GDK_SUCCEED) {
+                                       BBPreclaim(bn);
+                                       return NULL;
+                               }
+                               cnt1--;
                        }
-                       cnt1--;
                }
        }
        if (cnt2 > 0) {
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to