T09 · Insecure Skill Coding Practices
- Location
skill_quotation_engine_impl.py:30- Finding
Unvalidated Financial Inputs Permit Quotation Manipulation
- Content
View full analysis
dict: """ Generate a quotation. Args: show_data: Show data rental_days: Number of rental days labor_count: Number of technicians labor_rate: Daily labor rate transport_km: Transportation distance transport_rate: Transportation rate insurance_rate: Insurance rate management_rate: Management rate """ # 1. Equipment rental fee equipment_cost = 0 equipment_items = [] for eq in show_data.get("equipment", []): category = eq.get("category", "control") qty = eq.get("quantity", 1) daily_rate = self._get_daily_rate(category, eq.get("model", "")) subtotal = daily_rate * qty * rental_days equipment_items.append({ "name": f"{eq.get('manufacturer', '')} {eq.get('model', '')}", "category": category, "quantity": qty, "daily_rate": daily_rate, "days": rental_days, "subtotal": subtotal }) equipment_cost += subtotal # 2. Labor fee labor_cost = labor_count * labor_rate * rental_days # 3. Round-trip transportation fee transport_cost = transport_km * transport_rate * 2 # 4. Insurance fee insurance_cost = equipment_cost * insurance_rate # 5. Management fee subtotal = equipment_cost + labor_cost + transport_cost + insurance_cost management_cost = subtotal * management_rate ``` ### Technical Analysis The quotation engine directly uses call ...[truncated 2872 chars]- Remediation
View remediation
