Commit Graph
100 Commits
Author SHA1 Message Date
Jason A. Donenfeld 898b9e19e0 auth-filter: pass url with query string attached
Otherwise redirections come out wrong.

Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-11-25 06:01:34 +01:00
Jason A. Donenfeld 824138e591 Bump version.
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-08-03 17:04:03 +02:00
Jason A. Donenfeld 53efaf30b5 clone: fix directory traversal
This was introduced in the initial version of this code, way back when
in 2008.

$ curl http://127.0.0.1/cgit/repo/objects/?path=../../../../../../../../../etc/passwd
root:x:0:0:root:/root:/bin/sh
...

Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
Reported-by: Jann Horn <jannh@google.com>
2018-08-03 17:04:03 +02:00
Jason A. Donenfeld 77b6f83344 auth-filters: add simple file-based authentication scheme
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-08-03 16:12:21 +02:00
Jason A. Donenfeld 82856923bf auth-filters: use crypt() in simple-authentication
There's no use in giving a silly example to folks who will just copy it,
so instead try to do something slightly better.

Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-07-15 04:18:03 +02:00
Jason A. Donenfeld b73df8098f auth-filters: generate secret securely
This is much better than having the user generate it themselves.

Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-07-15 03:30:57 +02:00
Jason A. Donenfeld c4d23d02ec auth-filters: do not crash on nil username
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-07-14 05:10:28 +02:00
Jason A. Donenfeld 93a2c33051 auth-filter: do not write more than we've read
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-07-14 05:09:27 +02:00
Jason A. Donenfeld c3b5b5f648 auth-filters: do not use HMAC-SHA1
Though SHA1 is broken, HMAC-SHA1 is still fine. But let's not push our
luck; SHA256 is more sensible anyway.

Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-07-14 03:33:56 +02:00
Jason A. Donenfeld c132ef2462 Bump version.
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-07-13 22:40:42 +02:00
Jason A. Donenfeld 089b29a7e1 css: use correct size in annotated decoration
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-07-08 19:14:51 +02:00
Jason A. Donenfeld 22583c4992 cgitrc.5: add local tar signature example
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-07-05 02:40:48 +02:00
Jason A. Donenfeld 08a2b1b8f8 Fix gcc 8.1.1 compiler warnings
CC ../shared.o
../shared.c: In function ‘expand_macro’:
../shared.c:487:3: warning: ‘strncpy’ specified bound depends on the length of the source argument [-Wstringop-overflow=]
   strncpy(name, value, len);
   ^~~~~~~~~~~~~~~~~~~~~~~~~
../shared.c:484:9: note: length computed here
   len = strlen(value);
         ^~~~~~~~~~~~~
../ui-shared.c: In function ‘cgit_repobasename’:
../ui-shared.c:136:2: warning: ‘strncpy’ specified bound 1024 equals destination size [-Wstringop-truncation]
  strncpy(rvbuf, reponame, sizeof(rvbuf));
  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    CC ../ui-ssdiff.o
../ui-ssdiff.c: In function ‘replace_tabs’:
../ui-ssdiff.c:142:4: warning: ‘strncat’ output truncated copying between 1 and 8 bytes from a string of length 8 [-Wstringop-truncation]
    strncat(result, spaces, 8 - (strlen(result) % 8));
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-07-04 03:13:41 +02:00
Jason A. Donenfeld c4167cbd65 cgitrc.5: document new signature notes
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-07-03 20:44:25 +02:00
Jason A. Donenfeld b522a302c9 extra-head-content: introduce another option for meta tags
This is to support things like go-import meta tags, which are on a
per-repo basis.

Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-07-03 20:37:00 +02:00
Jason A. Donenfeld 03f6e34bb9 cgit: prepare repo before error pages
This fixes a crash when showing a list of all heads in the <select> box
in the header.

Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2018-02-12 23:25:29 +01:00
Jason A. Donenfeld fd069b4ca0 filter: pipe_fh should be local
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2017-10-14 16:13:07 +02:00
Jason A. Donenfeld 87c47488d0 ui-repolist: properly sort by age
When empty repos exist, comparing them against an existing repo with a
good mtime might, with particular qsort implementations, not sort
correctly, because of this brokenness:

   if (get_repo_modtime(r1, &t) && get_repo_modtime(r2, &t))

