diff --git a/src/plugins/fts-squat/squat-uidlist.c b/src/plugins/fts-squat/squat-uidlist.c index 923835ee8d..6682c2035e 100644 --- a/src/plugins/fts-squat/squat-uidlist.c +++ b/src/plugins/fts-squat/squat-uidlist.c @@ -195,8 +195,11 @@ uidlist_write_array(struct ostream *output, const uint32_t *uid_list, prev = 0; for (i = 0; i < uid_count; i++) { uid = uid_list[i]; - if (unlikely((uid & ~UID_LIST_MASK_RANGE) < prev)) + if (unlikely((uid & ~UID_LIST_MASK_RANGE) < prev)) { + if (!datastack) + i_free(uidbuf); return -1; + } if ((uid & UID_LIST_MASK_RANGE) == 0) { squat_pack_num(&bufp, (uid - prev) << 1); prev = uid + 1;