missing zlib #2435

Merged
mfreeman451 merged 1 commit from refs/pull/2435/head into main 2025-11-20 05:45:04 +00:00
mfreeman451 commented 2025-11-20 05:44:48 +00:00 (Migrated from github.com)
Owner

Imported from GitHub pull request.

Original GitHub pull request: #1967
Original author: @mfreeman451
Original URL: https://github.com/carverauto/serviceradar/pull/1967
Original created: 2025-11-20T05:44:48Z
Original updated: 2025-11-20T05:46:04Z
Original head: carverauto/serviceradar:chore/more_kong_crap
Original base: main
Original merged: 2025-11-20T05:45:04Z by @mfreeman451

User description

IMPORTANT: Please sign the Developer Certificate of Origin

Thank you for your contribution to ServiceRadar. Please note, when contributing, the developer must include
a DCO sign-off statement indicating the DCO acceptance in one commit message. Here
is an example DCO Signed-off-by line in a commit message:

Signed-off-by: J. Doe <j.doe@domain.com>

Describe your changes

Code checklist before requesting a review

  • I have signed the DCO?
  • The build completes without errors?
  • All tests are passing when running make test?

PR Type

Enhancement


Description

  • Add zlib dependency detection and auto-installation

  • Support multiple package managers (apt-get, yum, dnf, apk)

  • Check for existing zlib headers before attempting install

  • Integrate zlib validation into Kong build process


Diagram Walkthrough

flowchart LR
  A["Build Script"] --> B["ensure_zlib Function"]
  B --> C{"Check pkg-config<br/>or Headers"}
  C -->|Found| D["Continue Build"]
  C -->|Not Found| E["Detect Package Manager"]
  E --> F["Install zlib-dev"]
  F --> D
  E -->|No Manager| G["Exit with Error"]

File Walkthrough

Relevant files
Enhancement
build-kong-vendor.sh
Add zlib dependency detection and installation                     

scripts/build-kong-vendor.sh

  • Added new ensure_zlib() function to detect and install zlib
    development files
  • Checks for zlib via pkg-config or header file presence
  • Supports installation via apt-get, yum, dnf, and apk package managers
  • Integrated zlib validation into main build flow by calling ensure_zlib
    after ensure_cc
+41/-0   

Imported from GitHub pull request. Original GitHub pull request: #1967 Original author: @mfreeman451 Original URL: https://github.com/carverauto/serviceradar/pull/1967 Original created: 2025-11-20T05:44:48Z Original updated: 2025-11-20T05:46:04Z Original head: carverauto/serviceradar:chore/more_kong_crap Original base: main Original merged: 2025-11-20T05:45:04Z by @mfreeman451 --- ### **User description** ## IMPORTANT: Please sign the Developer Certificate of Origin Thank you for your contribution to ServiceRadar. Please note, when contributing, the developer must include a [DCO sign-off statement]( https://developercertificate.org/) indicating the DCO acceptance in one commit message. Here is an example DCO Signed-off-by line in a commit message: ``` Signed-off-by: J. Doe <j.doe@domain.com> ``` ## Describe your changes ## Issue ticket number and link ## Code checklist before requesting a review - [ ] I have signed the DCO? - [ ] The build completes without errors? - [ ] All tests are passing when running make test? ___ ### **PR Type** Enhancement ___ ### **Description** - Add zlib dependency detection and auto-installation - Support multiple package managers (apt-get, yum, dnf, apk) - Check for existing zlib headers before attempting install - Integrate zlib validation into Kong build process ___ ### Diagram Walkthrough ```mermaid flowchart LR A["Build Script"] --> B["ensure_zlib Function"] B --> C{"Check pkg-config<br/>or Headers"} C -->|Found| D["Continue Build"] C -->|Not Found| E["Detect Package Manager"] E --> F["Install zlib-dev"] F --> D E -->|No Manager| G["Exit with Error"] ``` <details> <summary><h3> File Walkthrough</h3></summary> <table><thead><tr><th></th><th align="left">Relevant files</th></tr></thead><tbody><tr><td><strong>Enhancement</strong></td><td><table> <tr> <td> <details> <summary><strong>build-kong-vendor.sh</strong><dd><code>Add zlib dependency detection and installation</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></summary> <hr> scripts/build-kong-vendor.sh <ul><li>Added new <code>ensure_zlib()</code> function to detect and install zlib <br>development files<br> <li> Checks for zlib via pkg-config or header file presence<br> <li> Supports installation via apt-get, yum, dnf, and apk package managers<br> <li> Integrated zlib validation into main build flow by calling <code>ensure_zlib</code> <br>after <code>ensure_cc</code></ul> </details> </td> <td><a href="https://github.com/carverauto/serviceradar/pull/1967/files#diff-60c9831d4f024788268c9fa56e16e212061b7b55939899f04579d8445036df24">+41/-0</a>&nbsp; &nbsp; </td> </tr> </table></td></tr></tr></tbody></table> </details> ___
qodo-code-review[bot] commented 2025-11-20 05:45:09 +00:00 (Migrated from github.com)
Author
Owner

Imported GitHub PR comment.

Original author: @qodo-code-review[bot]
Original URL: https://github.com/carverauto/serviceradar/pull/1967#issuecomment-3555967540
Original created: 2025-11-20T05:45:09Z

PR Compliance Guide 🔍

(Compliance updated until commit github.com/carverauto/serviceradar@6b398671bd)

Below is a summary of compliance checks for this PR:

Security Compliance
Supply-chain risk

Description: The script installs packages via apt-get/yum/dnf without pinning versions or verifying
repository integrity, which can be exploited if package mirrors or repos are compromised
(supply-chain risk); consider pinning versions and verifying with checksums or using a
trusted, prebuilt base image.
build-kong-vendor.sh [147-169]

Referred Code
if command -v apt-get >/dev/null 2>&1; then
  info "Installing zlib via apt-get (zlib1g-dev)" >&2
  if command -v sudo >/dev/null 2>&1; then
    sudo apt-get update -y >/dev/null
    sudo apt-get install -y zlib1g-dev >/dev/null
  else
    apt-get update -y >/dev/null
    apt-get install -y zlib1g-dev >/dev/null
  fi
  return
fi

