Re: [PATCH] credential-libsecret: unlock locked secrets

2017-11-06 Thread Mantas Mikulėnas
On Fri, Nov 3, 2017 at 10:44 PM, Dennis Kaarsemaker
 wrote:
> Credentials exposed by the secret service DBUS interface may be locked.
> Setting the SECRET_SEARCH_UNLOCK flag will make the secret service
> unlock these secrets, possibly prompting the user for credentials to do
> so. Without this flag, the secret is simply not loaded.
>
> Signed-off-by: Dennis Kaarsemaker 
> ---
>  contrib/credential/libsecret/git-credential-libsecret.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/contrib/credential/libsecret/git-credential-libsecret.c 
> b/contrib/credential/libsecret/git-credential-libsecret.c
> index 4c56979d8a..b4750c9ee8 100644
> --- a/contrib/credential/libsecret/git-credential-libsecret.c
> +++ b/contrib/credential/libsecret/git-credential-libsecret.c
> @@ -104,7 +104,7 @@ static int keyring_get(struct credential *c)
> items = secret_service_search_sync(service,
>SECRET_SCHEMA_COMPAT_NETWORK,
>attributes,
> -  SECRET_SEARCH_LOAD_SECRETS,
> +  SECRET_SEARCH_LOAD_SECRETS | 
> SECRET_SEARCH_UNLOCK,
>NULL,
>&error);
> g_hash_table_unref(attributes);
> --
> 2.15.0-rc2-464-gb5de734
>

