Summary
abortOfferStatus is never changed in listOffer().
Vulnerability Details
In the listOffer() function,
    function listOffer(address _stock, uint256 _amount, uint256 _collateralRate) external payable {
---SNIP---
        
        if (makerInfo.offerSettleType == OfferSettleType.Turbo) {
            address originOffer = makerInfo.originOffer;
            OfferInfo memory originOfferInfo = offerInfoMap[originOffer];
            
            if (_collateralRate != originOfferInfo.collateralRate) {
                revert InvalidCollateralRate();
            }
            originOfferInfo.abortOfferStatus = AbortOfferStatus.SubOfferListed;
        }
}
---SNIP---
if offerSettleType == turbo, abortOfferStatus is set to SubOfferListed but due to originOfferInfo being memory, change is never updated.
Also, even if it was storage, it is overridden here:
        offerInfoMap[offerAddr] = OfferInfo({
            id: stockInfo.id,
            authority: _msgSender(),
            maker: offerInfo.maker,
            offerStatus: OfferStatus.Virgin,
            offerType: offerInfo.offerType,
            abortOfferStatus: AbortOfferStatus.Initialized,
            points: stockInfo.points,
            amount: _amount,
            collateralRate: _collateralRate,
            usedPoints: 0,
            tradeTax: 0,
            settledPoints: 0,
            settledPointTokenAmount: 0,
            settledCollateralAmount: 0
        });
Impact
status is never changed for turbo type.
Tools Used
Manual Analysis
Recommendations
change the storage location from memory to storage and have a check for settle type while setting the struct at the end.