Commit acccfc75 authored by bol-van's avatar bol-van
Browse files

nfqws: backport QUICDefragCrypto

parent a92b4a54
Loading
Loading
Loading
Loading
+10 −11
Original line number Diff line number Diff line
@@ -888,28 +888,27 @@ bool QUICDefragCrypto(const uint8_t *clean,size_t clean_len, uint8_t *defrag,siz
			if ((pos+sz)>clean_len) return false;

			if ((offset+sz)>defrag_data_len) return false; // defrag buf overflow

			// remove exact duplicates early to save cpu
			for(i=0;i<range;i++)
				if (ranges[i].offset==offset && ranges[i].len==sz)
					goto skip_range;

			if (zeropos < offset)
				// make sure no uninitialized gaps exist in case of not full fragment coverage
				memset(defrag_data+zeropos,0,offset-zeropos);
			if ((offset+sz) > zeropos)
				zeropos=offset+sz;

			memcpy(defrag_data+offset,clean+pos,sz);
			if ((offset+sz) > szmax) szmax = offset+sz;

			found=true;
			pos+=sz;

			// remove exact duplicates early to save cpu
			for(i=0;i<range;i++)
				if (ranges[i].offset==offset && ranges[i].len==sz)
					goto endloop;

			if ((offset+sz) > szmax) szmax = offset+sz;
			memcpy(defrag_data+offset,clean+pos,sz);
			ranges[range].offset = offset;
			ranges[range].len = sz;
			range++;
skip_range:
			pos+=sz;
		}
endloop:
	}
	if (found)
	{