However, sorting by the age column works as expected, so anyway, to tidy
things up, we simply reuse that function.

Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2017-03-30 13:19:54 +02:00
Jason A. Donenfeld 5564a5d066 syntax-highlighting: replace invalid unicode with ? 2017-01-22 12:44:44 +01:00
Jason A. Donenfeld 8e9ddd21a5 Bump version. 2016-11-23 05:24:36 +01:00
Jason A. Donenfeld ef3108656b Makefile: remove extra space
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2016-10-01 23:35:04 +02:00
Jason A. Donenfeld 7d51120440 md2html: use utf-8 and flush output buffer
Otherwise we get the classic Python UTF-8 errors, and the text is all
out of order. While we're at it, switch to python3 so we only have to
support one set of oddball semantics.

Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
Suggested-by: Daniel Campbell <dlcampbell@gmx.com>
2016-06-17 12:28:03 +02:00
Jason A. Donenfeld d88ec849c4 Hosted on HTTPS now 2016-06-07 14:49:35 +02:00
Jason A. Donenfeld a6572ce176 Bump version.
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2016-06-07 14:45:04 +02:00
Jason A. Donenfeld 21bf30b043 ui-diff: action='.' is not correct
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2016-05-12 21:39:06 +02:00
Jason A. Donenfeld c34e28835b forms: action should not be empty
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2016-05-12 21:29:49 +02:00
Jason A. Donenfeld e9cbdf6463 ui-shared: redirect should not exit early for cache
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2016-02-26 13:24:35 +01:00
Jason A. Donenfeld 09a3aa5ae7 about: path_info might not be valid 2016-02-26 13:14:52 +01:00
Jason A. Donenfeld c424b5cb02 tabs: do not use target=_blank 2016-02-23 15:35:32 +01:00
Jason A. Donenfeld 46ff6e1993 css: fix indentation 2016-02-23 15:15:57 +01:00
Jason A. Donenfeld 1892cd9a60 md2html: Do syntax highlighting too 2016-02-23 15:00:05 +01:00
Jason A. Donenfeld 94c02bbf73 cmd: redirect empty about/ to homepage or summary
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2016-02-22 18:40:15 +01:00
Jason A. Donenfeld 5f2664f13c ui-shared: add homepage to tabs
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2016-02-22 18:40:13 +01:00
Jason A. Donenfeld a8b9ef8c1c ui-stats: if we're going to abuse void*, do it safely 2016-02-08 14:35:47 +01:00
Jason A. Donenfeld 23f7dadaab ui-tree: put reverse path in title 2016-01-18 16:13:29 +01:00
Jason A. Donenfeld d3756bd7b0 syntax-highlighting: always use utf-8 to avoid ascii codec issues 2016-01-18 11:14:06 +01:00
Jason A. Donenfeld e64d5e04c3 Bump version 2016-01-14 15:43:54 +01:00
Jason A. Donenfeld c326f3eb02 ui-plain: add enable-html-serving flag
Unrestricts plain/ to contents likely to be executed by browser.
2016-01-14 15:42:56 +01:00
Jason A. Donenfeld 9ca2566972 ui-blob: set CSP just in case 2016-01-14 14:43:43 +01:00
Jason A. Donenfeld 92996ac2a6 ui-blob: always use generic mimetypes 2016-01-14 14:31:53 +01:00
Jason A. Donenfeld 1c581a0726 ui-blob: Do not accept mimetype from user 2016-01-14 14:31:13 +01:00
Jason A. Donenfeld 513b3863d9 ui-shared: prevent malicious filename from injecting headers 2016-01-14 14:28:37 +01:00
Jason A. Donenfeld 4291453ec3 ui-shared: Avoid new line injection into redirect header 2016-01-14 14:18:17 +01:00
Jason A. Donenfeld 4458abf641 filter: avoid integer overflow in authenticate_post
ctx.env.content_length is an unsigned int, coming from the
CONTENT_LENGTH environment variable, which is parsed by strtoul. The
HTTP/1.1 spec says that "any Content-Length greater than or equal to
zero is a valid value." By storing this into an int, we potentially
overflow it, resulting in the following bounding check failing, leading
to a buffer overflow.