Looks okay. (It seems that's what all other programs do, too...)

-- 
Mantas Mikulėnas 


Re: How do you script linux GIT client to pass kerberos credential to apache enabled GIT server?

2017-04-04 Thread Mantas Mikulėnas
On 2017-04-03 19:04, ken edward wrote:
> Hello,
> 
> I have my git repositories behind an apache server configured with
> kerberos. Works fine if the user is logged in on their workstation.
> Apache gets the kerberos credential, and validates, and  then sends
> the GIT repo being requested.
> 
> BUT, I want to write a script on linux that will also pass the
> kerberos credential to the apache GIT server without having any
> manually intervention. Seems I would create a kerberos keytab for the
> principal and then use that to authenticate kinit supports
> authenticating from a keytab using the -k -t  options,

kinit works, but I think kstart [1] is commonly used for this as well;
takes care of automatic ticket renewal.

ktutil should be able to create a keytab based on your password, but
I've had mixed luck with that. Though still probably easier than
creating a separate instance just for batch tasks...

[1]: https://www.eyrie.org/~eagle/software/kstart/

-- 
Mantas Mikulėnas 


Re: [PATCH] http(s): automatically try NTLM authentication first

2017-02-23 Thread Mantas Mikulėnas
On 2017-02-23 03:03, David Turner wrote:
> Actually, though, I am not sure this is as bad as it seems, because gssapi
> might protect us.  When I locally tried a fake server, git (libcurl) refused 
> to 
> send my Kerberos credentials because "Server not found in Kerberos 
> database".  I don't have a machine set up with NTLM authentication 
> (because, apparently, that would be insane), so I don't know how to 
> confirm that gssapi would operate off of a whitelist for NTLM as well. 

NTLM and Kerberos work very differently in that regard.

Kerberos is ticket-based so the client *first* has to obtain a ticket
from the domain's KDC, so a malicious server at minimum needs to know
what principal name to provide (i.e. which real server to try
impersonating). And even if it does that, the ticket doesn't contain
crackable hashes, just data encrypted with a key known only to the KDC
and the real server. So the whitelist is only for privacy and/or
performance reasons, I guess?

NTLM is challenge/response without any third party, and yes, it requires
the application to implement its own whitelisting to avoid the security
problems.

-- 
Mantas Mikulėnas 


Re: [PATCH] contrib: add credential helper for libsecret

2016-10-11 Thread Mantas Mikulėnas
On 2016-10-11 22:48, Mantas Mikulėnas wrote:
> On 2016-10-11 22:36, Junio C Hamano wrote:
>> Thanks for a review.  I'll wait until one of (1) a squashable patch
>> to address the "we do not want unconditional overwrite" issue, (2) a
>> reroll from Mantas to do the same, or (3) a counter-argument from
>> somebody to explain why unconditional overwrite is a good idea here
>> (but not in the original) appears.
> 
> I overlooked that. I can write a patch, but it shouldn't make any
> difference in practice – if c->username *was* set, then it would also
> get added to the search attribute list, therefore the search couldn't
> possibly return any results with a different username anyway.

On a second thought, it doesn't actually make sense _not_ to override
the username. Let's say the search query *somehow* returned a different
account than requested. With the original (gnome-keyring helper's)
behavior, the final output would have the old account's username, but
the new account's password – which has very little chance of working.

-- 
Mantas Mikulėnas 


Re: [PATCH] contrib: add credential helper for libsecret

2016-10-11 Thread Mantas Mikulėnas
On 2016-10-11 22:36, Junio C Hamano wrote:
> Thanks for a review.  I'll wait until one of (1) a squashable patch
> to address the "we do not want unconditional overwrite" issue, (2) a
> reroll from Mantas to do the same, or (3) a counter-argument from
> somebody to explain why unconditional overwrite is a good idea here
> (but not in the original) appears.

I overlooked that. I can write a patch, but it shouldn't make any
difference in practice – if c->username *was* set, then it would also
get added to the search attribute list, therefore the search couldn't
possibly return any results with a different username anyway.

-- 
Mantas Mikulėnas 


[PATCH] contrib: add credential helper for libsecret

2016-10-09 Thread Mantas Mikulėnas
This is based on the existing gnome-keyring helper, but instead of
libgnome-keyring (which was specific to GNOME and is deprecated), it
uses libsecret which can support other implementations of XDG Secret
Service API.

Passes t0303-credential-external.sh.

Signed-off-by: Mantas Mikulėnas 
---
 contrib/credential/libsecret/Makefile  |  25 ++
 .../libsecret/git-credential-libsecret.c   | 370 +
 2 files changed, 395 insertions(+)
 create mode 100644 contrib/credential/libsecret/Makefile
 create mode 100644 contrib/credential/libsecret/git-credential-libsecret.c

diff --git a/contrib/credential/libsecret/Makefile 
b/contrib/credential/libsecret/Makefile
new file mode 100644
index ..3e67552cc5b5
--- /dev/null
+++ b/contrib/credential/libsecret/Makefile
@@ -0,0 +1,25 @@
+MAIN:=git-credential-libsecret
+all:: $(MAIN)
+
+CC = gcc
+RM = rm -f
+CFLAGS = -g -O2 -Wall
+PKG_CONFIG = pkg-config
+
+-include ../../../config.mak.autogen
+-include ../../../config.mak
+
+INCS:=$(shell $(PKG_CONFIG) --cflags libsecret-1 glib-2.0)
+LIBS:=$(shell $(PKG_CONFIG) --libs libsecret-1 glib-2.0)
+
+SRCS:=$(MAIN).c
+OBJS:=$(SRCS:.c=.o)
+
+%.o: %.c
+   $(CC) $(CFLAGS) $(CPPFLAGS) $(INCS) -o $@ -c $<
+
+$(MAIN): $(OBJS)
+   $(CC) -o $@ $(LDFLAGS) $^ $(LIBS)
+
+clean:
+   @$(RM) $(MAIN) $(OBJS)
diff --git a/contrib/credential/libsecret/git-credential-libsecret.c 
b/contrib/credential/libsecret/git-credential-libsecret.c
new file mode 100644
index ..4c56979d8a08
--- /dev/null
+++ b/contrib/credential/libsecret/git-credential-libsecret.c
@@ -0,0 +1,370 @@
+/*
+ * Copyright (C) 2011 John Szakmeister 
+ *   2012 Philipp A. Hartmann 
+ *   2016 Mantas Mikulėnas 
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2 of the License, or
+ *  (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+
+/*
+ * Credits:
+ * - GNOME Keyring API handling originally written by John Szakmeister
+ * - ported to credential helper API by Philipp A. Hartmann
+ */
+
+#include 
+#include 
+#include 
+#include 
+#include 
+
+/*
+ * This credential struct and API is simplified from git's credential.{h,c}
+ */
+struct credential {
+   char *protocol;
+   char *host;
+   unsigned short port;
+   char *path;
+   char *username;
+   char *password;
+};
+
+#define CREDENTIAL_INIT { NULL, NULL, 0, NULL, NULL, NULL }
+
+typedef int (*credential_op_cb)(struct credential *);
+
+struct credential_operation {
+   char *name;
+   credential_op_cb op;
+};
+
+#define CREDENTIAL_OP_END { NULL, NULL }
+
+/* - Secret Service functions - */
+
+static char *make_label(struct credential *c)
+{
+   if (c->port)
+   return g_strdup_printf("Git: %s://%s:%hu/%s",
+   c->protocol, c->host, c->port, c->path 
? c->path : "");
+   else
+   return g_strdup_printf("Git: %s://%s/%s",
+   c->protocol, c->host, c->path ? c->path 
: "");
+}
+
+static GHashTable *make_attr_list(struct credential *c)
+{
+   GHashTable *al = g_hash_table_new_full(g_str_hash, g_str_equal, NULL, 
g_free);
+
+   if (c->username)
+   g_hash_table_insert(al, "user", g_strdup(c->username));
+   if (c->protocol)
+   g_hash_table_insert(al, "protocol", g_strdup(c->protocol));
+   if (c->host)
+   g_hash_table_insert(al, "server", g_strdup(c->host));
+   if (c->port)
+   g_hash_table_insert(al, "port", g_strdup_printf("%hu", 
c->port));
+   if (c->path)
+   g_hash_table_insert(al, "object", g_strdup(c->path));
+
+   return al;
+}
+
+static int keyring_get(struct credential *c)
+{
+   SecretService *service = NULL;
+   GHashTable *attributes = NULL;
+   GError *error = NULL;
+   GList *items = NULL;
+
+   if (!c->protocol || !(c->host || c->path))
+   return EXIT_FAILURE;
+
+   service = secret_service_get_sync(0, NULL, &error);
+   if (error != NULL) {
+   g_critical("could not connect to Secret Service: %s", 
er

Re: Segfault in `git describe`

2013-07-15 Thread Mantas Mikulėnas
On Mon, Jul 15, 2013 at 4:03 PM, Michael Haggerty  wrote:
> On 07/13/2013 03:27 PM, Mantas Mikulėnas wrote:
>> I have a clone of linux.git with various stuff added to it (remotes for
>> 'stable' and 'next', a bunch of local tags, and historical repositories
>> imported using `git replace`).
>>
>> Yesterday, I noticed that `git describe`, built from git.git master
>> (v1.8.3.2-804-g0da7a53, gcc 4.8) would simply crash when run in that
>> repository, with the following backtrace:
>>
>>> Program terminated with signal 11, Segmentation fault.
>>> #0  0x004c39dc in hashcpy (sha_src=0x1c >> bounds>,
>>> sha_dst=0x7fffc0b4d610 "\242\271\301\366 
>>> \201&\346\337l\002B\214P\037\210ShX\022")
>>> at cache.h:694
>>> 694  memcpy(sha_dst, sha_src, 20);
>>> (gdb) bt
>>> #0  0x004c39dc in hashcpy (sha_src=0x1c >> bounds>,
>>> sha_dst=0x7fffc0b4d610 "\242\271\301\366 
>>> \201&\346\337l\002B\214P\037\210ShX\022")
>>> at cache.h:694
>>> #1  peel_ref (refname=refname@entry=0x1fe2d10 "refs/tags/next-20130607",
>>> sha1=sha1@entry=0x7fffc0b4d610 "\242\271\301\366 
>>> \201&\346\337l\002B\214P\037\210ShX\022") at refs.c:1586
>>> #2  0x00424194 in get_name (path=0x1fe2d10 
>>> "refs/tags/next-20130607",
>>> sha1=0x1fe2ce8 
>>> "\222V\356\276S5\tk\231Hi\264\r=\336\315\302\225\347\257\300N\376\327\064@\237ZDq[T\246\312\033T\260\314\362\025refs/tags/next-20130607",
>>>  flag=,
>>> cb_data=) at builtin/describe.c:156
>>> #3  0x004c1c21 in do_one_ref (entry=0x1fe2ce0, 
>>> cb_data=0x7fffc0b4d7c0)
>>> at refs.c:646
>>> #4  0x004c318d in do_for_each_entry_in_dir (dir=0x1fe1728,
>>> offset=, fn=0x4c1bc0 , 
>>> cb_data=0x7fffc0b4d7c0)
>>> at refs.c:672
>>> #5  0x004c33d1 in do_for_each_entry_in_dirs (dir1=0x1fdf4d8, 
>>> dir2=0x1fd6318,
>>> cb_data=0x7fffc0b4d7c0, fn=0x4c1bc0 ) at refs.c:716
>>> #6  0x004c33d1 in do_for_each_entry_in_dirs (dir1=0x1fdf1f8, 
>>> dir2=0x1fd62d8,
>>> cb_data=0x7fffc0b4d7c0, fn=0x4c1bc0 ) at refs.c:716
>>> #7  0x004c3540 in do_for_each_entry (refs=refs@entry=0x7a2800 
>>> ,
>>> base=base@entry=0x509cc6 "", cb_data=cb_data@entry=0x7fffc0b4d7c0,
>>> fn=0x4c1bc0 ) at refs.c:1689
>>> #8  0x004c3ff8 in do_for_each_ref (cb_data=cb_data@entry=0x0, 
>>> flags=1, trim=0,
>>> fn=fn@entry=0x424120 , base=0x509cc6 "", refs=0x7a2800 
>>> )
>>> at refs.c:1724
>>> #9  for_each_rawref (fn=fn@entry=0x424120 , 
>>> cb_data=cb_data@entry=0x0)
>>> at refs.c:1873
>>> #10 0x00424f5b in cmd_describe (argc=0, argv=0x7fffc0b4ddc0, 
>>> prefix=0x0)
>>> at builtin/describe.c:466
>>> #11 0x0040596d in run_builtin (argv=0x7fffc0b4ddc0, argc=1,
>>> p=0x760b40 ) at git.c:291
>>> #12 handle_internal_command (argc=1, argv=0x7fffc0b4ddc0) at git.c:453
>>> #13 0x00404d6e in run_argv (argv=0x7fffc0b4dc78, 
>>> argcp=0x7fffc0b4dc5c)
>>> at git.c:499
>>> #14 main (argc=1, av=) at git.c:575
>>> (gdb)
>>
>> According to `git bisect`, the first bad commit is:
>>
>> commit 9a489f3c17d6c974b18c47cf406404ca2a721c87
>> Author: Michael Haggerty 
>> Date:   Mon Apr 22 21:52:22 2013 +0200
>>
>> refs: extract a function peel_entry()
>>
>> The crash happens only in repositories that have at least one replaced
>> object in the branch's history. Running `git --no-replace-objects
>> describe` avoids the crash.
>>
>> The crash happens only if there are any tags under .git/refs/tags/ that
>> do not exist in .git/packed-refs, or if I remove all "peeled" lines from
>> .git/packed-refs (including the '#' line; /^[#^]/d).
>>
>> A quick way to reproduce this with git.git master is:
>>
>> git tag -f test-tag HEAD~10
>> git replace -f HEAD $(git --no-replace-objects cat-file commit HEAD \
>>   | sed 's/@/@test/' | git hash-object --stdin -t commit -w)
>> ./git describe
>
> Thanks for the bug report.
>
> I think the cause of this bug is that peel_entry() is causing a nested
> call to do_for_each_entry() to look up the replace reference, which
> resets current_ref to NULL between the test and the dereference of
> current_r

Segfault in `git describe`

2013-07-13 Thread Mantas Mikulėnas
I have a clone of linux.git with various stuff added to it (remotes for
'stable' and 'next', a bunch of local tags, and historical repositories
imported using `git replace`).

Yesterday, I noticed that `git describe`, built from git.git master
(v1.8.3.2-804-g0da7a53, gcc 4.8) would simply crash when run in that
repository, with the following backtrace:

> Program terminated with signal 11, Segmentation fault.
> #0  0x004c39dc in hashcpy (sha_src=0x1c , 
> sha_dst=0x7fffc0b4d610 "\242\271\301\366 
> \201&\346\337l\002B\214P\037\210ShX\022")
> at cache.h:694
> 694   memcpy(sha_dst, sha_src, 20);
> (gdb) bt
> #0  0x004c39dc in hashcpy (sha_src=0x1c , 
> sha_dst=0x7fffc0b4d610 "\242\271\301\366 
> \201&\346\337l\002B\214P\037\210ShX\022")
> at cache.h:694
> #1  peel_ref (refname=refname@entry=0x1fe2d10 "refs/tags/next-20130607", 
> sha1=sha1@entry=0x7fffc0b4d610 "\242\271\301\366 
> \201&\346\337l\002B\214P\037\210ShX\022") at refs.c:1586
> #2  0x00424194 in get_name (path=0x1fe2d10 "refs/tags/next-20130607", 
> sha1=0x1fe2ce8 
> "\222V\356\276S5\tk\231Hi\264\r=\336\315\302\225\347\257\300N\376\327\064@\237ZDq[T\246\312\033T\260\314\362\025refs/tags/next-20130607",
>  flag=, 
> cb_data=) at builtin/describe.c:156
> #3  0x004c1c21 in do_one_ref (entry=0x1fe2ce0, cb_data=0x7fffc0b4d7c0)
> at refs.c:646
> #4  0x004c318d in do_for_each_entry_in_dir (dir=0x1fe1728, 
> offset=, fn=0x4c1bc0 , cb_data=0x7fffc0b4d7c0)
> at refs.c:672
> #5  0x004c33d1 in do_for_each_entry_in_dirs (dir1=0x1fdf4d8, 
> dir2=0x1fd6318, 
> cb_data=0x7fffc0b4d7c0, fn=0x4c1bc0 ) at refs.c:716
> #6  0x004c33d1 in do_for_each_entry_in_dirs (dir1=0x1fdf1f8, 
> dir2=0x1fd62d8, 
> cb_data=0x7fffc0b4d7c0, fn=0x4c1bc0 ) at refs.c:716
> #7  0x004c3540 in do_for_each_entry (refs=refs@entry=0x7a2800 
> , 
> base=base@entry=0x509cc6 "", cb_data=cb_data@entry=0x7fffc0b4d7c0, 
> fn=0x4c1bc0 ) at refs.c:1689
> #8  0x004c3ff8 in do_for_each_ref (cb_data=cb_data@entry=0x0, 
> flags=1, trim=0, 
> fn=fn@entry=0x424120 , base=0x509cc6 "", refs=0x7a2800 
> )
> at refs.c:1724
> #9  for_each_rawref (fn=fn@entry=0x424120 , 
> cb_data=cb_data@entry=0x0)
> at refs.c:1873
> #10 0x00424f5b in cmd_describe (argc=0, argv=0x7fffc0b4ddc0, 
> prefix=0x0)
> at builtin/describe.c:466
> #11 0x0040596d in run_builtin (argv=0x7fffc0b4ddc0, argc=1, 
> p=0x760b40 ) at git.c:291
> #12 handle_internal_command (argc=1, argv=0x7fffc0b4ddc0) at git.c:453
> #13 0x00404d6e in run_argv (argv=0x7fffc0b4dc78, argcp=0x7fffc0b4dc5c)
> at git.c:499
> #14 main (argc=1, av=) at git.c:575
> (gdb) 

According to `git bisect`, the first bad commit is:

commit 9a489f3c17d6c974b18c47cf406404ca2a721c87
Author: Michael Haggerty 
Date:   Mon Apr 22 21:52:22 2013 +0200

refs: extract a function peel_entry()

The crash happens only in repositories that have at least one replaced
object in the branch's history. Running `git --no-replace-objects
describe` avoids the crash.

The crash happens only if there are any tags under .git/refs/tags/ that
do not exist in .git/packed-refs, or if I remove all "peeled" lines from
.git/packed-refs (including the '#' line; /^[#^]/d).

A quick way to reproduce this with git.git master is:

git tag -f test-tag HEAD~10
git replace -f HEAD $(git --no-replace-objects cat-file commit HEAD \
  | sed 's/@/@test/' | git hash-object --stdin -t commit -w)
./git describe

-- 
Mantas Mikulėnas 

--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 4/4] cat-file: print tags raw for "cat-file -p"

2013-02-25 Thread Mantas Mikulėnas
On Mon, Feb 25, 2013 at 8:50 PM, Jeff King  wrote:
> Note that "git verify-tag" and "git tag -v" depend on
> "cat-file -p" to show the tag. This means they will start
> showing the raw timestamp. We may want to adjust them to
> use the pretty-printing code from "git show".
>
> Signed-off-by: Jeff King 
> ---
> I don't use "git tag -v" much, so I'm not sure what is sane there. But
> this seems like it would be a regression for people who want to check
> the human-readable date given by GPG against the date in the tag object.

Personally, I've found it quite confusing that commits (incl. merged
tags) can be verified with `git show --show-signature`, but for tags I
must use `git tag -v`... took me a while to find the latter.



(`git show --verify` might be even better, but that's just me.)

-- 
Mantas Mikulėnas 
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: Crashes while trying to show tag objects with bad timestamps

2013-02-22 Thread Mantas Mikulėnas
On Sat, Feb 23, 2013 at 1:04 AM, Jeff King  wrote:
> On Fri, Feb 22, 2013 at 02:53:48PM -0800, Junio C Hamano wrote:
>> and no for disappointing.  IIRC, in the very early implementations
>> allowed tag object without dates.
>>
>> I _think_ we can start tightening fsck, though.
>
> Then I think it would make sense to allow the very specific no-date tag,
> but not allow arbitrary crud. I wonder if there's an example in the
> kernel or in git.git.

I couldn't find any such examples. However, I did find several tags
with no "tagger" line at all: git.git has "v0.99" and linux.git has
many such tags starting with "v2.6.11" ending with "v2.6.13-rc3".

It seems that `git cat-file -p` doesn't like such tags too – if there
is no "tagger", it doesn't display *any* header lines. More bugs?

--
Mantas Mikulėnas
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Crashes while trying to show tag objects with bad timestamps

2013-02-22 Thread Mantas Mikulėnas
When messing around with various repositories, I noticed that git 1.8
(currently using 1.8.2.rc0.22.gb3600c3) has problems parsing tag objects
that have invalid timestamps.

Times in tag objects appear to be kept as Unix timestamps, but I didn't
realize this at first, and ran something roughly equivalent to:
  git cat-file -p $tagname | git hash-object -w -t tag --stdin
creating a tag object the "tagger" line containing formatted time
instead of a Unix timestamp.

Git doesn't handle the resulting tag objects nicely at all. For example,
running `git cat-file -p` on the new object outputs a really odd
timestamp "Thu Jun Thu Jan 1 00:16:09 1970 +0016" (I'm guessing it
parses the year as Unix time), and `git show` outright crashes
(backtrace included below.)

I would have expected both commands to print a "tag object corrupt"
message, or maybe even a more specific "bad timestamp in tagger line"...

To reproduce:

printf '%s\n' \
  'object 4b825dc642cb6eb9a060e54bf8d69288fbee4904' 'type tree' \
  'tag test' 'tagger User  Thu Jun 9 16:44:04 2005 +' \
  '' 'Test tag' | git hash-object -w -t tag --stdin | xargs git show


> #0  0x7f42560bb5f3 in strtoull_l_internal () from /usr/lib/libc.so.6
> No symbol table info available.
> #1  0x004b4c81 in pp_user_info (pp=pp@entry=0x7fff3c30f1a0, 
> what=what@entry=0x50c13b "Tagger", sb=sb@entry=0x7fff3c30f140, 
> line=0xc267c7 "Jilles Tjoelker  Thu Jun 9 16:44:04 2005 
> +\n\nTag 1.0rc1.\n\n", encoding=0x507e20 "UTF-8") at pretty.c:431
> name = {alloc = 24, len = 15, buf = 0xc24690 "Jilles Tjoelker"}
> mail = {alloc = 24, len = 15, buf = 0xc24750 "jil...@stack.nl"}
> ident = {
>   name_begin = 0xc267c7 "Jilles Tjoelker  Thu Jun 9 
> 16:44:04 2005 +\n\nTag 1.0rc1.\n\n", 
>   name_end = 0xc267d6 "  Thu Jun 9 16:44:04 2005 
> +\n\nTag 1.0rc1.\n\n", 
>   mail_begin = 0xc267d8 "jil...@stack.nl> Thu Jun 9 16:44:04 2005 
> +\n\nTag 1.0rc1.\n\n", mail_end = 0xc267e7 "> Thu Jun 9 16:44:04 2005 
> +\n\nTag 1.0rc1.\n\n", 
>   date_begin = 0x0, date_end = 0x0, tz_begin = 0x0, tz_end = 0x0}
> linelen = 
> line_end = 
> date = 
> mailbuf = 0xc267d8 "jil...@stack.nl> Thu Jun 9 16:44:04 2005 
> +\n\nTag 1.0rc1.\n\n"
> namebuf = 0xc267c7 "Jilles Tjoelker  Thu Jun 9 
> 16:44:04 2005 +\n\nTag 1.0rc1.\n\n"
> namelen = 33
> maillen = 15
> max_length = 78
> time = 
> tz = 
> #2  0x00439af5 in show_tagger (buf=, len= out>, 
> rev=) at builtin/log.c:400
> pp = {fmt = CMIT_FMT_MEDIUM, abbrev = 0, subject = 0x0, after_subject 
> = 0x0, 
>   preserve_subject = 0, date_mode = DATE_NORMAL, date_mode_explicit = 
> 0, 
>   need_8bit_cte = 0, notes_message = 0x0, reflog_info = 0x0, 
>   output_encoding = 0x0, mailmap = 0x0, color = 0}
> out = {alloc = 0, len = 0, buf = 0x7a8188  ""}
> #3  show_tag_object (rev=0x7fff3c30f1f0, 
> sha1=0xc2be44 
> "\230\211\275\331\365Q\306z\017\071d\331\035\062\247a\347~M8P",  sequence \303>) at builtin/log.c:427
> new_offset = 151
> type = OBJ_TAG
> buf = 0xc26770 "object ffa28d13e40e03bd367d0219c7eb516be0f180d2\ntype 
> commit\ntag hyperion-1.0rc1\ntagger Jilles Tjoelker  Thu Jun 
> 9 16:44:04 2005 +\n\nTag 1.0rc1.\n\n"
> size = 165
> offset = 


-- 
Mantas Mikulėnas 

--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html