if command -v yum >/dev/null 2>&1; then
  info "Installing zlib via yum (zlib-devel)" >&2
  yum install -y zlib-devel >/dev/null
  return
fi

if command -v dnf >/dev/null 2>&1; then
  info "Installing zlib via dnf (zlib-devel)" >&2
  dnf install -y zlib-devel >/dev/null


 ... (clipped 2 lines)
Privilege escalation risk

Description: Use of sudo for package installation inherits the caller’s environment and PATH,
potentially allowing PATH hijacking or misconfiguration to escalate privileges; invoke
sudo with an absolute path and sanitized PATH (e.g., /usr/bin/sudo env -i
PATH=/usr/sbin:/usr/bin ...) or avoid sudo in non-interactive build environments.
build-kong-vendor.sh [148-155]

Referred Code
info "Installing zlib via apt-get (zlib1g-dev)" >&2
if command -v sudo >/dev/null 2>&1; then
  sudo apt-get update -y >/dev/null
  sudo apt-get install -y zlib1g-dev >/dev/null
else
  apt-get update -y >/dev/null
  apt-get install -y zlib1g-dev >/dev/null
fi
Unpinned apk install

Description: The apk add command runs with --update and no repository pinning or signature verification
enforcement, increasing risk of fetching untrusted indexes or packages; prefer --no-cache
with pinned repositories and ensure signature verification is enabled.
build-kong-vendor.sh [171-174]

Referred Code
if command -v apk >/dev/null 2>&1; then
  info "Installing zlib via apk (zlib-dev)" >&2
  apk add --no-progress --update zlib-dev >/dev/null
  return
Ticket Compliance
🎫 No ticket provided
  • Create ticket/issue
Codebase Duplication Compliance
Codebase context is not defined

Follow the guide to enable codebase context checks.

Custom Compliance
🟢
Generic: Meaningful Naming and Self-Documenting Code

Objective: Ensure all identifiers clearly express their purpose and intent, making code
self-documenting

Status: Passed

Learn more about managing compliance generic rules or creating your own custom rules

Generic: Secure Error Handling

Objective: To prevent the leakage of sensitive system information through error messages while
providing sufficient detail for internal debugging.

Status: Passed

Learn more about managing compliance generic rules or creating your own custom rules

Generic: Secure Logging Practices

Objective: To ensure logs are useful for debugging and auditing without exposing sensitive
information like PII, PHI, or cardholder data.

Status: Passed

Learn more about managing compliance generic rules or creating your own custom rules

Generic: Security-First Input Validation and Data Handling

Objective: Ensure all data inputs are validated, sanitized, and handled securely to prevent
vulnerabilities

Status: Passed

Learn more about managing compliance generic rules or creating your own custom rules

Generic: Comprehensive Audit Trails

Objective: To create a detailed and reliable record of critical system actions for security analysis
and compliance.

Status:
Missing audit logs: The added package installation actions (detecting and installing zlib) are not logged to
an audit trail beyond console output, which may be insufficient for reconstructing events.

Referred Code
if command -v apt-get >/dev/null 2>&1; then
  info "Installing zlib via apt-get (zlib1g-dev)" >&2
  if command -v sudo >/dev/null 2>&1; then
    sudo apt-get update -y >/dev/null
    sudo apt-get install -y zlib1g-dev >/dev/null
  else
    apt-get update -y >/dev/null
    apt-get install -y zlib1g-dev >/dev/null
  fi
  return
fi

if command -v yum >/dev/null 2>&1; then
  info "Installing zlib via yum (zlib-devel)" >&2
  yum install -y zlib-devel >/dev/null
  return
fi

if command -v dnf >/dev/null 2>&1; then
  info "Installing zlib via dnf (zlib-devel)" >&2
  dnf install -y zlib-devel >/dev/null


 ... (clipped 11 lines)

Learn more about managing compliance generic rules or creating your own custom rules

Generic: Robust Error Handling and Edge Case Management

Objective: Ensure comprehensive error handling that provides meaningful context and graceful
degradation

Status:
Install failure handling: Package manager install commands redirect output to /dev/null and do not check command
exit codes, potentially causing silent failures without actionable context.

Referred Code
    sudo apt-get update -y >/dev/null
    sudo apt-get install -y zlib1g-dev >/dev/null
  else
    apt-get update -y >/dev/null
    apt-get install -y zlib1g-dev >/dev/null
  fi
  return
fi

if command -v yum >/dev/null 2>&1; then
  info "Installing zlib via yum (zlib-devel)" >&2
  yum install -y zlib-devel >/dev/null
  return
fi

if command -v dnf >/dev/null 2>&1; then
  info "Installing zlib via dnf (zlib-devel)" >&2
  dnf install -y zlib-devel >/dev/null
  return
fi



 ... (clipped 4 lines)

Learn more about managing compliance generic rules or creating your own custom rules

Compliance status legend 🟢 - Fully Compliant
🟡 - Partial Compliant
🔴 - Not Compliant
- Requires Further Human Verification
🏷️ - Compliance label

Previous compliance checks

Compliance check up to commit 6b39867
Security Compliance
Unverified package install

Description: The script auto-installs packages with apt-get/yum/dnf/apk without verifying package
authenticity (no checksum/pin), potentially allowing supply-chain attacks if repositories
are compromised or MITM occurs; consider pinning, verifying signatures, or requiring user
confirmation.
build-kong-vendor.sh [147-175]

Referred Code
if command -v apt-get >/dev/null 2>&1; then
  info "Installing zlib via apt-get (zlib1g-dev)" >&2
  if command -v sudo >/dev/null 2>&1; then
    sudo apt-get update -y >/dev/null
    sudo apt-get install -y zlib1g-dev >/dev/null
  else
    apt-get update -y >/dev/null
    apt-get install -y zlib1g-dev >/dev/null
  fi
  return
fi

if command -v yum >/dev/null 2>&1; then
  info "Installing zlib via yum (zlib-devel)" >&2
  yum install -y zlib-devel >/dev/null
  return
fi

if command -v dnf >/dev/null 2>&1; then
  info "Installing zlib via dnf (zlib-devel)" >&2
  dnf install -y zlib-devel >/dev/null


 ... (clipped 8 lines)
Implicit privilege escalation

Description: Running package installs with sudo (if present) and otherwise as the current user may
escalate privileges or run unexpected commands in environments where PATH or sudo
configuration is untrusted; restrict execution context and avoid implicit sudo use.
build-kong-vendor.sh [149-155]