Reported-by: Erik Cabetas <Erik@cabetas.com>
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2015-11-24 11:31:43 +01:00
Jason A. Donenfeld ffe09621f2 about-formatting.sh: comment text out of date 2015-11-12 04:44:32 +01:00
Jason A. Donenfeld 3f9e14ada1 md2html: the default of stdin works fine
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2015-10-12 18:33:46 +02:00
Jason A. Donenfeld c301899112 filters: misc cleanups
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2015-10-12 16:47:47 +02:00
Jason A. Donenfeld ccb4254104 md2html: use pure python
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2015-10-12 16:42:54 +02:00
Jason A. Donenfeld 525c815cc4 filters: Simplify converters
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2015-10-09 15:13:35 +02:00
Jason A. Donenfeld ad006918a5 Avoid use of non-reentrant functions
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2015-10-09 11:01:04 +02:00
Jason A. Donenfeld 73f199be3f mime: rewrite detection function
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2015-08-17 14:49:28 +02:00
Jason A. Donenfeld 03de473354 cmd: no need for pre function hook now
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2015-08-14 15:54:32 +02:00
Jason A. Donenfeld c0b5982303 redirect: cleanliness 2015-08-13 11:39:23 +02:00
Jason A. Donenfeld 622e64d5f2 redirect: be more careful for different cgi setups 2015-08-13 11:39:20 +02:00
Jason A. Donenfeld 2d386e227e t0110: Chain together using && 2015-08-12 15:16:05 +02:00
Jason A. Donenfeld d7034806a4 about: always ensure page has a trailing slash
Otherwise we can't easily embed links to other /about/ pages.

Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2015-08-12 15:03:32 +02:00
Jason A. Donenfeld cadbb69990 Bump version 2015-03-13 16:22:11 +01:00
Jason A. Donenfeld 7511f4b4df filters: Add sample gentoo script 2015-03-13 14:51:22 +01:00
Jason A. Donenfeld f3ab1f178f cgit: remember to set up env vars before empty clone path 2015-03-09 17:42:12 +01:00
Jason A. Donenfeld 8eef4589d0 ui-shared: currenturl should take into account leading slash 2015-03-09 17:42:02 +01:00
Jason A. Donenfeld 198d84a9e3 Bump version 2015-03-05 15:58:28 +01:00
Jason A. Donenfeld ecd6b7230c simple-authentication.lua: tie secure cookies to field names 2015-03-05 15:51:22 +01:00
Jason A. Donenfeld bd24832cd7 cgit: show clone URLs for empty repo 2015-03-05 02:32:13 +01:00
Jason A. Donenfeld 2e4a41e840 Make root handling sane again. 2015-03-03 17:33:34 +01:00
Jason A. Donenfeld 6bcda2f73d ui-shared: Add current url helper function. 2015-03-03 17:18:42 +01:00
Jason A. Donenfeld db4b735464 ui-shared: keep filter repolist page in pagination 2015-03-03 17:13:52 +01:00
Jason A. Donenfeld c3473e8a5d ui-repolist: use ctx.qry.url instead of rooturl, in case we're filtering 2015-03-03 17:06:48 +01:00
Jason A. Donenfeld e14eee9ea5 ui-repolist: use correct owner query link 2015-03-03 16:53:11 +01:00
Jason A. Donenfeld 5e3e665d60 Bump verison 2015-02-15 22:12:12 +01:00
Jason A. Donenfeld 6e498de213 ui-clone.c: Fix off-by-one error in pack path
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2015-02-09 12:29:57 +01:00
Jason A. Donenfeld b122730014 Revert "git: use xz compressed archive for download"
This reverts commit a87c9d8a97.

We want to make OpenBSD people happy.
2014-12-24 12:50:11 +01:00
Jason A. Donenfeld 2159414a39 footer: link back to cgit home page
The footer has always been overrideable using the footer= in cgitrc, so
this won't anger anybody who cares about their footer.
2014-12-23 19:40:14 -07:00
Jason A. Donenfeld efa2879ad7 cgitrc.5: we mean a cgi response, not request 2014-08-01 17:37:27 +02:00
Jason A. Donenfeld eeaffc3343 Bump version. 2014-06-30 15:15:35 +02:00
Jason A. Donenfeld 88b9311323 Makefile: use more reliable git tarball mirror 2014-03-20 11:20:01 -06:00
Jason A. Donenfeld f2fa9c56e2 Bump version. 2014-02-28 00:12:08 +01:00
Jason A. Donenfeld 4930611026 ui-refs: simplify cmp_age logic
The check in parse_user that eventually makes it into committer_date and
tagger_date is:

else if (mode == 3 && isdigit(*p)) {
    *date = atol(p);
    mode++;
}

Since isdigit('-') is always false, date will never be negative. Thus
the sign of this function:

static int cmp_age(int age1, int age2)
{
    if (age1 != 0 && age2 != 0)
        return age2 - age1;

    if (age1 == 0 && age2 == 0)
        return 0;

    if (age1 == 0)
        return +1;

    return -1;
}

Will always be the same as the sign of this function:

