| Release notes for Gerrit 2.5.1 | 
 | ============================== | 
 |  | 
 | Gerrit 2.5.1 is now available: | 
 |  | 
 | link:http://code.google.com/p/gerrit/downloads/detail?name=gerrit-full-2.5.1.war[http://code.google.com/p/gerrit/downloads/detail?name=gerrit-full-2.5.1.war] | 
 |  | 
 | There are no schema changes from 2.5, or 2.5.1. | 
 |  | 
 | However, if upgrading from a version older than 2.5, follow the upgrade | 
 | procedure in the 2.5 link:ReleaseNotes-2.5.html[Release Notes]. | 
 |  | 
 | Security Fixes | 
 | -------------- | 
 | * Correctly identify Git-over-HTTP operations | 
 | + | 
 | Git operations over HTTP should be classified as using AccessPath.GIT | 
 | and not WEB_UI. This ensures RefControl will correctly test for Create, | 
 | Push or Delete access on a reference instead of Owner. | 
 | + | 
 | E.g. without this fix project owners are able to force push commits | 
 | via HTTP that are already in the history of the target branch, even | 
 | without having any Push access right assigned. | 
 |  | 
 | * Make sure only Gerrit admins can change the parent of a project | 
 | + | 
 | Only Gerrit administrators should be able to change the parent of a | 
 | project because by changing the parent project access rights and BLOCK | 
 | rules which are configured on a parent project can be avoided. | 
 | + | 
 | The `set-project-parent` SSH command already verifies that the caller | 
 | is a Gerrit administrator, however project owners can change the parent | 
 | project by modifying the `project.config` file and pushing to the | 
 | `refs/meta/config` branch. | 
 | + | 
 | This fix ensures that changes to the `project.config` file that change | 
 | the parent project can only be pushed/submitted by Gerrit | 
 | administrators. | 
 | + | 
 | In addition it is now no longer possible to | 
 | + | 
 | ** set a non-existing project as parent (as this would make the project | 
 |   be orphaned) | 
 | ** set a parent project for the `All-Projects` root project (the root | 
 |   project by definition has no parent) | 
 | by pushing changes of the `project.config` file to `refs/meta/config`. | 
 |  | 
 | Bug Fixes | 
 | --------- | 
 | * Fix RequestCleanup bug with Git over HTTP | 
 | + | 
 | Decide if a continuation is going to be used early, before the filter | 
 | that will attempt to cleanup a RequestCleanup. If so don't allow | 
 | entering the RequestCleanup part of the system until the request is | 
 | actually going to be processed. | 
 | + | 
 | This fixes the IllegalStateException `Request has already been cleaned | 
 | up` that occurred when running on Jetty and pushing over HTTP for URLs | 
 | where the path starts with `/p/`. | 
 |  | 
 | * Match all git fetch/clone/push commands to the command executor | 
 | + | 
 | Route not just `/p/` but any Git access to the same thread pool as the | 
 | SSH server is using, allowing all requests to compete fairly for | 
 | resources. | 
 |  | 
 | * Fix auto closing of changes on direct push | 
 | + | 
 | When a commit is directly pushed into a repository (bypassing code | 
 | review) and this commit has a Change-Id in its commit message then the | 
 | corresponding change is automatically closed if it is open. | 
 |  | 
 | * Allow assigning `Push` for `refs/meta/config` on `All-Projects` | 
 | + | 
 | The `refs/meta/config` branch of the `All-Projects project` should only | 
 | be modified by Gerrit administrators because being able to do | 
 | modifications on this branch means that the user could assign himself | 
 | administrator permissions. | 
 | + | 
 | In addition to being administrator we already require that the | 
 | administrator has the `Push` access right for `refs/meta/config` in | 
 | order to be able to modify it (just as with all other branches | 
 | administrators do not have edit permissions by default). | 
 | + | 
 | The problem was that assigning the `Push` access right for | 
 | `refs/meta/config` on the `All-Projects` project was not allowed. | 
 | + | 
 | Having the `Push` access right for `refs/meta/config` on the | 
 | `All-Projects` project without being administrator already has no | 
 | effect. | 
 | + | 
 | Prohibiting to assign the Push access right for `refs/meta/config` on | 
 | the `All-Project` project was anyway pointless since it was e.g. | 
 | possible to assign the `Push` access right on `refs/meta/*`. | 
 |  |