Referred Code
if command -v sudo >/dev/null 2>&1; then
  sudo apt-get update -y >/dev/null
  sudo apt-get install -y zlib1g-dev >/dev/null
else
  apt-get update -y >/dev/null
  apt-get install -y zlib1g-dev >/dev/null
fi
Insecure dependency resolution

Description: Reliance on /usr/include or /usr/local/include zlib.h presence to decide skipping
installation may allow header/library mismatches leading to linking against unintended
system libraries, which can be exploited in poisoned build environments; prefer pkg-config
with version checks and controlled paths.
build-kong-vendor.sh [142-145]

Referred Code
if pkg-config --exists zlib 2>/dev/null || [[ -f /usr/include/zlib.h || -f /usr/local/include/zlib.h ]]; then
  info "Found zlib development files" >&2
  return
fi
Ticket Compliance
🎫 No ticket provided
  • Create ticket/issue
Codebase Duplication Compliance
Codebase context is not defined

Follow the guide to enable codebase context checks.

Custom Compliance
🟢
Generic: Meaningful Naming and Self-Documenting Code

Objective: Ensure all identifiers clearly express their purpose and intent, making code
self-documenting

Status: Passed

Learn more about managing compliance generic rules or creating your own custom rules

Generic: Secure Error Handling

Objective: To prevent the leakage of sensitive system information through error messages while
providing sufficient detail for internal debugging.

Status: Passed

Learn more about managing compliance generic rules or creating your own custom rules

Generic: Security-First Input Validation and Data Handling

Objective: Ensure all data inputs are validated, sanitized, and handled securely to prevent
vulnerabilities

Status: Passed

Learn more about managing compliance generic rules or creating your own custom rules

Generic: Comprehensive Audit Trails

Objective: To create a detailed and reliable record of critical system actions for security analysis
and compliance.

Status:
Missing audit logs: The new zlib detection/installation steps do not produce structured or durable audit logs
of critical actions (e.g., package installation) beyond ephemeral console output.