static inline int cmp_age(int age1, int age2)
{
    return age2 - age1;
}

Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
Idea-by: Lukas Fleischer <cgit@cryptocrack.de>
2014-02-26 16:57:15 +01:00
Jason A. Donenfeld 2e8e9af1d4 Clean up cache documentation.
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2014-02-21 01:36:20 +01:00
Jason A. Donenfeld 8acfa51a8b Makefile: suppress pkg-config error
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2014-02-20 20:06:29 +01:00
Jason A. Donenfeld 7e1c0ed2aa diffstat: do not rely on uninitialized data
Right now if you visit:
<http://git.zx2c4.com/systemd/diff/src/udev/udev-builtin-input_id.c?id=bcfce235>
you'll see that if you reload the page a few times, a bunch of times the
diffstat comes out with no lines being shown or changed. I'm not
currently sure what the cause of this is, but I suspect it might have to
do with this uninitialized data.

Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2014-02-20 19:48:24 +01:00
Jason A. Donenfeld aa6d5b105d simple-authentication: style
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2014-01-23 00:58:07 +01:00
Jason A. Donenfeld f759cc0f08 tests: only do lua tests if lua is compiled-in
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2014-01-20 13:11:10 +01:00
Jason A. Donenfeld 6a1563343c cgit: add --version argument for printing info
We need this to do runtime tests for make test.

Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2014-01-20 13:05:08 +01:00
Jason A. Donenfeld ea7210bef3 README: document pkg-config for luajit
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2014-01-19 15:07:56 +01:00
Jason A. Donenfeld 6952f164c1 makefile: bump version
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2014-01-17 16:09:16 +01:00
Jason A. Donenfeld bdbe03af61 mailmap: source before lighttpd
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2014-01-17 16:04:27 +01:00
Jason A. Donenfeld bb3cc0d966 ui-shared: do not allow negative minutes
Do to timestamp differences, sometimes cgit would should "-0 min", which
doesn't make any sense.

Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2014-01-17 15:41:41 +01:00
Jason A. Donenfeld 9dde6d38e9 auth: document tweakables in lua script
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2014-01-17 15:34:44 +01:00
Jason A. Donenfeld a2b6b37175 repolist: make owner clickable to search
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2014-01-17 14:01:27 +01:00
Jason A. Donenfeld 3cbbb8ea39 ui-shared: move about tab all the way to the left
There were no objections (at the time of committing this):
   http://lists.zx2c4.com/pipermail/cgit/2013-May/001393.html
   http://lists.zx2c4.com/pipermail/cgit/2014-January/001904.html

Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2014-01-17 13:53:37 +01:00
Jason A. Donenfeld 9786f4613d filter: don't forget to reap the auth filter
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2014-01-17 13:53:02 +01:00
Jason A. Donenfeld 9999b0a3e9 cgit.c: free tmp variable
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2014-01-17 00:48:17 +01:00
Jason A. Donenfeld a431326e8f auth: have cgit calculate login address
This way we're sure to use virtual root, or any other strangeness
encountered.

Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2014-01-16 23:21:54 +01:00
Jason A. Donenfeld df00ab1096 auth: lua string comparisons are time invariant
By default, strings are compared by hash, so we can remove this comment.

Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2014-01-16 19:47:35 +01:00
Jason A. Donenfeld b826537cb4 authentication: use hidden form instead of referer
This also gives us some CSRF protection. Note that we make use of the
hmac to protect the redirect value.

Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2014-01-16 12:13:39 +01:00
Jason A. Donenfeld d6e9200cc3 auth: add basic authentication filter framework
This leverages the new lua support. See
filters/simple-authentication.lua for explaination of how this works.
There is also additional documentation in cgitrc.5.txt.

Though this is a cookie-based approach, cgit's caching mechanism is
preserved for authenticated pages.

Very plugable and extendable depending on user needs.

The sample script uses an HMAC-SHA1 based cookie to store the
currently logged in user, with an expiration date.

Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2014-01-16 02:28:12 +01:00
Jason A. Donenfeld 5bda21faf4 email-gravatar: do not scale icons up
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2014-01-14 18:57:51 +01:00
Jason A. Donenfeld 6ca734da8f filter: allow returning exit code from filter
Filters can now indicate a status back to cgit by means of the exit code
for exec, or the return value from close for Lua.

Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2014-01-14 18:09:52 +01:00
Jason A. Donenfeld a9a7f68244 makefile: only display lua message once
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2014-01-14 13:47:28 +01:00
Jason A. Donenfeld 027e88a1a1 README: document lua makefile flags
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2014-01-14 03:48:23 +01:00