{
  "filename": "src/import.rs",
  "rule": "- name: import-is-bounded-before-blocking\n  where: \"src/import.rs\"\n  ensure: >-\n    The handler must reject more than MAX_RECORDS before passing the records into web::block.",
  "corrected": "use actix_web::{web, HttpResponse, Error};\n\nconst MAX_RECORDS: usize = 10_000;\n\npub async fn import(records:web::Json<Vec<String>>) -> Result<HttpResponse,Error> {\n    if records.len() > MAX_RECORDS {\n        return Ok(HttpResponse::PayloadTooLarge().finish());\n    }\n    let records = records.into_inner();\n    let count = web::block(move || {\n        records.iter().filter(|record| !record.trim().is_empty()).count()\n    }).await.map_err(actix_web::error::ErrorInternalServerError)?;\n    Ok(HttpResponse::Ok().json(count))\n}\n",
  "broken": "use actix_web::{web, HttpResponse, Error};\n\nconst MAX_RECORDS: usize = 10_000;\n\npub async fn import(records:web::Json<Vec<String>>) -> Result<HttpResponse,Error> {\n    let records = records.into_inner();\n    let count = web::block(move || {\n        records.iter().filter(|record| !record.trim().is_empty()).count()\n    }).await.map_err(actix_web::error::ErrorInternalServerError)?;\n    Ok(HttpResponse::Ok().json(count))\n}\n",
  "regression": [
    "    if records.len() > MAX_RECORDS {\n        return Ok(HttpResponse::PayloadTooLarge().finish());\n    }\n",
    ""
  ],
  "test_scenarios": [
    [
      "Within count limit",
      "Work scheduled"
    ],
    [
      "Above count limit",
      "413 before blocking work"
    ],
    [
      "Huge individual record",
      "Byte-level request limit rejects it"
    ],
    [
      "Many simultaneous imports",
      "Admission-control test verifies finite concurrency"
    ]
  ],
  "test_source": null,
  "test_command": "cargo test import_limits"
}