Referred Code
ensure_zlib() {
  if pkg-config --exists zlib 2>/dev/null || [[ -f /usr/include/zlib.h || -f /usr/local/include/zlib.h ]]; then
    info "Found zlib development files" >&2
    return
  fi

  if command -v apt-get >/dev/null 2>&1; then
    info "Installing zlib via apt-get (zlib1g-dev)" >&2
    if command -v sudo >/dev/null 2>&1; then
      sudo apt-get update -y >/dev/null
      sudo apt-get install -y zlib1g-dev >/dev/null
    else
      apt-get update -y >/dev/null
      apt-get install -y zlib1g-dev >/dev/null
    fi
    return
  fi

  if command -v yum >/dev/null 2>&1; then
    info "Installing zlib via yum (zlib-devel)" >&2
    yum install -y zlib-devel >/dev/null


 ... (clipped 17 lines)

Learn more about managing compliance generic rules or creating your own custom rules

Generic: Robust Error Handling and Edge Case Management

Objective: Ensure comprehensive error handling that provides meaningful context and graceful
degradation

Status:
Silent install errors: Package manager commands are run with output suppressed and without checking individual
command exit codes, risking silent failures and limited error context.

Referred Code
if command -v apt-get >/dev/null 2>&1; then
  info "Installing zlib via apt-get (zlib1g-dev)" >&2
  if command -v sudo >/dev/null 2>&1; then
    sudo apt-get update -y >/dev/null
    sudo apt-get install -y zlib1g-dev >/dev/null
  else
    apt-get update -y >/dev/null
    apt-get install -y zlib1g-dev >/dev/null
  fi
  return
fi

if command -v yum >/dev/null 2>&1; then
  info "Installing zlib via yum (zlib-devel)" >&2
  yum install -y zlib-devel >/dev/null
  return
fi

if command -v dnf >/dev/null 2>&1; then
  info "Installing zlib via dnf (zlib-devel)" >&2
  dnf install -y zlib-devel >/dev/null


 ... (clipped 8 lines)

Learn more about managing compliance generic rules or creating your own custom rules

Generic: Secure Logging Practices

Objective: To ensure logs are useful for debugging and auditing without exposing sensitive
information like PII, PHI, or cardholder data.

Status:
Unstructured logs: The script emits human-readable console messages rather than structured logs, which may
hinder auditing and automated monitoring.

Referred Code
ensure_zlib() {
  if pkg-config --exists zlib 2>/dev/null || [[ -f /usr/include/zlib.h || -f /usr/local/include/zlib.h ]]; then
    info "Found zlib development files" >&2
    return
  fi

  if command -v apt-get >/dev/null 2>&1; then
    info "Installing zlib via apt-get (zlib1g-dev)" >&2
    if command -v sudo >/dev/null 2>&1; then
      sudo apt-get update -y >/dev/null
      sudo apt-get install -y zlib1g-dev >/dev/null
    else
      apt-get update -y >/dev/null
      apt-get install -y zlib1g-dev >/dev/null
    fi
    return
  fi

  if command -v yum >/dev/null 2>&1; then
    info "Installing zlib via yum (zlib-devel)" >&2
    yum install -y zlib-devel >/dev/null


 ... (clipped 17 lines)

Learn more about managing compliance generic rules or creating your own custom rules

Imported GitHub PR comment. Original author: @qodo-code-review[bot] Original URL: https://github.com/carverauto/serviceradar/pull/1967#issuecomment-3555967540 Original created: 2025-11-20T05:45:09Z --- ## PR Compliance Guide 🔍 <!-- https://github.com/carverauto/serviceradar/commit/6b398671bd707da95e8edb0e44c60ce9191aed0e --> #### (Compliance updated until commit https://github.com/carverauto/serviceradar/commit/6b398671bd707da95e8edb0e44c60ce9191aed0e) Below is a summary of compliance checks for this PR:<br> <table><tbody><tr><td colspan='2'><strong>Security Compliance</strong></td></tr> <tr><td rowspan=3>⚪</td> <td><details><summary><strong>Supply-chain risk </strong></summary><br> <b>Description:</b> The script installs packages via apt-get/yum/dnf without pinning versions or verifying <br>repository integrity, which can be exploited if package mirrors or repos are compromised <br>(supply-chain risk); consider pinning versions and verifying with checksums or using a <br>trusted, prebuilt base image.<br> <strong><a href='https://github.com/carverauto/serviceradar/pull/1967/files#diff-60c9831d4f024788268c9fa56e16e212061b7b55939899f04579d8445036df24R147-R169'>build-kong-vendor.sh [147-169]</a></strong><br> <details open><summary>Referred Code</summary> ```shell if command -v apt-get >/dev/null 2>&1; then info "Installing zlib via apt-get (zlib1g-dev)" >&2 if command -v sudo >/dev/null 2>&1; then sudo apt-get update -y >/dev/null sudo apt-get install -y zlib1g-dev >/dev/null else apt-get update -y >/dev/null apt-get install -y zlib1g-dev >/dev/null fi return fi if command -v yum >/dev/null 2>&1; then info "Installing zlib via yum (zlib-devel)" >&2 yum install -y zlib-devel >/dev/null return fi if command -v dnf >/dev/null 2>&1; then info "Installing zlib via dnf (zlib-devel)" >&2 dnf install -y zlib-devel >/dev/null ... (clipped 2 lines) ``` </details></details></td></tr> <tr><td><details><summary><strong>Privilege escalation risk </strong></summary><br> <b>Description:</b> Use of sudo for package installation inherits the caller’s environment and PATH, <br>potentially allowing PATH hijacking or misconfiguration to escalate privileges; invoke <br>sudo with an absolute path and sanitized PATH (e.g., /usr/bin/sudo env -i <br>PATH=/usr/sbin:/usr/bin ...) or avoid sudo in non-interactive build environments.<br> <strong><a href='https://github.com/carverauto/serviceradar/pull/1967/files#diff-60c9831d4f024788268c9fa56e16e212061b7b55939899f04579d8445036df24R148-R155'>build-kong-vendor.sh [148-155]</a></strong><br> <details open><summary>Referred Code</summary> ```shell info "Installing zlib via apt-get (zlib1g-dev)" >&2 if command -v sudo >/dev/null 2>&1; then sudo apt-get update -y >/dev/null sudo apt-get install -y zlib1g-dev >/dev/null else apt-get update -y >/dev/null apt-get install -y zlib1g-dev >/dev/null fi ``` </details></details></td></tr> <tr><td><details><summary><strong>Unpinned apk install</strong></summary><br> <b>Description:</b> The apk add command runs with --update and no repository pinning or signature verification <br>enforcement, increasing risk of fetching untrusted indexes or packages; prefer --no-cache <br>with pinned repositories and ensure signature verification is enabled.<br> <strong><a href='https://github.com/carverauto/serviceradar/pull/1967/files#diff-60c9831d4f024788268c9fa56e16e212061b7b55939899f04579d8445036df24R171-R174'>build-kong-vendor.sh [171-174]</a></strong><br> <details open><summary>Referred Code</summary> ```shell if command -v apk >/dev/null 2>&1; then info "Installing zlib via apk (zlib-dev)" >&2 apk add --no-progress --update zlib-dev >/dev/null return ``` </details></details></td></tr> <tr><td colspan='2'><strong>Ticket Compliance</strong></td></tr> <tr><td>⚪</td><td><details><summary>🎫 <strong>No ticket provided </strong></summary> - [ ] Create ticket/issue <!-- /create_ticket --create_ticket=true --> </details></td></tr> <tr><td colspan='2'><strong>Codebase Duplication Compliance</strong></td></tr> <tr><td>⚪</td><td><details><summary><strong>Codebase context is not defined </strong></summary> Follow the <a href='https://qodo-merge-docs.qodo.ai/core-abilities/rag_context_enrichment/'>guide</a> to enable codebase context checks. </details></td></tr> <tr><td colspan='2'><strong>Custom Compliance</strong></td></tr> <tr><td rowspan=4>🟢</td><td> <details><summary><strong>Generic: Meaningful Naming and Self-Documenting Code</strong></summary><br> **Objective:** Ensure all identifiers clearly express their purpose and intent, making code <br>self-documenting<br> **Status:** Passed<br> > Learn more about managing compliance <a href='https://qodo-merge-docs.qodo.ai/tools/compliance/#configuration-options'>generic rules</a> or creating your own <a href='https://qodo-merge-docs.qodo.ai/tools/compliance/#custom-compliance'>custom rules</a> </details></td></tr> <tr><td> <details><summary><strong>Generic: Secure Error Handling</strong></summary><br> **Objective:** To prevent the leakage of sensitive system information through error messages while <br>providing sufficient detail for internal debugging.<br> **Status:** Passed<br> > Learn more about managing compliance <a href='https://qodo-merge-docs.qodo.ai/tools/compliance/#configuration-options'>generic rules</a> or creating your own <a href='https://qodo-merge-docs.qodo.ai/tools/compliance/#custom-compliance'>custom rules</a> </details></td></tr> <tr><td> <details><summary><strong>Generic: Secure Logging Practices</strong></summary><br> **Objective:** To ensure logs are useful for debugging and auditing without exposing sensitive <br>information like PII, PHI, or cardholder data.<br> **Status:** Passed<br> > Learn more about managing compliance <a href='https://qodo-merge-docs.qodo.ai/tools/compliance/#configuration-options'>generic rules</a> or creating your own <a href='https://qodo-merge-docs.qodo.ai/tools/compliance/#custom-compliance'>custom rules</a> </details></td></tr> <tr><td> <details><summary><strong>Generic: Security-First Input Validation and Data Handling</strong></summary><br> **Objective:** Ensure all data inputs are validated, sanitized, and handled securely to prevent <br>vulnerabilities<br> **Status:** Passed<br> > Learn more about managing compliance <a href='https://qodo-merge-docs.qodo.ai/tools/compliance/#configuration-options'>generic rules</a> or creating your own <a href='https://qodo-merge-docs.qodo.ai/tools/compliance/#custom-compliance'>custom rules</a> </details></td></tr> <tr><td rowspan=2>⚪</td> <td><details> <summary><strong>Generic: Comprehensive Audit Trails</strong></summary><br> **Objective:** To create a detailed and reliable record of critical system actions for security analysis <br>and compliance.<br> **Status:** <br><a href='https://github.com/carverauto/serviceradar/pull/1967/files#diff-60c9831d4f024788268c9fa56e16e212061b7b55939899f04579d8445036df24R147-R178'><strong>Missing audit logs</strong></a>: The added package installation actions (detecting and installing zlib) are not logged to <br>an audit trail beyond console output, which may be insufficient for reconstructing events.<br> <details open><summary>Referred Code</summary> ```shell if command -v apt-get >/dev/null 2>&1; then info "Installing zlib via apt-get (zlib1g-dev)" >&2 if command -v sudo >/dev/null 2>&1; then sudo apt-get update -y >/dev/null sudo apt-get install -y zlib1g-dev >/dev/null else apt-get update -y >/dev/null apt-get install -y zlib1g-dev >/dev/null fi return fi if command -v yum >/dev/null 2>&1; then info "Installing zlib via yum (zlib-devel)" >&2 yum install -y zlib-devel >/dev/null return fi if command -v dnf >/dev/null 2>&1; then info "Installing zlib via dnf (zlib-devel)" >&2 dnf install -y zlib-devel >/dev/null ... (clipped 11 lines) ``` </details> > Learn more about managing compliance <a href='https://qodo-merge-docs.qodo.ai/tools/compliance/#configuration-options'>generic rules</a> or creating your own <a href='https://qodo-merge-docs.qodo.ai/tools/compliance/#custom-compliance'>custom rules</a> </details></td></tr> <tr><td><details> <summary><strong>Generic: Robust Error Handling and Edge Case Management</strong></summary><br> **Objective:** Ensure comprehensive error handling that provides meaningful context and graceful <br>degradation<br> **Status:** <br><a href='https://github.com/carverauto/serviceradar/pull/1967/files#diff-60c9831d4f024788268c9fa56e16e212061b7b55939899f04579d8445036df24R150-R174'><strong>Install failure handling</strong></a>: Package manager install commands redirect output to /dev/null and do not check command <br>exit codes, potentially causing silent failures without actionable context.<br> <details open><summary>Referred Code</summary> ```shell sudo apt-get update -y >/dev/null sudo apt-get install -y zlib1g-dev >/dev/null else apt-get update -y >/dev/null apt-get install -y zlib1g-dev >/dev/null fi return fi if command -v yum >/dev/null 2>&1; then info "Installing zlib via yum (zlib-devel)" >&2 yum install -y zlib-devel >/dev/null return fi if command -v dnf >/dev/null 2>&1; then info "Installing zlib via dnf (zlib-devel)" >&2 dnf install -y zlib-devel >/dev/null return fi ... (clipped 4 lines) ``` </details> > Learn more about managing compliance <a href='https://qodo-merge-docs.qodo.ai/tools/compliance/#configuration-options'>generic rules</a> or creating your own <a href='https://qodo-merge-docs.qodo.ai/tools/compliance/#custom-compliance'>custom rules</a> </details></td></tr> <tr><td align="center" colspan="2"> <!-- placeholder --> <!-- /compliance --update_compliance=true --> </td></tr></tbody></table> <details><summary>Compliance status legend</summary> 🟢 - Fully Compliant<br> 🟡 - Partial Compliant<br> 🔴 - Not Compliant<br> ⚪ - Requires Further Human Verification<br> 🏷️ - Compliance label<br> </details> ___ #### Previous compliance checks <details> <summary>Compliance check up to commit <a href='https://github.com/carverauto/serviceradar/commit/6b398671bd707da95e8edb0e44c60ce9191aed0e'>6b39867</a></summary><br> <table><tbody><tr><td colspan='2'><strong>Security Compliance</strong></td></tr> <tr><td rowspan=3>⚪</td> <td><details><summary><strong>Unverified package install </strong></summary><br> <b>Description:</b> The script auto-installs packages with apt-get/yum/dnf/apk without verifying package <br>authenticity (no checksum/pin), potentially allowing supply-chain attacks if repositories <br>are compromised or MITM occurs; consider pinning, verifying signatures, or requiring user <br>confirmation.<br> <strong><a href='https://github.com/carverauto/serviceradar/pull/1967/files#diff-60c9831d4f024788268c9fa56e16e212061b7b55939899f04579d8445036df24R147-R175'>build-kong-vendor.sh [147-175]</a></strong><br> <details open><summary>Referred Code</summary> ```shell if command -v apt-get >/dev/null 2>&1; then info "Installing zlib via apt-get (zlib1g-dev)" >&2 if command -v sudo >/dev/null 2>&1; then sudo apt-get update -y >/dev/null sudo apt-get install -y zlib1g-dev >/dev/null else apt-get update -y >/dev/null apt-get install -y zlib1g-dev >/dev/null fi return fi if command -v yum >/dev/null 2>&1; then info "Installing zlib via yum (zlib-devel)" >&2 yum install -y zlib-devel >/dev/null return fi if command -v dnf >/dev/null 2>&1; then info "Installing zlib via dnf (zlib-devel)" >&2 dnf install -y zlib-devel >/dev/null ... (clipped 8 lines) ``` </details></details></td></tr> <tr><td><details><summary><strong>Implicit privilege escalation </strong></summary><br> <b>Description:</b> Running package installs with sudo (if present) and otherwise as the current user may <br>escalate privileges or run unexpected commands in environments where PATH or sudo <br>configuration is untrusted; restrict execution context and avoid implicit sudo use.<br> <strong><a href='https://github.com/carverauto/serviceradar/pull/1967/files#diff-60c9831d4f024788268c9fa56e16e212061b7b55939899f04579d8445036df24R149-R155'>build-kong-vendor.sh [149-155]</a></strong><br> <details open><summary>Referred Code</summary> ```shell if command -v sudo >/dev/null 2>&1; then sudo apt-get update -y >/dev/null sudo apt-get install -y zlib1g-dev >/dev/null else apt-get update -y >/dev/null apt-get install -y zlib1g-dev >/dev/null fi ``` </details></details></td></tr> <tr><td><details><summary><strong>Insecure dependency resolution </strong></summary><br> <b>Description:</b> Reliance on /usr/include or /usr/local/include zlib.h presence to decide skipping <br>installation may allow header/library mismatches leading to linking against unintended <br>system libraries, which can be exploited in poisoned build environments; prefer pkg-config <br>with version checks and controlled paths.<br> <strong><a href='https://github.com/carverauto/serviceradar/pull/1967/files#diff-60c9831d4f024788268c9fa56e16e212061b7b55939899f04579d8445036df24R142-R145'>build-kong-vendor.sh [142-145]</a></strong><br> <details open><summary>Referred Code</summary> ```shell if pkg-config --exists zlib 2>/dev/null || [[ -f /usr/include/zlib.h || -f /usr/local/include/zlib.h ]]; then info "Found zlib development files" >&2 return fi ``` </details></details></td></tr> <tr><td colspan='2'><strong>Ticket Compliance</strong></td></tr> <tr><td>⚪</td><td><details><summary>🎫 <strong>No ticket provided </strong></summary> - [ ] Create ticket/issue <!-- /create_ticket --create_ticket=true --> </details></td></tr> <tr><td colspan='2'><strong>Codebase Duplication Compliance</strong></td></tr> <tr><td>⚪</td><td><details><summary><strong>Codebase context is not defined </strong></summary> Follow the <a href='https://qodo-merge-docs.qodo.ai/core-abilities/rag_context_enrichment/'>guide</a> to enable codebase context checks. </details></td></tr> <tr><td colspan='2'><strong>Custom Compliance</strong></td></tr> <tr><td rowspan=3>🟢</td><td> <details><summary><strong>Generic: Meaningful Naming and Self-Documenting Code</strong></summary><br> **Objective:** Ensure all identifiers clearly express their purpose and intent, making code <br>self-documenting<br> **Status:** Passed<br> > Learn more about managing compliance <a href='https://qodo-merge-docs.qodo.ai/tools/compliance/#configuration-options'>generic rules</a> or creating your own <a href='https://qodo-merge-docs.qodo.ai/tools/compliance/#custom-compliance'>custom rules</a> </details></td></tr> <tr><td> <details><summary><strong>Generic: Secure Error Handling</strong></summary><br> **Objective:** To prevent the leakage of sensitive system information through error messages while <br>providing sufficient detail for internal debugging.<br> **Status:** Passed<br> > Learn more about managing compliance <a href='https://qodo-merge-docs.qodo.ai/tools/compliance/#configuration-options'>generic rules</a> or creating your own <a href='https://qodo-merge-docs.qodo.ai/tools/compliance/#custom-compliance'>custom rules</a> </details></td></tr> <tr><td> <details><summary><strong>Generic: Security-First Input Validation and Data Handling</strong></summary><br> **Objective:** Ensure all data inputs are validated, sanitized, and handled securely to prevent <br>vulnerabilities<br> **Status:** Passed<br> > Learn more about managing compliance <a href='https://qodo-merge-docs.qodo.ai/tools/compliance/#configuration-options'>generic rules</a> or creating your own <a href='https://qodo-merge-docs.qodo.ai/tools/compliance/#custom-compliance'>custom rules</a> </details></td></tr> <tr><td rowspan=3>⚪</td> <td><details> <summary><strong>Generic: Comprehensive Audit Trails</strong></summary><br> **Objective:** To create a detailed and reliable record of critical system actions for security analysis <br>and compliance.<br> **Status:** <br><a href='https://github.com/carverauto/serviceradar/pull/1967/files#diff-60c9831d4f024788268c9fa56e16e212061b7b55939899f04579d8445036df24R141-R178'><strong>Missing audit logs</strong></a>: The new zlib detection/installation steps do not produce structured or durable audit logs <br>of critical actions (e.g., package installation) beyond ephemeral console output.<br> <details open><summary>Referred Code</summary> ```shell ensure_zlib() { if pkg-config --exists zlib 2>/dev/null || [[ -f /usr/include/zlib.h || -f /usr/local/include/zlib.h ]]; then info "Found zlib development files" >&2 return fi if command -v apt-get >/dev/null 2>&1; then info "Installing zlib via apt-get (zlib1g-dev)" >&2 if command -v sudo >/dev/null 2>&1; then sudo apt-get update -y >/dev/null sudo apt-get install -y zlib1g-dev >/dev/null else apt-get update -y >/dev/null apt-get install -y zlib1g-dev >/dev/null fi return fi if command -v yum >/dev/null 2>&1; then info "Installing zlib via yum (zlib-devel)" >&2 yum install -y zlib-devel >/dev/null ... (clipped 17 lines) ``` </details> > Learn more about managing compliance <a href='https://qodo-merge-docs.qodo.ai/tools/compliance/#configuration-options'>generic rules</a> or creating your own <a href='https://qodo-merge-docs.qodo.ai/tools/compliance/#custom-compliance'>custom rules</a> </details></td></tr> <tr><td><details> <summary><strong>Generic: Robust Error Handling and Edge Case Management</strong></summary><br> **Objective:** Ensure comprehensive error handling that provides meaningful context and graceful <br>degradation<br> **Status:** <br><a href='https://github.com/carverauto/serviceradar/pull/1967/files#diff-60c9831d4f024788268c9fa56e16e212061b7b55939899f04579d8445036df24R147-R175'><strong>Silent install errors</strong></a>: Package manager commands are run with output suppressed and without checking individual <br>command exit codes, risking silent failures and limited error context.<br> <details open><summary>Referred Code</summary> ```shell if command -v apt-get >/dev/null 2>&1; then info "Installing zlib via apt-get (zlib1g-dev)" >&2 if command -v sudo >/dev/null 2>&1; then sudo apt-get update -y >/dev/null sudo apt-get install -y zlib1g-dev >/dev/null else apt-get update -y >/dev/null apt-get install -y zlib1g-dev >/dev/null fi return fi if command -v yum >/dev/null 2>&1; then info "Installing zlib via yum (zlib-devel)" >&2 yum install -y zlib-devel >/dev/null return fi if command -v dnf >/dev/null 2>&1; then info "Installing zlib via dnf (zlib-devel)" >&2 dnf install -y zlib-devel >/dev/null ... (clipped 8 lines) ``` </details> > Learn more about managing compliance <a href='https://qodo-merge-docs.qodo.ai/tools/compliance/#configuration-options'>generic rules</a> or creating your own <a href='https://qodo-merge-docs.qodo.ai/tools/compliance/#custom-compliance'>custom rules</a> </details></td></tr> <tr><td><details> <summary><strong>Generic: Secure Logging Practices</strong></summary><br> **Objective:** To ensure logs are useful for debugging and auditing without exposing sensitive <br>information like PII, PHI, or cardholder data.<br> **Status:** <br><a href='https://github.com/carverauto/serviceradar/pull/1967/files#diff-60c9831d4f024788268c9fa56e16e212061b7b55939899f04579d8445036df24R141-R178'><strong>Unstructured logs</strong></a>: The script emits human-readable console messages rather than structured logs, which may <br>hinder auditing and automated monitoring.<br> <details open><summary>Referred Code</summary> ```shell ensure_zlib() { if pkg-config --exists zlib 2>/dev/null || [[ -f /usr/include/zlib.h || -f /usr/local/include/zlib.h ]]; then info "Found zlib development files" >&2 return fi if command -v apt-get >/dev/null 2>&1; then info "Installing zlib via apt-get (zlib1g-dev)" >&2 if command -v sudo >/dev/null 2>&1; then sudo apt-get update -y >/dev/null sudo apt-get install -y zlib1g-dev >/dev/null else apt-get update -y >/dev/null apt-get install -y zlib1g-dev >/dev/null fi return fi if command -v yum >/dev/null 2>&1; then info "Installing zlib via yum (zlib-devel)" >&2 yum install -y zlib-devel >/dev/null ... (clipped 17 lines) ``` </details> > Learn more about managing compliance <a href='https://qodo-merge-docs.qodo.ai/tools/compliance/#configuration-options'>generic rules</a> or creating your own <a href='https://qodo-merge-docs.qodo.ai/tools/compliance/#custom-compliance'>custom rules</a> </details></td></tr> <tr><td align="center" colspan="2"> <!-- placeholder --> <!-- /compliance --update_compliance=true --> </td></tr></tbody></table> </details>
qodo-code-review[bot] commented 2025-11-20 05:46:04 +00:00 (Migrated from github.com)
Author
Owner

Imported GitHub PR comment.

Original author: @qodo-code-review[bot]
Original URL: https://github.com/carverauto/serviceradar/pull/1967#issuecomment-3555970973
Original created: 2025-11-20T05:46:04Z

PR Code Suggestions

Explore these optional code suggestions:

CategorySuggestion                                                                                                                                    Impact
High-level
Avoid automatic system dependency installation

The build script should not automatically install system dependencies like zlib.
Instead, it should check if they are present and, if not, provide clear
installation instructions to the user.

Examples:

scripts/build-kong-vendor.sh [141-179]
ensure_zlib() {
  if pkg-config --exists zlib 2>/dev/null || [[ -f /usr/include/zlib.h || -f /usr/local/include/zlib.h ]]; then
    info "Found zlib development files" >&2
    return
  fi

  if command -v apt-get >/dev/null 2>&1; then
    info "Installing zlib via apt-get (zlib1g-dev)" >&2
    if command -v sudo >/dev/null 2>&1; then
      sudo apt-get update -y >/dev/null

 ... (clipped 29 lines)

Solution Walkthrough:

Before:

ensure_zlib() {
  if zlib_is_found; then
    return
  fi

  if command -v apt-get >/dev/null; then
    info "Installing zlib via apt-get..."
    sudo apt-get install -y zlib1g-dev
    return
  fi
  # ... similar blocks for yum, dnf, apk ...

  echo "zlib development headers not found." >&2
  exit 1
}

After:

ensure_zlib() {
  if zlib_is_found; then
    return
  fi

  echo "zlib development headers not found." >&2
  echo "Please install it for your distribution. Examples:" >&2
  echo "  Debian/Ubuntu: sudo apt-get install zlib1g-dev" >&2
  echo "  RHEL/CentOS:   sudo yum install zlib-devel" >&2
  echo "  Alpine:        apk add zlib-dev" >&2
  exit 1
}

Suggestion importance[1-10]: 9

__

Why: This suggestion addresses a critical design flaw, as build scripts automatically installing system packages is a bad practice that can cause permission issues and unexpected side effects.

High
Possible issue
Use sudo for package installation

Use sudo for yum and dnf package installations if available, consistent with the
apt-get implementation. Also, check the command exit codes to handle potential
installation failures.

scripts/build-kong-vendor.sh [159-169]

 if command -v yum >/dev/null 2>&1; then
   info "Installing zlib via yum (zlib-devel)" >&2
-  yum install -y zlib-devel >/dev/null
+  local SUDO=""
+  if command -v sudo >/dev/null 2>&1; then
+    SUDO="sudo"
+  fi
+  if ! $SUDO yum install -y zlib-devel; then
+    echo "[kong] failed to install zlib-devel via yum" >&2
+    exit 1
+  fi
   return
 fi
 
 if command -v dnf >/dev/null 2>&1; then
   info "Installing zlib via dnf (zlib-devel)" >&2
-  dnf install -y zlib-devel >/dev/null
+  local SUDO=""
+  if command -v sudo >/dev/null 2>&1; then
+    SUDO="sudo"
+  fi
+  if ! $SUDO dnf install -y zlib-devel; then
+    echo "[kong] failed to install zlib-devel via dnf" >&2
+    exit 1
+  fi
   return
 fi
  • Apply / Chat
Suggestion importance[1-10]: 8

__

Why: The suggestion correctly points out that yum and dnf commands will likely fail without sudo for non-root users, which is a significant correctness issue. The proposed change to add sudo and error checking makes the script more robust and reliable across different environments.

Medium
Verify package installation was successful

Check the exit code after running apt-get install to ensure the package
installation was successful. If it fails, exit the script with an error message
to prevent subsequent failures.

scripts/build-kong-vendor.sh [147-157]

 if command -v apt-get >/dev/null 2>&1; then
   info "Installing zlib via apt-get (zlib1g-dev)" >&2
+  local SUDO=""
   if command -v sudo >/dev/null 2>&1; then
-    sudo apt-get update -y >/dev/null
-    sudo apt-get install -y zlib1g-dev >/dev/null
-  else
-    apt-get update -y >/dev/null
-    apt-get install -y zlib1g-dev >/dev/null
+    SUDO="sudo"
+  fi
+  if ! ($SUDO apt-get update -y && $SUDO apt-get install -y zlib1g-dev); then
+    echo "[kong] failed to install zlib1g-dev via apt-get" >&2
+    exit 1
   fi
   return
 fi
  • Apply / Chat
Suggestion importance[1-10]: 7

__

Why: The suggestion correctly identifies that the script does not check the exit code of apt-get install, which could lead to silent failures. Adding a check improves the script's robustness and provides clearer error feedback.

Medium
  • More
Imported GitHub PR comment. Original author: @qodo-code-review[bot] Original URL: https://github.com/carverauto/serviceradar/pull/1967#issuecomment-3555970973 Original created: 2025-11-20T05:46:04Z --- ## PR Code Suggestions ✨ <!-- 6b39867 --> Explore these optional code suggestions: <table><thead><tr><td><strong>Category</strong></td><td align=left><strong>Suggestion&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </strong></td><td align=center><strong>Impact</strong></td></tr><tbody><tr><td rowspan=1>High-level</td> <td> <details><summary>Avoid automatic system dependency installation</summary> ___ **The build script should not automatically install system dependencies like <code>zlib</code>. <br>Instead, it should check if they are present and, if not, provide clear <br>installation instructions to the user.** ### Examples: <details> <summary> <a href="https://github.com/carverauto/serviceradar/pull/1967/files#diff-60c9831d4f024788268c9fa56e16e212061b7b55939899f04579d8445036df24R141-R179">scripts/build-kong-vendor.sh [141-179]</a> </summary> ```bash ensure_zlib() { if pkg-config --exists zlib 2>/dev/null || [[ -f /usr/include/zlib.h || -f /usr/local/include/zlib.h ]]; then info "Found zlib development files" >&2 return fi if command -v apt-get >/dev/null 2>&1; then info "Installing zlib via apt-get (zlib1g-dev)" >&2 if command -v sudo >/dev/null 2>&1; then sudo apt-get update -y >/dev/null ... (clipped 29 lines) ``` </details> ### Solution Walkthrough: #### Before: ```bash ensure_zlib() { if zlib_is_found; then return fi if command -v apt-get >/dev/null; then info "Installing zlib via apt-get..." sudo apt-get install -y zlib1g-dev return fi # ... similar blocks for yum, dnf, apk ... echo "zlib development headers not found." >&2 exit 1 } ``` #### After: ```bash ensure_zlib() { if zlib_is_found; then return fi echo "zlib development headers not found." >&2 echo "Please install it for your distribution. Examples:" >&2 echo " Debian/Ubuntu: sudo apt-get install zlib1g-dev" >&2 echo " RHEL/CentOS: sudo yum install zlib-devel" >&2 echo " Alpine: apk add zlib-dev" >&2 exit 1 } ``` <details><summary>Suggestion importance[1-10]: 9</summary> __ Why: This suggestion addresses a critical design flaw, as build scripts automatically installing system packages is a bad practice that can cause permission issues and unexpected side effects. </details></details></td><td align=center>High </td></tr><tr><td rowspan=2>Possible issue</td> <td> <details><summary>Use sudo for package installation</summary> ___ **Use <code>sudo</code> for <code>yum</code> and <code>dnf</code> package installations if available, consistent with the <br><code>apt-get</code> implementation. Also, check the command exit codes to handle potential <br>installation failures.** [scripts/build-kong-vendor.sh [159-169]](https://github.com/carverauto/serviceradar/pull/1967/files#diff-60c9831d4f024788268c9fa56e16e212061b7b55939899f04579d8445036df24R159-R169) ```diff if command -v yum >/dev/null 2>&1; then info "Installing zlib via yum (zlib-devel)" >&2 - yum install -y zlib-devel >/dev/null + local SUDO="" + if command -v sudo >/dev/null 2>&1; then + SUDO="sudo" + fi + if ! $SUDO yum install -y zlib-devel; then + echo "[kong] failed to install zlib-devel via yum" >&2 + exit 1 + fi return fi if command -v dnf >/dev/null 2>&1; then info "Installing zlib via dnf (zlib-devel)" >&2 - dnf install -y zlib-devel >/dev/null + local SUDO="" + if command -v sudo >/dev/null 2>&1; then + SUDO="sudo" + fi + if ! $SUDO dnf install -y zlib-devel; then + echo "[kong] failed to install zlib-devel via dnf" >&2 + exit 1 + fi return fi ``` - [ ] **Apply / Chat** <!-- /improve --apply_suggestion=1 --> <details><summary>Suggestion importance[1-10]: 8</summary> __ Why: The suggestion correctly points out that `yum` and `dnf` commands will likely fail without `sudo` for non-root users, which is a significant correctness issue. The proposed change to add `sudo` and error checking makes the script more robust and reliable across different environments. </details></details></td><td align=center>Medium </td></tr><tr><td> <details><summary>Verify package installation was successful</summary> ___ **Check the exit code after running <code>apt-get install</code> to ensure the package <br>installation was successful. If it fails, exit the script with an error message <br>to prevent subsequent failures.** [scripts/build-kong-vendor.sh [147-157]](https://github.com/carverauto/serviceradar/pull/1967/files#diff-60c9831d4f024788268c9fa56e16e212061b7b55939899f04579d8445036df24R147-R157) ```diff if command -v apt-get >/dev/null 2>&1; then info "Installing zlib via apt-get (zlib1g-dev)" >&2 + local SUDO="" if command -v sudo >/dev/null 2>&1; then - sudo apt-get update -y >/dev/null - sudo apt-get install -y zlib1g-dev >/dev/null - else - apt-get update -y >/dev/null - apt-get install -y zlib1g-dev >/dev/null + SUDO="sudo" + fi + if ! ($SUDO apt-get update -y && $SUDO apt-get install -y zlib1g-dev); then + echo "[kong] failed to install zlib1g-dev via apt-get" >&2 + exit 1 fi return fi ``` - [ ] **Apply / Chat** <!-- /improve --apply_suggestion=2 --> <details><summary>Suggestion importance[1-10]: 7</summary> __ Why: The suggestion correctly identifies that the script does not check the exit code of `apt-get install`, which could lead to silent failures. Adding a check improves the script's robustness and provides clearer error feedback. </details></details></td><td align=center>Medium </td></tr> <tr><td align="center" colspan="2"> - [ ] More <!-- /improve --more_suggestions=true --> </td><td></td></tr></tbody></table>
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
carverauto/serviceradar!2435
No description provided.