]> source.dussan.org Git - gitblit.git/commitdiff
Expose JGit 3.x receive pack settings as Gitblit settings 48/48/1
authorJames Moger <james.moger@gitblit.com>
Thu, 17 Apr 2014 16:00:35 +0000 (12:00 -0400)
committerJames Moger <james.moger@gitblit.com>
Thu, 17 Apr 2014 16:00:35 +0000 (12:00 -0400)
releases.moxie
src/main/distrib/data/gitblit.properties
src/main/java/com/gitblit/git/GitblitReceivePack.java

index 15d333d480c5c67381d864c110322365ae43820a..cd2cfaa2d370042882ca07e8bc6fd57d088fa667 100644 (file)
@@ -43,6 +43,7 @@ r22: {
     - Added beginnings of a plugin framework for extending Gitblit (issue-381, ticket-23)
     - Added a French translation (pr-163)
     - Added a setting to control what transports may be used for pushes
+    - Expose JGit 3.x receive pack settings (issue-408)
     dependencyChanges:
     - Java 7
     - Jetty 9.1.4
@@ -64,6 +65,10 @@ r22: {
     - { name: 'realm.ldap.bindpattern', defaultValue: ' ' }
     - { name: 'tickets.closeOnPushCommitMessageRegex', defaultValue: '(?:fixes|closes)[\\s-]+#?(\\d+)' }
     - { name: 'git.acceptedPushTransports', defaultValue: ' ' }
+    - { name: 'git.checkReceivedObjects', defaultValue: 'true' }
+    - { name: 'git.checkReferencedObjectsAreReachable', defaultValue: 'true' }
+    - { name: 'git.maxObjectSizeLimit', defaultValue: '0' }
+    - { name: 'git.maxPackSizeLimit', defaultValue: '-1' }
     - { name: 'git.sshPort', defaultValue: '29418' }
     - { name: 'git.sshBindInterface', defaultValue: ' ' }
     - { name: 'git.sshKeysManager', defaultValue: 'com.gitblit.transport.ssh.FileKeyManager' }
index beeb965b56f3b8e3a1e1faf3ee69206aa3e7e93b..3215094e110e555e768cb3cc4ef9b810aaea1674 100644 (file)
@@ -126,6 +126,8 @@ git.sshKeysFolder= ${baseFolder}/ssh
 \r
 # SSH backend NIO2|MINA.\r
 #\r
+# The Apache Mina project recommends using the NIO2 backend.\r
+#\r
 # SINCE 1.5.0\r
 git.sshBackend = NIO2\r
 \r
@@ -483,6 +485,45 @@ git.streamFileThreshold = 50m
 # RESTART REQUIRED\r
 git.packedGitMmap = false\r
 \r
+# Validate all received (pushed) objects are valid.\r
+#\r
+# SINCE 1.5.0\r
+git.checkReceivedObjects = true\r
+\r
+# Validate all referenced but not supplied objects are reachable.\r
+#\r
+# If enabled, Gitblit will verify that references to objects not contained\r
+# within the received pack are already reachable through at least one other\r
+# reference advertised to clients.\r
+#\r
+# This feature is useful when Gitblit doesn't trust the client to not provide a\r
+# forged SHA-1 reference to an object, in an attempt to access parts of the DAG\r
+# that they aren't allowed to see and which have been hidden from them via the\r
+# configured AdvertiseRefsHook or RefFilter.\r
+#\r
+# Enabling this feature may imply at least some, if not all, of the same functionality\r
+# performed by git.checkReceivedObjects. \r
+#\r
+# SINCE 1.5.0\r
+git.checkReferencedObjectsAreReachable = true\r
+\r
+# Set the maximum allowed Git object size.\r
+#\r
+# If an object is larger than the given size the pack-parsing will throw an exception\r
+# aborting the receive-pack operation.  The default value, 0, disables maximum\r
+# object size checking.\r
+#\r
+# SINCE 1.5.0\r
+git.maxObjectSizeLimit = 0\r
+\r
+# Set the maximum allowed pack size.\r
+#\r
+# A pack exceeding this size will be rejected. The default value, -1, disables\r
+# maximum pack size checking.\r
+#\r
+# SINCE 1.5.0\r
+git.maxPackSizeLimit = -1\r
+\r
 # Use the Gitblit patch receive pack for processing contributions and tickets.\r
 # This allows the user to push a patch using the familiar Gerrit syntax:\r
 #\r
index 0cc41987e36d2a76c529a250a7f58b2a4124c8c6..61f2d67d4e30c42a7a51b8ccee95062690732aaf 100644 (file)
@@ -119,6 +119,17 @@ public class GitblitReceivePack extends ReceivePack implements PreReceiveHook, P
                setAllowDeletes(user.canDeleteRef(repository));\r
                setAllowNonFastForwards(user.canRewindRef(repository));\r
 \r
+               int maxObjectSz = settings.getInteger(Keys.git.maxObjectSizeLimit, -1);\r
+               if (maxObjectSz >= 0) {\r
+                       setMaxObjectSizeLimit(maxObjectSz);\r
+               }\r
+               int maxPackSz = settings.getInteger(Keys.git.maxPackSizeLimit, -1);\r
+               if (maxPackSz >= 0) {\r
+                       setMaxPackSizeLimit(maxPackSz);\r
+               }\r
+               setCheckReceivedObjects(settings.getBoolean(Keys.git.checkReceivedObjects, true));\r
+               setCheckReferencedObjectsAreReachable(settings.getBoolean(Keys.git.checkReferencedObjectsAreReachable, true));\r
+\r
                // setup pre and post receive hook\r
                setPreReceiveHook(this);\r
                setPostReceiveHook(this);\r