Ministack: Free, open-source local AWS emulator - 60+ services, Terraform compatible, real databases. Free forever. MIT licensed.
This report summarizes scanner evidence for ministackorg/ministack, a Python project with 4,932 GitHub stars. SynthScan examined 428,730 lines of code across 265 source files, recording 13060 pattern matches distributed across 20 syntactic categories. The legacy adjusted pattern signal is 40.9 (High pattern signal); it is not an authorship estimate.
Use the findings to ask whether maintainers can explain intent, verify dependencies, simplify unnecessary scaffolding, and focus review effort. Risk Payload v1 adds ownership, supply-chain, over-engineering, and review-effort vectors when available. These are prompts for human verification, not probabilities, security findings, or measured maintenance costs.
Use each vector to guide manual verification of the underlying findings.
Can maintainers explain intent, assumptions, and trade-offs? 8317 finding(s).
Are imports declared and package/API names verified? 293 finding(s).
Are wrappers, guards, and repeated structures necessary? 11970 finding(s).
Which changes need focused human review? 13060 finding(s).
This chart tracks the legacy adjusted pattern score across scan runs. Changes can reflect source changes, scan coverage, or detector/scoring versions; they do not measure AI adoption or prove that a team refactored code. Compare runs only when their scoring versions are compatible. The dashed line tracks the raw pattern-hit count.
Groups findings by configured severity weight. Severity is not a confidence estimate, security rating, or proof that a package is missing. Verify imports against the project's manifests and inspect each finding in its local design context.
This horizontal bar chart shows where configured pattern scores accumulate across directories. Treat the bars as locations to inspect, not as evidence of authorship or code quality. Use the file-level findings to decide whether a directory needs a focused ownership, dependency, complexity, or review check.
The scanner identified 13060 distinct pattern matches across 20 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a detector match to inspect in context. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the configured finding weight (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — legacy comment-context matches receive a ×1.5 score weight. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier under the legacy scoring model.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM⚡ | ministack/app.py | 1426 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | ministack/app.py | 1428 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | ministack/app.py | 2486 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | ministack/app.py | 2488 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | ministack/app.py | 235 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | ministack/app.py | 238 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | ministack/app.py | 842 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | ministack/app.py | 844 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | ministack/app.py | 1545 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | ministack/app.py | 1547 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | ministack/app.py | 2307 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | ministack/app.py | 2309 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | ministack/app.py | 2746 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | ministack/app.py | 2748 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | ministack/app.py | 2937 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | ministack/app.py | 2939 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | ministack/app.py | 568 | # --------------------------------------------------------------------------- | STRING |
| MEDIUM | ministack/app.py | 570 | # --------------------------------------------------------------------------- | STRING |
| MEDIUM | ministack/core/responses.py | 535 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | ministack/core/responses.py | 550 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | ministack/core/iam_evaluator.py | 715 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | ministack/core/iam_evaluator.py | 717 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | ministack/core/iam_evaluator.py | 29 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | ministack/core/iam_evaluator.py | 31 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | ministack/core/iam_evaluator.py | 82 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | ministack/core/iam_evaluator.py | 84 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | ministack/core/iam_evaluator.py | 129 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | ministack/core/iam_evaluator.py | 131 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | ministack/core/iam_evaluator.py | 151 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | ministack/core/iam_evaluator.py | 153 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | ministack/core/iam_evaluator.py | 472 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | ministack/core/iam_evaluator.py | 474 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | ministack/core/iam_evaluator.py | 559 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | ministack/core/iam_evaluator.py | 561 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | ministack/core/iam_evaluator.py | 812 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | ministack/core/iam_evaluator.py | 814 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | ministack/core/iam_evaluator.py | 1079 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | ministack/core/iam_evaluator.py | 1081 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | ministack/core/iam_evaluator.py | 1190 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | ministack/core/iam_evaluator.py | 1192 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | ministack/core/iam_evaluator.py | 1227 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | ministack/core/iam_evaluator.py | 1229 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | ministack/core/lambda_runtime.py | 745 | // ── require() intercept ──────────────────────────────────────────────── | COMMENT |
| MEDIUM | ministack/core/lambda_runtime.py | 131 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | ministack/core/lambda_runtime.py | 133 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | ministack/core/lambda_runtime.py | 367 | // ── Lambda stub (REST-based, not JSON-RPC) ───────────────────────────── | COMMENT |
| MEDIUM | ministack/core/lambda_runtime.py | 428 | // ── OpenSearch stub (REST-JSON, not JSON-RPC) ───────────────────────── | COMMENT |
| MEDIUM⚡ | ministack/core/lambda_runtime.py | 328 | # --------------------------------------------------------------------------- | STRING |
| MEDIUM⚡ | ministack/core/lambda_runtime.py | 330 | # --------------------------------------------------------------------------- | STRING |
| MEDIUM | ministack/core/lambda_runtime.py | 202 | # --------------------------------------------------------------------------- | STRING |
| MEDIUM | ministack/core/lambda_runtime.py | 204 | # --------------------------------------------------------------------------- | STRING |
| MEDIUM | ministack/core/lambda_runtime.py | 1695 | # --------------------------------------------------------------------------- | STRING |
| MEDIUM | ministack/core/lambda_runtime.py | 1697 | # --------------------------------------------------------------------------- | STRING |
| MEDIUM⚡ | ministack/core/pgproxy.py | 2470 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | ministack/core/pgproxy.py | 2472 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | ministack/core/pgproxy.py | 55 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | ministack/core/pgproxy.py | 57 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | ministack/core/pgproxy.py | 146 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | ministack/core/pgproxy.py | 148 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | ministack/core/pgproxy.py | 227 | # --------------------------------------------------------------------------- | COMMENT |
| 2770 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | CONTRIBUTING.md | 164 | def test_myservice_operation_one(mysvc): | CODE |
| LOW⚡ | ministack/app.py | 1431 | async def _handle_cognito_body_request(method: str, path: str, headers: dict, body: bytes, query_params: dict): | CODE |
| LOW | ministack/app.py | 83 | def _ws_resolve_iot_account_id(scope: dict, ws_headers: dict) -> str: | CODE |
| LOW | ministack/app.py | 310 | def call_service_handler_sync(handler, method, path, headers, body, query_params, timeout: float | None = None): | CODE |
| LOW | ministack/app.py | 742 | def _incomplete_request_body_response(method: str, path: str, headers: dict, query_params: dict): | CODE |
| LOW | ministack/app.py | 909 | def _handle_unknown_localstack_request(path: str, request_id: str): | CODE |
| LOW | ministack/app.py | 936 | def _handle_lambda_download_request(path: str, method: str): | CODE |
| LOW | ministack/app.py | 963 | async def _handle_cognito_get_request(method: str, path: str, headers: dict, query_params: dict): | CODE |
| LOW | ministack/app.py | 1012 | async def _handle_ses_messages_request(method: str, path: str, headers: dict, query_params: dict): | CODE |
| LOW | ministack/app.py | 1083 | async def _handle_sqs_messages_request(method: str, path: str, headers: dict, query_params: dict): | CODE |
| LOW | ministack/app.py | 1194 | async def _handle_sns_sms_messages_request(method: str, path: str, headers: dict, query_params: dict): | CODE |
| LOW | ministack/app.py | 1327 | def _handle_elasticache_ca_request(method: str, path: str): | CODE |
| LOW | ministack/app.py | 1401 | def _handle_transfer_sftp_ports_request(method: str, path: str): | CODE |
| LOW | ministack/app.py | 1442 | async def _handle_admin_config_request(path: str, method: str, body: bytes): | CODE |
| LOW | ministack/app.py | 1498 | async def _handle_post_body_shortcuts( | CODE |
| LOW | ministack/app.py | 1694 | async def _handle_ecr_registry_request(method: str, path: str, headers: dict, body: bytes, query_params: dict): | CODE |
| LOW | ministack/app.py | 1812 | def _resolve_custom_domain_request(host: str, path: str): | CODE |
| LOW | ministack/app.py | 1829 | def _parse_cloudfront_dataplane_host(host: str) -> str | None: | CODE |
| LOW | ministack/app.py | 1835 | async def _handle_cloudfront_dataplane_request( | CODE |
| LOW | ministack/app.py | 1855 | async def _handle_execute_api_request( | CODE |
| LOW | ministack/app.py | 1933 | def _is_potential_alb_request(host: str, path: str) -> bool: | CODE |
| LOW | ministack/app.py | 1966 | def _function_url_auth_target(url_id: str) -> tuple[str, dict, tuple | None]: | CODE |
| LOW | ministack/app.py | 1999 | async def _handle_lambda_url_request(host: str, path: str, method: str, headers: dict, body: bytes, query_params: dict): | CODE |
| LOW | ministack/app.py | 2217 | def _iceberg_targets_glue_catalog(path, query_params): | CODE |
| LOW | ministack/app.py | 2238 | async def _handle_special_data_plane_request( | CODE |
| LOW | ministack/app.py | 2544 | async def _dispatch_service_request( | CODE |
| LOW | ministack/app.py | 3174 | def _build_persistence_save_dict(): | CODE |
| LOW | ministack/core/responses.py | 33 | def _account_from_sts_session(access_key_id: str): | CODE |
| LOW | ministack/core/responses.py | 378 | def _best_effort_region_from_arnish(value): | CODE |
| LOW | ministack/core/responses.py | 594 | def expected_error_content_type(service: str, emitted_ct: str) -> str | None: | CODE |
| LOW | ministack/core/responses.py | 719 | def install_docker_hub_fallback() -> None: | CODE |
| LOW⚡ | ministack/core/iam_evaluator.py | 719 | def _role_name_from_assumed_arn(assumed_arn: str) -> str: | CODE |
| LOW | ministack/core/iam_evaluator.py | 243 | def _op_string_equals_ignore_case(actual: str, expected: str) -> bool: | CODE |
| LOW | ministack/core/iam_evaluator.py | 247 | def _op_string_not_equals_ignore_case(actual: str, expected: str) -> bool: | CODE |
| LOW | ministack/core/iam_evaluator.py | 380 | def _evaluate_single_condition(operator: str, actual: Any, | CODE |
| LOW | ministack/core/iam_evaluator.py | 662 | def _service_principal_matches(principal: Any, service: str) -> bool: | CODE |
| LOW | ministack/core/iam_evaluator.py | 784 | def _resolve_managed_policy_document(policy_arn: str, | CODE |
| LOW | ministack/core/iam_evaluator.py | 893 | def find_iam_access_key_account(access_key_id: str) -> str | None: | CODE |
| LOW | ministack/core/lambda_runtime.py | 59 | def _lambda_function_account_region_from_arn(arn: str) -> tuple[str, str]: | CODE |
| LOW | ministack/core/lambda_runtime.py | 73 | def _account_region_from_function_config(config: dict) -> tuple[str, str]: | CODE |
| LOW | ministack/core/sigv4.py | 24 | def build_canonical_query_string( | CODE |
| LOW | ministack/core/sigv4.py | 116 | def presigned_request_is_expired( | CODE |
| LOW | ministack/core/iam_actions.py | 837 | def _kms_key_id_from_ciphertext(ciphertext_b64: str) -> str: | CODE |
| LOW | ministack/core/iam_actions.py | 1650 | def eventbridge_resource_arns(body: bytes, region: str, account_id: str) -> list[str]: | CODE |
| LOW | ministack/core/iam_actions.py | 1761 | def dynamodb_transaction_checks( | CODE |
| LOW | ministack/services/cloudtrail.py | 226 | def _invalid_home_region_error(name: str, home_region: str): | CODE |
| LOW | ministack/services/cloudtrail.py | 418 | def _is_non_aws_trail_arn_partition(raw: str) -> bool: | CODE |
| LOW⚡ | ministack/services/mediaconnect.py | 295 | def _describe_flow_source_metadata(arn): | CODE |
| LOW⚡ | ministack/services/mediaconnect.py | 302 | def _describe_flow_source_thumbnail(arn): | CODE |
| LOW | ministack/services/sts.py | 110 | def _credential_error_response(error: CredentialResolutionError): | CODE |
| LOW⚡ | ministack/services/lambda_microvms.py | 780 | def _create_microvm_shell_auth_token(microvm_id, body): | CODE |
| LOW | ministack/services/lambda_microvms.py | 769 | def _create_microvm_auth_token(microvm_id, body): | CODE |
| LOW | ministack/services/lambda_microvms.py | 896 | def _get_microvm_image_version(image_identifier, image_version): | CODE |
| LOW⚡ | ministack/services/rds_iam_plugin.py | 160 | def configure_iam_auth_broker(container, resource_kind, resource_identifier, broker_host, broker_port): | CODE |
| LOW | ministack/services/dsql.py | 955 | def _get_vpc_endpoint_service_name(identifier): | CODE |
| LOW⚡ | ministack/services/rds.py | 1002 | def _legacy_scoped_rds_docker_volume_name(db_id, account_id=None, region=None): | CODE |
| LOW⚡ | ministack/services/rds.py | 1010 | def _rds_cluster_docker_volume_name(cluster_id, account_id=None, region=None): | CODE |
| LOW⚡ | ministack/services/rds.py | 2739 | def _mysql_gtid_history_ready(cluster): | CODE |
| LOW⚡ | ministack/services/rds.py | 2746 | def _mysql_replication_server_id(account_id, region, cluster_id): | CODE |
| LOW⚡ | ministack/services/rds.py | 2752 | def _global_cluster_member_for_cluster(cluster): | CODE |
| 7454 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | ministack/app.py | 2482 | except Exception: | CODE |
| HIGH | ministack/app.py | 2527 | except Exception: | CODE |
| HIGH | ministack/app.py | 2046 | except ValueError: | CODE |
| HIGH | ministack/app.py | 3485 | except OSError: | CODE |
| HIGH | ministack/app.py | 3507 | except (ImportError, ValueError, OSError): | CODE |
| HIGH | ministack/app.py | 822 | except Exception: | CODE |
| HIGH | ministack/app.py | 2811 | except Exception: | CODE |
| HIGH | ministack/core/responses.py | 54 | except Exception: | CODE |
| HIGH | ministack/core/iam_evaluator.py | 284 | except (ValueError, AttributeError): | CODE |
| HIGH | ministack/core/iam_evaluator.py | 288 | except (ValueError, TypeError, OSError): | CODE |
| HIGH | ministack/core/persistence.py | 162 | except OSError: | CODE |
| HIGH | ministack/core/lambda_runtime.py | 54 | except (AttributeError, TypeError): | CODE |
| HIGH | ministack/core/lambda_runtime.py | 1450 | except Exception: | CODE |
| HIGH | ministack/core/lambda_runtime.py | 1075 | except Exception: | CODE |
| HIGH | ministack/core/lambda_runtime.py | 1293 | except queue.Empty: | CODE |
| HIGH | ministack/core/lambda_runtime.py | 1503 | except Exception: | CODE |
| HIGH | ministack/core/lambda_runtime.py | 1958 | except Exception: | CODE |
| HIGH | ministack/core/lambda_runtime.py | 1477 | except Exception: | CODE |
| HIGH | ministack/core/lambda_runtime.py | 1963 | except Exception: | CODE |
| HIGH | ministack/core/lambda_runtime.py | 2226 | except Exception: | CODE |
| HIGH | ministack/core/lambda_runtime.py | 2230 | except Exception: | CODE |
| HIGH | ministack/core/lambda_runtime.py | 1268 | except Exception: | CODE |
| HIGH | ministack/core/lambda_runtime.py | 1952 | except queue.Empty: | CODE |
| HIGH | ministack/core/lambda_runtime.py | 1956 | except queue.Full: | CODE |
| HIGH | ministack/core/node_pool.py | 58 | except Exception: | CODE |
| HIGH | ministack/core/node_pool.py | 68 | except Exception: | CODE |
| HIGH | ministack/core/concurrency.py | 145 | except RuntimeError: | CODE |
| HIGH | ministack/core/concurrency.py | 188 | except Exception: | CODE |
| HIGH | ministack/core/pgproxy.py | 2455 | except (asyncio.IncompleteReadError, ConnectionResetError, BrokenPipeError, OSError): | CODE |
| HIGH | ministack/core/pgproxy.py | 2466 | except Exception: | CODE |
| HIGH | ministack/core/tls.py | 57 | except ValueError: | CODE |
| HIGH | ministack/core/rds_iam.py | 468 | except Exception: | CODE |
| HIGH | ministack/core/router.py | 648 | except ValueError: | CODE |
| HIGH | ministack/core/router.py | 50 | except Exception: | CODE |
| HIGH | ministack/services/cloudtrail.py | 163 | except ValueError: | CODE |
| HIGH | ministack/services/sts.py | 192 | except (json.JSONDecodeError, TypeError): | CODE |
| HIGH | ministack/services/lambda_microvms.py | 490 | except Exception: | CODE |
| HIGH | ministack/services/lambda_microvms.py | 744 | except Exception: | CODE |
| HIGH | ministack/services/rds_iam_plugin.py | 151 | except Exception: | CODE |
| HIGH | ministack/services/rds_iam_plugin.py | 156 | except Exception: | CODE |
| HIGH | ministack/services/dsql.py | 246 | except Exception: | CODE |
| HIGH | ministack/services/dsql.py | 347 | except RuntimeError: | CODE |
| HIGH | ministack/services/dsql.py | 1170 | except RuntimeError: | CODE |
| HIGH | ministack/services/dsql.py | 240 | except Exception: | CODE |
| HIGH | ministack/services/rds.py | 1623 | except Exception: | CODE |
| HIGH | ministack/services/rds.py | 1388 | except Exception: | CODE |
| HIGH | ministack/services/rds.py | 2421 | except Exception: | CODE |
| HIGH | ministack/services/rds.py | 2498 | except Exception: | CODE |
| HIGH | ministack/services/rds.py | 2516 | except Exception: | CODE |
| HIGH | ministack/services/rds.py | 2561 | except Exception: | CODE |
| HIGH | ministack/services/rds.py | 2650 | except ValueError: | CODE |
| HIGH | ministack/services/rds.py | 2978 | except Exception: | CODE |
| HIGH | ministack/services/rds.py | 2419 | except Exception: | CODE |
| HIGH | ministack/services/rds.py | 2543 | except Exception: | CODE |
| HIGH | ministack/services/rds.py | 4234 | except json.JSONDecodeError: | CODE |
| HIGH | ministack/services/rds.py | 6198 | except Exception: | CODE |
| HIGH | ministack/services/rds.py | 6203 | except Exception: | CODE |
| HIGH | ministack/services/rds.py | 526 | except Exception: | CODE |
| HIGH | ministack/services/rds.py | 1261 | except Exception: | CODE |
| HIGH | ministack/services/rds.py | 1607 | except Exception: | CODE |
| 509 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | ministack/app.py | 1421 | except Exception as e: | CODE |
| LOW⚡ | ministack/app.py | 2482 | except Exception: | CODE |
| LOW⚡ | ministack/app.py | 3077 | except Exception as e: | CODE |
| LOW⚡ | ministack/app.py | 3086 | except Exception as e: | CODE |
| LOW⚡ | ministack/app.py | 3093 | except Exception as e: | CODE |
| LOW⚡ | ministack/app.py | 3111 | except Exception as e: | CODE |
| LOW⚡ | ministack/app.py | 3116 | except Exception as e: | CODE |
| LOW⚡ | ministack/app.py | 3122 | except Exception as e: | CODE |
| LOW | ministack/app.py | 44 | except Exception: | CODE |
| LOW | ministack/app.py | 818 | except Exception: | CODE |
| LOW | ministack/app.py | 822 | except Exception: | CODE |
| LOW | ministack/app.py | 1051 | except Exception: | CODE |
| LOW | ministack/app.py | 1076 | except Exception as e: | CODE |
| LOW | ministack/app.py | 1137 | except Exception: | CODE |
| LOW | ministack/app.py | 1184 | except Exception as e: | CODE |
| LOW | ministack/app.py | 1229 | except Exception: | CODE |
| LOW | ministack/app.py | 1258 | except Exception as e: | CODE |
| LOW | ministack/app.py | 1336 | except Exception as e: | CODE |
| LOW | ministack/app.py | 1354 | except Exception as e: | CODE |
| LOW | ministack/app.py | 1385 | except Exception as e: | CODE |
| LOW | ministack/app.py | 1612 | except Exception as e: | CODE |
| LOW | ministack/app.py | 1850 | except Exception as e: | CODE |
| LOW | ministack/app.py | 1895 | except Exception as e: | CODE |
| LOW | ministack/app.py | 1928 | except Exception as e: | CODE |
| LOW | ministack/app.py | 2019 | except Exception as e: | CODE |
| LOW | ministack/app.py | 2053 | except Exception as e: | CODE |
| LOW | ministack/app.py | 2076 | except Exception: | CODE |
| LOW | ministack/app.py | 2157 | except Exception as e: | CODE |
| LOW | ministack/app.py | 2269 | except Exception as e: | CODE |
| LOW | ministack/app.py | 2378 | except Exception: | CODE |
| LOW | ministack/app.py | 2420 | except Exception: | CODE |
| LOW | ministack/app.py | 2428 | except Exception: | CODE |
| LOW | ministack/app.py | 2527 | except Exception: | CODE |
| LOW | ministack/app.py | 2717 | except Exception as e: | CODE |
| LOW | ministack/app.py | 2807 | except Exception: | CODE |
| LOW | ministack/app.py | 2811 | except Exception: | CODE |
| LOW | ministack/app.py | 2962 | except Exception as e: | CODE |
| LOW | ministack/app.py | 3049 | except Exception as e: | CODE |
| LOW | ministack/app.py | 3151 | except Exception: | CODE |
| LOW | ministack/app.py | 3203 | except Exception: | CODE |
| LOW | ministack/app.py | 3288 | except Exception as e: | CODE |
| LOW | ministack/app.py | 3344 | except Exception as e: | CODE |
| LOW | ministack/app.py | 3368 | except Exception as e: | CODE |
| LOW | ministack/app.py | 3380 | except Exception as e: | CODE |
| LOW | ministack/app.py | 3392 | except Exception as e: | CODE |
| LOW | ministack/core/responses.py | 54 | except Exception: | CODE |
| LOW | ministack/core/responses.py | 590 | except Exception: | CODE |
| LOW | ministack/core/iam_evaluator.py | 184 | except Exception: | CODE |
| LOW | ministack/core/iam_evaluator.py | 619 | except Exception: | CODE |
| LOW | ministack/core/persistence.py | 166 | except Exception as e: | CODE |
| LOW | ministack/core/persistence.py | 212 | except Exception as e: | CODE |
| MEDIUM | ministack/core/lambda_runtime.py | 1374 | def _read_response(): | CODE |
| LOW⚡ | ministack/core/lambda_runtime.py | 321 | except Exception as e: | CODE |
| LOW | ministack/core/lambda_runtime.py | 263 | except Exception as e: | CODE |
| LOW | ministack/core/lambda_runtime.py | 1075 | except Exception: | STRING |
| LOW | ministack/core/lambda_runtime.py | 1133 | except Exception as e: | STRING |
| LOW | ministack/core/lambda_runtime.py | 1268 | except Exception: | STRING |
| LOW | ministack/core/lambda_runtime.py | 1395 | except Exception as e: | STRING |
| LOW | ministack/core/lambda_runtime.py | 1450 | except Exception: | STRING |
| LOW | ministack/core/lambda_runtime.py | 1473 | except Exception: | STRING |
| 976 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH⚡ | ministack/core/appsync_js.py | 166 | return (o && o.s3) || null; | CODE |
| HIGH⚡ | ministack/core/appsync_js.py | 166 | return (o && o.s3) || null; | CODE |
| HIGH⚡ | ministack/core/appsync_js.py | 174 | for (const set of (result && result.sqlStatementResults) || []) { | CODE |
| HIGH⚡ | ministack/core/appsync_js.py | 177 | out.push(rows.map((r) => Object.fromEntries( | CODE |
| HIGH⚡ | ministack/core/appsync_js.py | 179 | const name = (cols[i] || {}).name || String(i); | CODE |
| HIGH⚡ | ministack/core/appsync_js.py | 180 | const [, value] = Object.entries(cell || {})[0] || [null, null]; | CODE |
| HIGH⚡ | ministack/core/appsync_js.py | 212 | throw new EarlyReturn(value, returnOptions && returnOptions.skipTo); | CODE |
| HIGH⚡ | ministack/core/appsync_js.py | 222 | state.extensions.push({ op: "evictFromApiCache", typeName, fieldName, keys }); | CODE |
| HIGH⚡ | ministack/core/appsync_js.py | 226 | state.extensions.push({ op: "setSubscriptionFilter", filter }); | CODE |
| HIGH⚡ | ministack/core/appsync_js.py | 229 | state.extensions.push({ op: "setSubscriptionInvalidationFilter", filter }); | CODE |
| HIGH⚡ | ministack/core/appsync_js.py | 232 | state.extensions.push({ op: "invalidateSubscriptions", payload }); | CODE |
| HIGH⚡ | ministack/core/appsync_js.py | 336 | if (value === null || value === undefined) continue; | CODE |
| HIGH⚡ | ministack/core/appsync_js.py | 336 | if (value === null || value === undefined) continue; | CODE |
| HIGH⚡ | ministack/core/appsync_js.py | 340 | if (sub.length) parts.push(`(${sub.join(key === "and" ? " AND " : " OR ")})`); | CODE |
| HIGH⚡ | ministack/core/appsync_js.py | 345 | if (sub) parts.push(`NOT (${sub})`); | CODE |
| HIGH⚡ | ministack/core/appsync_js.py | 350 | if (operand === null || operand === undefined) continue; | CODE |
| HIGH⚡ | ministack/core/appsync_js.py | 350 | if (operand === null || operand === undefined) continue; | CODE |
| HIGH⚡ | ministack/core/appsync_js.py | 355 | parts.push(build(n, key, operand)); | CODE |
| HIGH⚡ | ministack/core/appsync_js.py | 409 | if (orig && alias && alias !== orig) { | CODE |
| HIGH⚡ | ministack/core/appsync_js.py | 410 | ddbBindings.push(`const ${alias} = ${orig};`); | CODE |
| HIGH⚡ | ministack/core/appsync_js.py | 418 | ddbBindings.push(`const ${star.replace(/^\*\s*as\s*/, "")} = __ddb;`); | CODE |
| HIGH⚡ | ministack/core/appsync_js.py | 422 | if (orig) ddbBindings.push(`const ${alias || orig} = __ddb.${orig};`); | CODE |
| HIGH⚡ | ministack/core/appsync_js.py | 422 | if (orig) ddbBindings.push(`const ${alias || orig} = __ddb.${orig};`); | CODE |
| HIGH⚡ | ministack/core/appsync_js.py | 425 | ddbBindings.push(`const ${deflt} = __ddb;`); | CODE |
| HIGH⚡ | ministack/core/appsync_js.py | 433 | ;__exports.request = typeof request === "function" ? request : null; | CODE |
| HIGH⚡ | ministack/core/appsync_js.py | 434 | ;__exports.response = typeof response === "function" ? response : null;`; | CODE |
| HIGH⚡ | ministack/core/appsync_js.py | 465 | const value = handler(ctx) ?? null; | CODE |
| HIGH⚡ | ministack/core/appsync_js.py | 473 | return { status: "earlyReturn", value: e.value ?? null, appended, | CODE |
| HIGH⚡ | ministack/core/appsync_js.py | 474 | skipTo: e.skipTo ?? null, stash: ctx.stash ?? {} }; | CODE |
| HIGH⚡ | ministack/core/appsync_js.py | 482 | message: String(e && e.message || e), errorType: "InternalError", | CODE |
| HIGH⚡ | ministack/core/appsync_js.py | 482 | message: String(e && e.message || e), errorType: "InternalError", | CODE |
| HIGH⚡ | ministack/core/appsync_js.py | 483 | data: null, errorInfo: null }, appended }; | CODE |
| HIGH⚡ | ministack/core/appsync_js.py | 495 | message: String(e && e.message || e), errorType: "WorkerError", | CODE |
| HIGH⚡ | ministack/core/appsync_js.py | 495 | message: String(e && e.message || e), errorType: "WorkerError", | CODE |
| HIGH⚡ | ministack/core/appsync_js.py | 496 | data: null, errorInfo: null } }; | CODE |
| HIGH | ministack/core/appsync_js.py | 54 | this.data = data ?? null; | CODE |
| HIGH | ministack/core/appsync_js.py | 55 | this.errorInfo = errorInfo ?? null; | CODE |
| HIGH | ministack/core/appsync_js.py | 78 | state.appended.push({ message, errorType: errorType || "UnknownError", | CODE |
| HIGH | ministack/core/appsync_js.py | 79 | data: data ?? null, errorInfo: errorInfo ?? null }); | CODE |
| HIGH | ministack/core/appsync_js.py | 155 | if (v === null || v === undefined) return { NULL: true }; | CODE |
| HIGH | ministack/core/appsync_js.py | 155 | if (v === null || v === undefined) return { NULL: true }; | CODE |
| HIGH | ministack/core/appsync_js.py | 300 | if (v === null || v === undefined) return { NULL: true }; | CODE |
| HIGH | ministack/core/appsync_js.py | 300 | if (v === null || v === undefined) return { NULL: true }; | CODE |
| HIGH⚡ | ministack/core/lambda_runtime.py | 1020 | // If handler accepts callback (arity >= 3) or returned undefined, | COMMENT |
| HIGH⚡ | ministack/core/lambda_runtime.py | 538 | res.on("data", (c) => chunks.push(c)); | CODE |
| HIGH⚡ | ministack/core/lambda_runtime.py | 544 | const type = parsed.__type || parsed.Code || "OpenSearchServiceError"; | CODE |
| HIGH⚡ | ministack/core/lambda_runtime.py | 547 | parsed.Message || parsed.message || text || "OpenSearch service error" | CODE |
| HIGH⚡ | ministack/core/lambda_runtime.py | 672 | res.on("data", (c) => chunks.push(c)); | CODE |
| HIGH⚡ | ministack/core/lambda_runtime.py | 679 | parsed.Message || parsed.message || text || "Service error" | CODE |
| HIGH⚡ | ministack/core/lambda_runtime.py | 682 | err.code = parsed.__type || parsed.Code || "ServiceError"; | CODE |
| HIGH⚡ | ministack/core/lambda_runtime.py | 733 | if (typeof prop !== "string") return undefined; | CODE |
| HIGH⚡ | ministack/core/lambda_runtime.py | 739 | return undefined; | CODE |
| HIGH⚡ | ministack/core/lambda_runtime.py | 800 | region: process.env.AWS_REGION || process.env.FBT_AWS_REGION || "us-east-1", | CODE |
| HIGH⚡ | ministack/core/lambda_runtime.py | 807 | if (req.endpoint && req.endpoint.protocol === "http:") { | CODE |
| HIGH⚡ | ministack/core/lambda_runtime.py | 808 | if (opts && opts.agent instanceof https.Agent) { | CODE |
| HIGH⚡ | ministack/core/lambda_runtime.py | 820 | else if (options instanceof url.URL) options = url.parse(options.toString()); | CODE |
| HIGH⚡ | ministack/core/lambda_runtime.py | 823 | const host = options.hostname || options.host || ""; | CODE |
| HIGH⚡ | ministack/core/lambda_runtime.py | 832 | } else if (options.agent === undefined) { | CODE |
| HIGH⚡ | ministack/core/lambda_runtime.py | 845 | || (advertised && host === advertised)) { | CODE |
| HIGH⚡ | ministack/core/lambda_runtime.py | 848 | options.port = options.port && String(options.port) !== "443" ? options.port : msPort; | CODE |
| 73 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | ministack/app.py | 963 | CODE | |
| LOW | ministack/app.py | 1012 | CODE | |
| LOW | ministack/app.py | 1083 | CODE | |
| LOW | ministack/app.py | 1194 | CODE | |
| LOW | ministack/app.py | 1442 | CODE | |
| LOW | ministack/app.py | 1550 | CODE | |
| LOW | ministack/app.py | 2080 | CODE | |
| LOW | ministack/app.py | 2365 | CODE | |
| LOW | ministack/app.py | 2544 | CODE | |
| LOW | ministack/app.py | 2751 | CODE | |
| LOW | ministack/app.py | 2967 | CODE | |
| LOW | ministack/app.py | 3348 | CODE | |
| LOW | ministack/core/responses.py | 378 | CODE | |
| LOW | ministack/core/responses.py | 423 | CODE | |
| LOW | ministack/core/responses.py | 347 | CODE | |
| LOW | ministack/core/iam_evaluator.py | 89 | CODE | |
| LOW | ministack/core/iam_evaluator.py | 436 | CODE | |
| LOW | ministack/core/iam_evaluator.py | 678 | CODE | |
| LOW | ministack/core/iam_evaluator.py | 750 | CODE | |
| LOW | ministack/core/iam_evaluator.py | 1294 | CODE | |
| LOW | ministack/core/lambda_runtime.py | 1568 | CODE | |
| LOW | ministack/core/lambda_runtime.py | 1078 | CODE | |
| LOW | ministack/core/lambda_runtime.py | 1297 | CODE | |
| LOW | ministack/core/lambda_runtime.py | 1337 | CODE | |
| LOW | ministack/core/lambda_runtime.py | 1930 | CODE | |
| LOW | ministack/core/lambda_runtime.py | 2095 | CODE | |
| LOW | ministack/core/lambda_runtime.py | 1374 | CODE | |
| LOW | ministack/core/pgproxy.py | 240 | CODE | |
| LOW | ministack/core/pgproxy.py | 319 | CODE | |
| LOW | ministack/core/pgproxy.py | 383 | CODE | |
| LOW | ministack/core/pgproxy.py | 634 | CODE | |
| LOW | ministack/core/pgproxy.py | 767 | CODE | |
| LOW | ministack/core/pgproxy.py | 962 | CODE | |
| LOW | ministack/core/pgproxy.py | 1187 | CODE | |
| LOW | ministack/core/pgproxy.py | 1578 | CODE | |
| LOW | ministack/core/pgproxy.py | 1648 | CODE | |
| LOW | ministack/core/pgproxy.py | 2044 | CODE | |
| LOW | ministack/core/pgproxy.py | 2387 | CODE | |
| LOW | ministack/core/pgproxy.py | 2412 | CODE | |
| LOW | ministack/core/pgproxy.py | 512 | CODE | |
| LOW | ministack/core/iam_actions.py | 269 | CODE | |
| LOW | ministack/core/iam_actions.py | 323 | CODE | |
| LOW | ministack/core/iam_actions.py | 348 | CODE | |
| LOW | ministack/core/iam_actions.py | 492 | CODE | |
| LOW | ministack/core/iam_actions.py | 616 | CODE | |
| LOW | ministack/core/iam_actions.py | 857 | CODE | |
| LOW | ministack/core/container_reaper.py | 123 | CODE | |
| LOW | ministack/core/router.py | 26 | CODE | |
| LOW | ministack/core/router.py | 694 | CODE | |
| LOW | ministack/services/cloudtrail.py | 153 | CODE | |
| LOW | ministack/services/sts.py | 178 | CODE | |
| LOW | ministack/services/lambda_microvms.py | 973 | CODE | |
| LOW | ministack/services/dsql.py | 1024 | CODE | |
| LOW | ministack/services/dsql.py | 1196 | CODE | |
| LOW | ministack/services/rds.py | 374 | CODE | |
| LOW | ministack/services/rds.py | 1206 | CODE | |
| LOW | ministack/services/rds.py | 1672 | CODE | |
| LOW | ministack/services/rds.py | 2002 | CODE | |
| LOW | ministack/services/rds.py | 2655 | CODE | |
| LOW | ministack/services/rds.py | 2799 | CODE | |
| 496 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | CHANGELOG.md | 796 | - **Cognito — `ListUsers` `Filter` matches values case-insensitively** — every comparison was an exact string match, so | CODE |
| LOW | ministack/services/sts.py | 502 | sig = _b64url(hmac.new(b"ministack-fake-key", f"{h}.{p}".encode(), hashlib.sha256).digest()) | CODE |
| LOW⚡ | tests/test_cognito.py | 2319 | "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name": "John Doe", | CODE |
| LOW⚡ | tests/test_cognito.py | 2373 | assert attrs.get("name") == "John Doe" | CODE |
| LOW⚡ | tests/test_cognito.py | 6615 | Username="user@example.com", | CODE |
| LOW⚡ | tests/test_cognito.py | 6619 | UserPoolId=pid, Username="user@example.com", Password="Pass1234!", Permanent=True | CODE |
| LOW⚡ | tests/test_cognito.py | 6649 | AuthParameters={"USERNAME": "user@example.com"}, | CODE |
| LOW⚡ | tests/test_cognito.py | 6673 | AuthParameters={"USERNAME": "user@example.com"}, | CODE |
| LOW⚡ | tests/test_cognito.py | 6703 | cognito_idp.admin_disable_user(UserPoolId=pid, Username="user@example.com") | CODE |
| LOW⚡ | tests/test_cognito.py | 6709 | AuthParameters={"USERNAME": "user@example.com"}, | CODE |
| LOW⚡ | tests/test_cognito.py | 6728 | AuthParameters={"USERNAME": "user@example.com"}, | CODE |
| LOW⚡ | tests/test_cognito.py | 6742 | ChallengeResponses={"ANSWER": "test", "USERNAME": "user@example.com"}, | CODE |
| LOW⚡ | tests/test_cognito.py | 6757 | ChallengeResponses={"ANSWER": "test", "USERNAME": "user@example.com"}, | CODE |
| LOW⚡ | tests/test_cognito.py | 6770 | "us-east-1_pool", "client123", "user@example.com" | CODE |
| LOW⚡ | tests/test_cognito.py | 6821 | AuthParameters={"USERNAME": "user@example.com"}, | CODE |
| LOW⚡ | tests/test_cognito.py | 6830 | ChallengeResponses={"ANSWER": "SECRETCODE", "USERNAME": "user@example.com"}, | CODE |
| LOW⚡ | tests/test_cognito.py | 6895 | ChallengeResponses={"ANSWER": "STILLWRONG", "USERNAME": "user@example.com"}, | CODE |
| LOW⚡ | tests/test_cognito.py | 6942 | AuthParameters={"USERNAME": "user@example.com"}, | CODE |
| LOW⚡ | tests/test_cognito.py | 6951 | ChallengeResponses={"ANSWER": "magic-link-code", "USERNAME": "user@example.com"}, | CODE |
| LOW⚡ | tests/test_cognito.py | 6961 | ChallengeResponses={"ANSWER": "123456", "USERNAME": "user@example.com"}, | CODE |
| LOW⚡ | tests/test_cognito.py | 6976 | AuthParameters={"USERNAME": "user@example.com"}, | CODE |
| LOW⚡ | tests/test_cognito.py | 6985 | ChallengeResponses={"ANSWER": "test", "USERNAME": "user@example.com"}, | CODE |
| LOW⚡ | tests/test_cognito.py | 6995 | ChallengeResponses={"ANSWER": "test", "USERNAME": "user@example.com"}, | CODE |
| LOW⚡ | tests/test_cognito.py | 7012 | AuthParameters={"USERNAME": "user@example.com"}, | CODE |
| LOW⚡ | tests/test_cognito.py | 7021 | ChallengeResponses={"ANSWER": "test", "USERNAME": "user@example.com"}, | CODE |
| LOW⚡ | tests/test_cognito.py | 7031 | ChallengeResponses={"ANSWER": "test", "USERNAME": "user@example.com"}, | CODE |
| LOW⚡ | tests/test_cognito.py | 7044 | AuthParameters={"USERNAME": "user@example.com"}, | CODE |
| LOW⚡ | tests/test_cognito.py | 7080 | AuthParameters={"USERNAME": "user@example.com"}, | CODE |
| LOW⚡ | tests/test_cognito.py | 7088 | ChallengeResponses={"ANSWER": "code", "USERNAME": "user@example.com"}, | CODE |
| LOW⚡ | tests/test_cognito.py | 7109 | AuthParameters={"USERNAME": "user@example.com"}, | CODE |
| LOW⚡ | tests/test_cognito.py | 7121 | "us-east-1_pool", "client123", "user@example.com" | CODE |
| LOW⚡ | tests/test_cognito.py | 7163 | AuthParameters={"USERNAME": "user@example.com"}, | CODE |
| LOW⚡ | tests/test_cognito.py | 7167 | AuthParameters={"USERNAME": "user@example.com"}, | CODE |
| LOW⚡ | tests/test_cognito.py | 7175 | ChallengeResponses={"ANSWER": "", "USERNAME": "user@example.com"}, | CODE |
| LOW⚡ | tests/test_cognito.py | 7179 | ChallengeResponses={"ANSWER": "", "USERNAME": "user@example.com"}, | CODE |
| LOW⚡ | tests/test_cognito.py | 7238 | AuthParameters={"USERNAME": "user@example.com"}, | CODE |
| LOW⚡ | tests/test_cognito.py | 7247 | ChallengeResponses={"ANSWER": "test", "USERNAME": "user@example.com"}, | CODE |
| LOW⚡ | tests/test_cognito.py | 7257 | ChallengeResponses={"ANSWER": "test", "USERNAME": "user@example.com"}, | CODE |
| LOW⚡ | tests/test_cognito.py | 7293 | AuthParameters={"USERNAME": "user@example.com"}, | CODE |
| LOW⚡ | tests/test_cognito.py | 7301 | ChallengeResponses={"ANSWER": "", "USERNAME": "user@example.com"}, | CODE |
| LOW⚡ | tests/test_cognito.py | 7320 | AuthParameters={"USERNAME": "user@example.com"}, | CODE |
| LOW⚡ | tests/test_cognito.py | 7357 | AuthParameters={"USERNAME": "user@example.com"}, | CODE |
| LOW⚡ | tests/test_cognito.py | 7365 | ChallengeResponses={"ANSWER": "code", "USERNAME": "user@example.com"}, | CODE |
| LOW⚡ | tests/test_cognito.py | 7375 | ChallengeResponses={"ANSWER": "test", "USERNAME": "user@example.com"}, | CODE |
| LOW⚡ | tests/test_cognito.py | 7412 | AuthParameters={"USERNAME": "user@example.com"}, | CODE |
| LOW⚡ | tests/test_cognito.py | 7420 | ChallengeResponses={"ANSWER": "code", "USERNAME": "user@example.com"}, | CODE |
| LOW⚡ | tests/test_cognito.py | 7456 | "USERNAME": "user@example.com", | CODE |
| LOW⚡ | tests/test_cognito.py | 7464 | assert params.get("USER_ID_FOR_SRP") == "user@example.com" | CODE |
| LOW⚡ | tests/test_cognito.py | 7556 | AuthParameters={"USERNAME": "user@example.com", "SRP_A": srp_a}) | CODE |
| LOW⚡ | tests/test_cognito.py | 7561 | AuthParameters={"USERNAME": "user@example.com", "CHALLENGE_NAME": "SRP_A", "SRP_A": srp_a}) | CODE |
| LOW⚡ | tests/test_cognito.py | 7566 | "ChallengeResponses": {"USERNAME": "user@example.com", "ANSWER": "anything"}} | CODE |
| LOW⚡ | tests/test_cognito.py | 7613 | AuthParameters={"USERNAME": "user@example.com"}, | CODE |
| LOW⚡ | tests/test_cognito.py | 7621 | ChallengeResponses={"ANSWER": "123456", "USERNAME": "user@example.com"}, | CODE |
| LOW⚡ | tests/test_cognito.py | 7688 | AuthParameters={"USERNAME": "user@example.com"}, | CODE |
| LOW⚡ | tests/test_cognito.py | 7733 | AuthParameters={"USERNAME": "user@example.com"}, | CODE |
| LOW⚡ | tests/test_cognito.py | 7742 | ChallengeResponses={"ANSWER": "code", "USERNAME": "user@example.com"}, | CODE |
| LOW⚡ | tests/test_cognito.py | 7846 | AuthParameters={"USERNAME": "user@example.com"}, | CODE |
| LOW⚡ | tests/test_cognito.py | 7856 | ChallengeResponses={"ANSWER": f"attempt{i}", "USERNAME": "user@example.com"}, | CODE |
| LOW⚡ | tests/test_cognito.py | 7960 | AuthParameters={"USERNAME": "user@example.com"}, | CODE |
| LOW⚡ | tests/test_cognito.py | 7968 | ChallengeResponses={"ANSWER": "only-server-knows", "USERNAME": "user@example.com"}, | CODE |
| 85 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | ministack/app.py | 263 | async def handle_request(self, method, path, headers, body, query_params): | CODE |
| LOW | ministack/services/cloudtrail.py | 781 | async def handle_request(method, path, headers, body_bytes, query_params): | CODE |
| LOW | ministack/services/mediaconnect.py | 344 | async def handle_request(method, path, headers, body_bytes, query_params): | CODE |
| LOW | ministack/services/sts.py | 178 | async def handle_request(method, path, headers, body, query_params): | CODE |
| LOW⚡ | ministack/services/lambda_microvms.py | 973 | async def handle_request(method, path, headers, body, query_params): | CODE |
| LOW⚡ | ministack/services/cloudfront_keyvaluestore.py | 129 | async def handle_request(method, path, headers, body, query_params): | CODE |
| LOW | ministack/services/dsql.py | 1229 | async def handle_request(method, path, headers, body, query_params): | CODE |
| LOW | ministack/services/rds.py | 11418 | async def handle_request(method, path, headers, body, query_params): | CODE |
| LOW⚡ | ministack/services/secretsmanager.py | 453 | async def handle_request(method, path, headers, body, query_params): | CODE |
| LOW⚡ | ministack/services/lambda_core.py | 465 | async def handle_request(method, path, headers, body, query_params): | CODE |
| LOW⚡ | ministack/services/backup.py | 835 | async def handle_request(method, path, headers, body_bytes, query_params): | CODE |
| LOW | ministack/services/translate.py | 1039 | async def handle_request(method, path, headers, body, query_params): | CODE |
| LOW | ministack/services/elasticache.py | 913 | async def handle_request(method, path, headers, body, query_params): | CODE |
| LOW | ministack/services/alb.py | 1219 | async def handle_request(method, path, headers, body, query_params): | CODE |
| LOW | ministack/services/config.py | 387 | async def handle_request(method, path, headers, body, query_params): | CODE |
| LOW⚡ | ministack/services/ses.py | 130 | async def handle_request(method, path, headers, body, query_params): | CODE |
| LOW | ministack/services/emr.py | 653 | async def handle_request(method, path, headers, body, query_params): | CODE |
| LOW | ministack/services/dynamodb.py | 955 | async def handle_request(method: str, path: str, headers: dict, body: bytes, query_params: dict) -> tuple: | CODE |
| LOW | ministack/services/imds.py | 163 | async def handle_request(method, path, headers, body, query_params): | CODE |
| LOW⚡ | ministack/services/opensearch.py | 1327 | async def handle_request(method, path, headers, body_bytes, query_params): | CODE |
| LOW⚡ | ministack/services/cognito.py | 2128 | async def handle_request(method, path, headers, body, query_params): | CODE |
| LOW | ministack/services/waf.py | 385 | async def handle_request(method, path, headers, body, query_params): | CODE |
| LOW⚡ | ministack/services/cloudfront_dataplane.py | 700 | async def handle_request(dist: dict, method: str, path: str, raw_uri: str, raw_query_string: str, | CODE |
| LOW | ministack/services/iam.py | 389 | async def handle_request(method, path, headers, body, query_params): | CODE |
| LOW⚡ | ministack/services/sqs.py | 345 | async def handle_request(method: str, path: str, headers: dict, | CODE |
| LOW | ministack/services/eks.py | 2647 | async def handle_request(method, path, headers, body, query_params): | CODE |
| LOW | ministack/services/servicediscovery.py | 128 | async def handle_request(method, path, headers, body, query_params): | CODE |
| LOW | ministack/services/opensearchserverless.py | 971 | async def handle_request(method, path, headers, body, query_params): | CODE |
| LOW | ministack/services/ses_v2.py | 618 | async def handle_request(method, path, headers, body, query_params): | CODE |
| LOW | ministack/services/resource_groups.py | 576 | async def handle_request(method, path, headers, body, query_params): | CODE |
| LOW⚡ | ministack/services/cloudwatch_logs.py | 285 | async def handle_request(method, path, headers, body, query_params): | CODE |
| LOW | ministack/services/batch.py | 377 | async def handle_request(method, path, headers, body, query_params): | CODE |
| LOW⚡ | ministack/services/stepfunctions.py | 254 | async def handle_request(method, path, headers, body, query_params): | CODE |
| LOW⚡ | ministack/services/appsync_events.py | 581 | async def handle_request(method, path, headers, body, query_params): | CODE |
| LOW | ministack/services/msk.py | 595 | async def handle_request(method, path, headers, body, query_params): | CODE |
| LOW⚡ | ministack/services/s3files.py | 306 | async def handle_request(method, path, headers, body, query_params): | CODE |
| LOW⚡ | ministack/services/iotwireless.py | 108 | async def handle_request( | CODE |
| LOW⚡ | ministack/services/appconfig.py | 1089 | async def handle_request(method, path, headers, body_bytes, query_params): | CODE |
| LOW | ministack/services/bedrock_agent_runtime.py | 786 | async def handle_request(method, path, headers, body, query_params): | CODE |
| LOW⚡ | ministack/services/kinesis.py | 349 | async def handle_request(method, path, headers, body, query_params): | CODE |
| LOW | ministack/services/apigateway.py | 363 | async def handle_request(method, path, headers, body, query_params): | CODE |
| LOW | ministack/services/apigateway_v1.py | 1059 | async def handle_request(method, path, headers, body, query_params): | CODE |
| LOW⚡ | ministack/services/iot_jobs_data.py | 70 | async def handle_request( | CODE |
| LOW | ministack/services/codebuild.py | 784 | async def handle_request(method, path, headers, body, query_params): | CODE |
| LOW | ministack/services/documentdb.py | 806 | async def handle_request(method, path, headers, body, query_params): | CODE |
| LOW | ministack/services/inspector2.py | 1174 | async def handle_request(method, path, headers, body, query_params): | CODE |
| LOW⚡ | ministack/services/mwaa.py | 684 | async def handle_request(method, path, headers, body, query_params): | CODE |
| LOW | ministack/services/eventbridge.py | 267 | async def handle_request(method, path, headers, body, query_params): | CODE |
| LOW | ministack/services/glue.py | 2662 | async def handle_request(method, path, headers, body, query_params): | CODE |
| LOW | ministack/services/bedrock_agent.py | 1498 | async def handle_request(method, path, headers, body, query_params): | CODE |
| LOW | ministack/services/location.py | 950 | async def handle_request(method, path, headers, body_bytes, query_params): | CODE |
| LOW⚡ | ministack/services/transfer.py | 152 | async def handle_request(method, path, headers, body, query_params): | CODE |
| LOW | ministack/services/appsync.py | 995 | async def handle_request(method, path, headers, body, query_params): | CODE |
| LOW | ministack/services/pipes.py | 634 | async def handle_request(method, path, headers, body_bytes, query_params): | CODE |
| LOW | ministack/services/dynamodb_streams.py | 46 | async def handle_request(method, path, headers, body, query_params): | CODE |
| LOW | ministack/services/cur.py | 234 | async def handle_request(method, path, headers, body, query_params): | CODE |
| LOW | ministack/services/acm.py | 222 | async def handle_request(method, path, headers, body, query_params): | CODE |
| LOW⚡ | ministack/services/cloudwatch.py | 492 | async def handle_request(method, path, headers, body, query_params): | CODE |
| LOW | ministack/services/route53.py | 909 | async def handle_request(method, path, headers, body, query_params): | CODE |
| LOW | ministack/services/ec2.py | 542 | async def handle_request(method, path, headers, body, query_params): | CODE |
| 31 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | docker-compose.yml | 41 | interval: 5s | COMMENT |
| LOW | docker-compose.yml | 61 | # retries: 5 | COMMENT |
| LOW | ministack/__init__.py | 1 | # Copyright (c) 2026 MiniStack Contributors. SPDX-License-Identifier: MIT | COMMENT |
| LOW | ministack/app.py | 3001 | # ministack-labelled container alive at boot is by definition an | COMMENT |
| LOW | ministack/app.py | 3021 | logger.warning( | COMMENT |
| LOW | ministack/core/responses.py | 541 | # ``application/x-amz-json-1.1``; query-protocol services answer | COMMENT |
| LOW | ministack/core/persistence.py | 21 | # On-disk state format versions. Files are wrapped as | COMMENT |
| LOW | ministack/core/lambda_runtime.py | 121 | # AWS never sends and diverge from the docker executor, which spawns freely. | COMMENT |
| LOW | ministack/core/lambda_runtime.py | 141 | # The warm worker's env is fixed at spawn time, so its depth travels in the | COMMENT |
| LOW | ministack/core/concurrency.py | 221 | # OS thread limit. `_run` never executes, so its `finally` never runs | COMMENT |
| LOW | ministack/core/__init__.py | 1 | # Copyright (c) 2026 MiniStack Contributors. SPDX-License-Identifier: MIT | COMMENT |
| LOW | ministack/core/pgproxy.py | 1061 | # index creation is always asynchronous — plain CREATE INDEX fails with | COMMENT |
| LOW | ministack/core/iam_actions.py | 181 | # Sub-resource (query parameter) → IAM action, keyed by HTTP method. The values | COMMENT |
| LOW | ministack/core/router.py | 361 | "host_patterns": [r"transfer\."], | COMMENT |
| LOW | ministack/core/router.py | 1301 | return "cognito-idp" | COMMENT |
| LOW | ministack/core/router.py | 1341 | if "granite" in path_lower or "cloudwatch" in path_lower: | COMMENT |
| LOW | ministack/services/rds.py | 1321 | # named volume even when standalone RDS persistence is disabled so stopping | COMMENT |
| LOW | ministack/services/rds.py | 1721 | # StopDBCluster stopped this standby's container along with the | COMMENT |
| LOW | ministack/services/rds.py | 4561 | if reader_endpoint is endpoint: | COMMENT |
| LOW | ministack/services/rds.py | 10101 | # Emulation scope: metadata only. Proxies, proxy endpoints, the default target | COMMENT |
| LOW | ministack/services/dynamodb.py | 81 | _IMPORT_COMPLETE_AFTER_SEC = 1.0 | COMMENT |
| LOW | ministack/services/dynamodb.py | 241 | # Validation helpers — AWS-canonical limit + format enforcement. | COMMENT |
| LOW | ministack/services/cognito.py | 441 | COMMENT | |
| LOW | ministack/services/cognito.py | 461 | _pool_domain_map = AccountRegionScopedDict() # domain -> pool_id | COMMENT |
| LOW | ministack/services/cognito.py | 481 | # _roles: {authenticated: arn, unauthenticated: arn}, | COMMENT |
| LOW | ministack/services/cognito.py | 501 | # gained or lost. Effective tenant isolation is provided by the random | COMMENT |
| LOW | ministack/services/cognito.py | 521 | _USER_AUTH_SESSION_TTL = 300 # 5 minutes | COMMENT |
| LOW | ministack/services/cognito.py | 541 | # 'challengeResult': bool | None, # None = pending (not yet verified) | COMMENT |
| LOW | ministack/services/cognito.py | 5061 | # =========================================================================== | COMMENT |
| LOW | ministack/services/cognito.py | 6701 | # client authentication without invalidating the single-use code, so | COMMENT |
| LOW | ministack/services/iam.py | 81 | # them regardless of their own account. Ministack stores customer | COMMENT |
| LOW | ministack/services/iam.py | 101 | # ``NoSuchEntity`` by default so that typos surface locally the same | COMMENT |
| LOW | ministack/services/lambda_durable.py | 41 | ) | COMMENT |
| LOW | ministack/services/cloudwatch_logs.py | 81 | # results, statistics} | COMMENT |
| LOW | ministack/services/stepfunctions.py | 1901 | # Lambda event under "Payload" (alongside "FunctionName"). Deliver only | COMMENT |
| LOW | ministack/services/stepfunctions.py | 4481 | # routing for one operation. Avoids a botocore runtime dependency. | COMMENT |
| LOW | ministack/services/iotwireless.py | 121 | # present: the developer guide lists "the payload contains only the timestamp | COMMENT |
| LOW | ministack/services/__init__.py | 1 | # Copyright (c) 2026 MiniStack Contributors. SPDX-License-Identifier: MIT | COMMENT |
| LOW | ministack/services/apigateway.py | 121 | _PROXY_TIMEOUT_SECONDS = _timeout_from_env("MINISTACK_APIGW_PROXY_TIMEOUT_SECONDS", 30.0) | COMMENT |
| LOW | ministack/services/apigateway.py | 141 | # response fully allows or denies all API requests that match the cached | COMMENT |
| LOW | ministack/services/apigateway.py | 1721 | # Apply the Lambda's headers, letting each override any case-insensitive | COMMENT |
| LOW | ministack/services/apigateway_v1.py | 2921 | COMMENT | |
| LOW | ministack/services/codebuild.py | 161 | }, | COMMENT |
| LOW | ministack/services/codebuild.py | 181 | # --------------------------------------------------------------------------- | COMMENT |
| LOW | ministack/services/glue.py | 381 | COMMENT | |
| LOW | ministack/services/transfer.py | 501 | COMMENT | |
| LOW | ministack/services/appsync.py | 981 | COMMENT | |
| LOW | ministack/services/pipes.py | 381 | # | COMMENT |
| LOW | ministack/services/acm.py | 41 | # Strip _private_key before persisting — real AWS only exposes the | COMMENT |
| LOW | ministack/services/ec2.py | 2001 | # metadata-only record it has always been. | COMMENT |
| LOW | ministack/services/lambda_svc.py | 141 | parent = secrets.token_hex(8) # 16 hex chars | COMMENT |
| LOW | ministack/services/lambda_svc.py | 161 | # infinite loops"). So hop 17 is the first one dropped, and the depth check | COMMENT |
| LOW | ministack/services/lambda_svc.py | 361 | return {key: value for key, value in env.items() if key not in _RESERVED_RUNTIME_ENV_VARS} | COMMENT |
| LOW | ministack/services/lambda_svc.py | 501 | # larger as base64 and forces a single-shot JSON parse on every restart, | COMMENT |
| LOW | ministack/services/lambda_svc.py | 2921 | config["StateReason"] = "The function is being updated." | COMMENT |
| LOW | ministack/services/lambda_svc.py | 3221 | if runtime.startswith("provided"): | COMMENT |
| LOW | ministack/services/lambda_svc.py | 3241 | # redeploy: | COMMENT |
| LOW | ministack/services/lambda_svc.py | 4261 | // Without USE_SSL the container talks to MiniStack over http://<gateway host>:<port>, but the | COMMENT |
| LOW | ministack/services/lambda_svc.py | 4481 | # unlike the warm/local executors, nothing inside an RIE container stamps | COMMENT |
| LOW | ministack/services/lambda_svc.py | 4521 | # The host MiniStack advertises for itself (custom-resource ResponseURLs | COMMENT |
| 29 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | ministack/services/dynamodb.py | 5897 | # Create the destination table from TableCreationParameters. | COMMENT |
| MEDIUM | ministack/services/stepfunctions.py | 366 | # Creating the same machine twice is idempotent on AWS and makes SDK retry safe | COMMENT |
| MEDIUM | ministack/services/cloudformation/changesets.py | 623 | # Create a placeholder stack in REVIEW_IN_PROGRESS | COMMENT |
| MEDIUM | tests/test_stepfunctions.py | 6802 | # Create a Lambda that sleeps briefly to simulate real work. | COMMENT |
| MEDIUM | tests/test_eks.py | 737 | # Create the 4 standard addons in one go. | COMMENT |
| MEDIUM | tests/test_mq.py | 370 | # Create a user | COMMENT |
| MEDIUM⚡ | tests/test_appsync_events.py | 1272 | # Create a throwaway API so we can open a connection. | COMMENT |
| MEDIUM | tests/test_rds_data.py | 1332 | # Create a secret with JSON credentials | COMMENT |
| MEDIUM⚡ | tests/test_lambda.py | 6910 | # Create a queue directly in the internal state | COMMENT |
| MEDIUM⚡ | tests/test_lambda.py | 9280 | # Create a synthetic execution. | COMMENT |
| MEDIUM | tests/test_lambda.py | 4307 | # Create a layer with a Python module | COMMENT |
| MEDIUM | tests/test_lambda.py | 4318 | # Create a function that imports from the layer | COMMENT |
| MEDIUM | tests/test_lambda.py | 4427 | # Create a layer with a Node.js module under nodejs/node_modules/ | COMMENT |
| MEDIUM | tests/test_lambda.py | 4441 | # Create a Node.js function that requires the layer package | COMMENT |
| MEDIUM | tests/test_lambda.py | 4478 | # Create a layer with a Node.js package under nodejs/node_modules/ | COMMENT |
| MEDIUM | tests/test_lambda.py | 4492 | # Create an ESM handler that uses native import to load the layer package. | COMMENT |
| MEDIUM⚡ | tests/test_cloudwatch_logs.py | 1800 | # Create the parent log group first — _put_metric_filter would normally | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | ministack/services/eks.py | 0 | dispatch off the event loop. request paths here reach the docker daemon (container create/start/stop/ inspect), which bl | STRING |
| HIGH | ministack/services/codebuild.py | 0 | dispatch off the event loop. request paths here reach the docker daemon (container create/start/stop/ inspect), which bl | STRING |
| HIGH | ministack/services/glue.py | 0 | dispatch off the event loop. request paths here reach the docker daemon (container create/start/stop/ inspect), which bl | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | ministack/core/iam_evaluator.py | 575 | # Step 1: explicit Deny | COMMENT |
| LOW | ministack/core/iam_evaluator.py | 587 | # Step 2: explicit Allow | COMMENT |
| LOW | ministack/core/iam_evaluator.py | 599 | # Step 3: implicit deny | COMMENT |
| LOW⚡ | tests/test_cognito.py | 2298 | # Step 1: GET /oauth2/authorize → extract RelayState from redirect Location | COMMENT |
| LOW⚡ | tests/test_cognito.py | 2314 | # Step 2: POST /saml2/idpresponse with mock SAML assertion | COMMENT |
| LOW⚡ | tests/test_cognito.py | 2367 | # Step 4: Verify user was created via AdminGetUser | COMMENT |
| LOW⚡ | tests/test_cognito.py | 2375 | # Step 5: the federated refresh token refreshes the federated user's session | COMMENT |
| LOW⚡ | tests/test_cognito.py | 2713 | # Step 3: MS must have called the IdP's token endpoint with the right | COMMENT |
| LOW⚡ | tests/test_cognito.py | 2723 | # Step 4: MS must redirect to the app callback with a MS-issued code | COMMENT |
| LOW⚡ | tests/test_cognito.py | 2731 | # Step 5: the federated user was provisioned under the OIDC provider | COMMENT |
| LOW⚡ | tests/test_cognito.py | 3445 | # Step 1: username only. | COMMENT |
| LOW | tests/test_cognito.py | 2342 | # Step 3: POST /oauth2/token with authorization_code grant | COMMENT |
| LOW | tests/test_cognito.py | 2688 | # Step 1: kick off authorize, grab the relay state from the IdP redirect. | COMMENT |
| LOW | tests/test_cognito.py | 2702 | # Step 2: simulate the OIDC IdP calling back with code+state. | COMMENT |
| LOW | tests/test_cognito.py | 3462 | # Step 2: password. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | ministack/core/iam_evaluator.py | 575 | # Step 1: explicit Deny | COMMENT |
| LOW | ministack/core/iam_evaluator.py | 587 | # Step 2: explicit Allow | COMMENT |
| LOW | ministack/core/iam_evaluator.py | 599 | # Step 3: implicit deny | COMMENT |
| LOW⚡ | tests/test_cognito.py | 2298 | # Step 1: GET /oauth2/authorize → extract RelayState from redirect Location | COMMENT |
| LOW⚡ | tests/test_cognito.py | 2314 | # Step 2: POST /saml2/idpresponse with mock SAML assertion | COMMENT |
| LOW⚡ | tests/test_cognito.py | 2367 | # Step 4: Verify user was created via AdminGetUser | COMMENT |
| LOW⚡ | tests/test_cognito.py | 2375 | # Step 5: the federated refresh token refreshes the federated user's session | COMMENT |
| LOW⚡ | tests/test_cognito.py | 2713 | # Step 3: MS must have called the IdP's token endpoint with the right | COMMENT |
| LOW⚡ | tests/test_cognito.py | 2723 | # Step 4: MS must redirect to the app callback with a MS-issued code | COMMENT |
| LOW⚡ | tests/test_cognito.py | 2731 | # Step 5: the federated user was provisioned under the OIDC provider | COMMENT |
| LOW⚡ | tests/test_cognito.py | 3445 | # Step 1: username only. | COMMENT |
| LOW | tests/test_cognito.py | 2342 | # Step 3: POST /oauth2/token with authorization_code grant | COMMENT |
| LOW | tests/test_cognito.py | 2688 | # Step 1: kick off authorize, grab the relay state from the IdP redirect. | COMMENT |
| LOW | tests/test_cognito.py | 2702 | # Step 2: simulate the OIDC IdP calling back with code+state. | COMMENT |
| LOW | tests/test_cognito.py | 3462 | # Step 2: password. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | ministack/core/appsync_js.py | 17 | CODE | |
| LOW | ministack/core/appsync_graphql.py | 19 | CODE | |
| LOW | ministack/core/node_pool.py | 24 | CODE | |
| LOW | ministack/core/cloudfront_js.py | 8 | CODE | |
| LOW | ministack/core/x509_utils.py | 23 | CODE | |
| LOW | ministack/services/lambda_durable.py | 21 | CODE | |
| LOW | ministack/services/iotwireless.py | 69 | CODE | |
| LOW | ministack/services/iot_jobs_data.py | 28 | CODE | |
| LOW | ministack/services/transfer.py | 35 | CODE | |
| LOW | ministack/services/iot_data.py | 17 | CODE | |
| LOW | ministack/services/iot.py | 65 | CODE | |
| LOW | tests/test_ministack.py | 531 | CODE | |
| LOW | tests/test_persistence.py | 521 | CODE | |
| LOW | tests/test_iot_data.py | 12 | CODE | |
| LOW | Testcontainers/python-testcontainers/test_ministack.py | 7 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | ministack/services/bedrock_agent_runtime.py | 238 | # emitted, even with enableTrace: no orchestration happens here (no model | COMMENT |
| MEDIUM | tests/test_bedrock_agent_runtime.py | 336 | # No orchestration happens locally, so enableTrace must not produce an | COMMENT |
| MEDIUM | tests/test_codebuild.py | 391 | # The build runs in the project's image; the agent image only orchestrates. | COMMENT |
| MEDIUM⚡ | tests/test_bedrock.py | 1250 | # Bedrock control-plane (guardrails, custom/imported models, provisioned | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | ministack/core/responses.py | 59 | def set_request_account_id(access_key_id: str) -> None: | CODE |
| LOW | ministack/core/responses.py | 92 | def set_request_region(region: str | None) -> None: | CODE |
| LOW | ministack/services/opensearch.py | 608 | def _set_vpc_options(rec: dict, options) -> None: | CODE |
| LOW | ministack/services/cognito.py | 1365 | def _update_pending_challenge_result(session: dict, challenge_result: bool | None) -> None: | CODE |
| LOW | ministack/services/cognito.py | 5116 | def _set_user_identities(user: dict, identities: list) -> None: | CODE |
| LOW | ministack/services/cloudfront_dataplane.py | 520 | def _set_header_ci(headers: dict, name: str, value) -> None: | CODE |
| LOW | ministack/services/ecs_metadata.py | 70 | def set_docker_id(token: str, docker_id: str) -> None: | CODE |
| LOW | ministack/services/ecs_metadata.py | 76 | def set_task_status(task_arn: str, known_status=None, desired_status=None) -> None: | CODE |
| LOW | ministack/services/ecs_metadata.py | 96 | def set_container_status(token: str, known_status: str) -> None: | CODE |
| LOW | ministack/services/ecs_metadata.py | 103 | def set_all_container_status(task_arn: str, known_status: str) -> None: | CODE |
| LOW⚡ | ministack/services/iot.py | 185 | def set_mtls_server_cert(cert_pem: str, key_pem: str) -> None: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | ministack/services/dynamodb.py | 3328 | work[attr] = operand # fallback: just set to operand | CODE |
| LOW | ministack/services/cloudformation/provisioners.py | 7213 | # Pre-check for duplicates to raise exception (not just return error response) | COMMENT |
| MEDIUM | tests/test_dynamodb.py | 2684 | # is cheap and keeps the test robust if that ever changes. | COMMENT |
| LOW | tests/test_ecr.py | 586 | # client still works after our /v2/ → ECR routing change. We just call it; | COMMENT |
| MEDIUM | tests/test_cloudfront_dataplane.py | 1406 | # this test harness, so the gateway cert isn't trusted either). | COMMENT |
| MEDIUM | tests/test_firehose.py | 731 | # Use a high Limit so the assertion is robust to other streams the shared | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | ministack/services/s3tables.py | 683 | # Check if namespace already exists. | COMMENT |
| LOW | ministack/services/rds_data.py | 202 | # Check if it's asking for a specific column (privilege check) | COMMENT |
| LOW | ministack/services/cloudformation/engine.py | 1310 | # Output value it is refused up front (see _validate_template_statics). | COMMENT |
| LOW | tests/test_emr.py | 513 | # Set back to True | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | ministack/services/rds.py | 5104 | CODE | |
| LOW | ministack/services/ses.py | 519 | CODE | |
| LOW | ministack/services/apigateway.py | 1601 | CODE | |
| LOW | ministack/services/mwaa.py | 449 | CODE | |
| LOW | ministack/services/athena.py | 1269 | CODE | |
| LOW | ministack/services/s3.py | 3461 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | ministack/services/lambda_svc.py | 1316 | CODE |