[PR #2810] [MERGED] [Fix] Headscale API Bypasses Middleware #2873

Closed
opened 2025-12-29 04:19:27 +01:00 by adam · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/juanfont/headscale/pull/2810
Author: @ElyasAsmad
Created: 10/21/2025
Status: Merged
Merged: 10/22/2025
Merged by: @kradalby

Base: mainHead: bugfix/api-middleware-bypass


📝 Commits (1)

  • 94541b7 refactor: guard every error statement with early return

📊 Changes

1 file changed (+31 additions, -39 deletions)

View changed files

📝 hscontrol/app.go (+31 -39)

📄 Description

Description

This PR aims to fix #2809

General Overview

The previous implementation checks if err is not null and returned from the writer.Write function call. In majority cases, the Write function call will be triggered successfully without any error. In an unauthorized scenario (where the API caller does not provide API key), Headscale already know the API caller is unauthorized but since the guard return statement is ONLY called if writer.Write returns an error, thus the middleware will continue executing.

  • have read the CONTRIBUTING.md file
  • raised a GitHub issue or discussed it on the projects chat beforehand
  • added unit tests
  • added integration tests
  • updated documentation if needed
  • updated CHANGELOG.md

🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.

## 📋 Pull Request Information **Original PR:** https://github.com/juanfont/headscale/pull/2810 **Author:** [@ElyasAsmad](https://github.com/ElyasAsmad) **Created:** 10/21/2025 **Status:** ✅ Merged **Merged:** 10/22/2025 **Merged by:** [@kradalby](https://github.com/kradalby) **Base:** `main` ← **Head:** `bugfix/api-middleware-bypass` --- ### 📝 Commits (1) - [`94541b7`](https://github.com/juanfont/headscale/commit/94541b7c1121b1dd3b27cb397784d58abebd7bc1) refactor: guard every error statement with early return ### 📊 Changes **1 file changed** (+31 additions, -39 deletions) <details> <summary>View changed files</summary> 📝 `hscontrol/app.go` (+31 -39) </details> ### 📄 Description # Description This PR aims to fix #2809 # General Overview The previous implementation checks if `err` is not null and returned from the `writer.Write` function call. In majority cases, the `Write` function call will be triggered successfully without any error. In an unauthorized scenario (where the API caller does not provide API key), Headscale already know the API caller is unauthorized but since the guard `return` statement is ONLY called if `writer.Write` returns an error, thus the middleware will continue executing. <!-- Headscale is "Open Source, acknowledged contribution", this means that any contribution will have to be discussed with the Maintainers before being submitted. This model has been chosen to reduce the risk of burnout by limiting the maintenance overhead of reviewing and validating third-party code. Headscale is open to code contributions for bug fixes without discussion. If you find mistakes in the documentation, please submit a fix to the documentation. --> <!-- Please tick if the following things apply. You… --> - [x] have read the [CONTRIBUTING.md](./CONTRIBUTING.md) file - [x] raised a GitHub issue or discussed it on the projects chat beforehand - [ ] added unit tests - [ ] added integration tests - [ ] updated documentation if needed - [ ] updated CHANGELOG.md <!-- If applicable, please reference the issue using `Fixes #XXX` and add tests to cover your new code. --> --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
adam added the pull-request label 2025-12-29 04:19:27 +01:00
adam closed this issue 2025-12-29 04:19:27 +01:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: starred/headscale#2873