chiark / gitweb /
secnet.git
7 years agobugfix: generate 32-bit site index in packets in a sane way
Richard Kettlewell [Sun, 19 Jun 2011 08:08:18 +0000 (09:08 +0100)]
bugfix: generate 32-bit site index in packets in a sane way

Use a sequential nonzero integer as site index instead of the address
of the site structure(!).  This value is not secret but does need to
be unique, and truncating the address to 32 bits doesn't guarantee
that.

Signed-off-by: Richard Kettlewell <richard@greenend.org.uk>
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
7 years agocleanup: Remove pointless double assignment
Richard Kettlewell [Sun, 19 Jun 2011 08:08:17 +0000 (09:08 +0100)]
cleanup: Remove pointless double assignment

-Wsequence-point doesn't like it.

Signed-off-by: Richard Kettlewell <richard@greenend.org.uk>
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
7 years agocleanup: correct type of key exchange strings from uint8_t* to char*
Richard Kettlewell [Sun, 19 Jun 2011 08:08:17 +0000 (09:08 +0100)]
cleanup: correct type of key exchange strings from uint8_t* to char*

Change type of kx signature and pubkey fields to reflect that they are
strings, squashing a GCC warning.

Signed-off-by: Richard Kettlewell <richard@greenend.org.uk>
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
7 years agocleanup: buffer size for snprintf should come from sizeof
Ian Jackson [Sun, 19 Jun 2011 12:52:13 +0000 (13:52 +0100)]
cleanup: buffer size for snprintf should come from sizeof

Previously, hardcoded copies of the buffer size literals were used.

Signed-off-by: Richard Kettlewell <richard@greenend.org.uk>
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
7 years agoportability: use socklen_t for argument to recvfrom
Ian Jackson [Sun, 19 Jun 2011 12:50:51 +0000 (13:50 +0100)]
portability: use socklen_t for argument to recvfrom

Signed-off-by: Richard Kettlewell <richard@greenend.org.uk>
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
7 years agocleanup: fix up the types of input to hashes to const void* from const uint8_t*
Ian Jackson [Sun, 19 Jun 2011 12:48:34 +0000 (13:48 +0100)]
cleanup: fix up the types of input to hashes to const void* from const uint8_t*

It is permissible to pass any object to these functions and expect
them to hash it.

Signed-off-by: Richard Kettlewell <richard@greenend.org.uk>
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
7 years agopackaging: Add LSB headers to init script.
Richard Kettlewell [Sun, 19 Jun 2011 08:08:16 +0000 (09:08 +0100)]
packaging: Add LSB headers to init script.

Signed-off-by: Richard Kettlewell <richard@greenend.org.uk>
7 years agobuild system: Builds OK under dpkg-buildpackage.
Richard Kettlewell [Sun, 19 Jun 2011 08:07:08 +0000 (09:07 +0100)]
build system: Builds OK under dpkg-buildpackage.

  - added a Build-Depends line
  - made 'debian/rules clean' work even if there has been no build.

Signed-off-by: Richard Kettlewell <richard@greenend.org.uk>
7 years agobuild system: provide configure option --enable-hacky-parallel
Ian Jackson [Sun, 12 Jun 2011 19:20:20 +0000 (20:20 +0100)]
build system: provide configure option --enable-hacky-parallel

This allows -DHACKY_PARALLEL to be turned on with an option to configure.
The corresponding comments in the Makefile.in, suggesting to edit it by
hand there, are therefore removed.

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
7 years agosite setup: actually use calculated default for st->key_renegotiate_time
Ian Jackson [Sun, 12 Jun 2011 18:13:38 +0000 (19:13 +0100)]
site setup: actually use calculated default for st->key_renegotiate_time

We go to some trouble to calculate an appropriate default value for
st->key_renegotiate_time.  However, when we actually do the config
file lookup we overwrote the result and used st->key_lifetime as the
default instead, which is wrong.

The upshot is that prior to this patch, DEFAULT_KEY_RENEGOTIATE_GAP
and the associated logic was unused, and keys were only renegotiated
at the point where they expired, which would produce a small gap in
connectivity.

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
7 years agosite setup: move st->key_renegotiate_time default calculation nearer use
Ian Jackson [Sun, 12 Jun 2011 18:11:45 +0000 (19:11 +0100)]
site setup: move st->key_renegotiate_time default calculation nearer use

st->key_renegotiate_time is first calculated as a default and then
that value ought to be used as a default for the config lookup.  So
move the default calculation near where the config lookup takes place
to keep the related code together.

Pure code motion; no functional change.  Also, the value computed is
not currently used due to a bug which will be fixed in the next patch.

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
7 years agosite setup: Correct logic for DEFAULT_KEY_RENEGOTIATE_GAP
Ian Jackson [Sat, 11 Jun 2011 14:10:08 +0000 (15:10 +0100)]
site setup: Correct logic for DEFAULT_KEY_RENEGOTIATE_GAP

Previously, key_renegotiate_time would be set to
   key_lifetime - DEFAULT_KEY_RENEGOTIATE_GAP
unless that was negative, in which case it would be set to
   key_lifetime / 2
This is illogical as it is not monotonic in key_lifetime.
Instead we now set it to the larger of those two values.

(This bug has had no effect as the buggy calculation was ignored due
to another bug, which will be fixed in a later patch.)

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
7 years agoevent loop: remove now parameter from site_settimeout
Ian Jackson [Sat, 11 Jun 2011 12:26:49 +0000 (13:26 +0100)]
event loop: remove now parameter from site_settimeout

This is now available as a global variable.

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
7 years agoevent loop: remove now and tv_now from before/afterpoll API
Ian Jackson [Sat, 11 Jun 2011 12:26:14 +0000 (13:26 +0100)]
event loop: remove now and tv_now from before/afterpoll API

beforepoll/afterpoll routines now use the global variables provided.

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
7 years agoevent loop: make tv_now and now into globals
Ian Jackson [Mon, 16 May 2011 10:09:13 +0000 (11:09 +0100)]
event loop: make tv_now and now into globals

This makes these values available to all functions in the rest of the
program, even if the particular event before/after function doesn't
pass them on.

We give variables new names so that we can introduce convenience
pointer aliases; that way, all the other references in the whole
program can remain unchanged when we remove now and tv_now from the
beforepoll/afterpoll parameter lists.

The pointer aliases are "static const *const" which is somewhat ugly.
We do this in the hope that the compiler will optimise out the actual
variable, which it couldn't do if the pointer alias had external
linkage.  The alternative would be a macro but we don't want to
local scopes (and not just in the current before/afterpoll api).

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
7 years agocleanup: Turn on -Werror
Ian Jackson [Sat, 11 Jun 2011 11:16:33 +0000 (12:16 +0100)]
cleanup: Turn on -Werror

Having cleaned up the code to be warning-free we can now turn on -Werror.

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
7 years agobugfix: -fno-strict-aliasing, because tun.c breaks the rules.
Richard Kettlewell [Sun, 19 Jun 2011 08:08:16 +0000 (09:08 +0100)]
bugfix: -fno-strict-aliasing, because tun.c breaks the rules.

(What it does is: fills in 'struct sockaddr' fields of 'struct
rtentry' by casting to 'struct sockaddr_in' pointers and accessing
through those.  A more intrusive change would be to construct the
sockaddr_in in another object and then memcpy it into place, which
would achieve the same effect without (AFAIK) breaching C's aliasing
rules.)

Signed-off-by: Richard Kettlewell <richard@greenend.org.uk>
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
7 years agocleanup: remove unused "line" member in struct transform
Ian Jackson [Sun, 19 Jun 2011 14:47:03 +0000 (15:47 +0100)]
cleanup: remove unused "line" member in struct transform

This member is never set or used.

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
7 years agoportability: warn if provided snprintf.c is used
Ian Jackson [Sun, 19 Jun 2011 14:46:01 +0000 (15:46 +0100)]
portability: warn if provided snprintf.c is used

We don't have any visibility of changes to fix bugs in the snprintf
which is supplied with secnet.  Therefore at the very least we should
print a warning if we turn out to use it, rather than perhaps silently
using an ancient and perhaps-buggy implementation.

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
7 years agointeger arithmetic types: do not use unsigned for site timeouts etc.
Ian Jackson [Sun, 19 Jun 2011 15:25:26 +0000 (16:25 +0100)]
integer arithmetic types: do not use unsigned for site timeouts etc.

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
7 years agointeger arithmetic types: do not use unsigned for lengths
Ian Jackson [Sun, 12 Jun 2011 21:34:09 +0000 (22:34 +0100)]
integer arithmetic types: do not use unsigned for lengths

In C it is not normally a good idea to use an unsigned integer type
for integer values, even if they are known not ever to be zero (for
example, because they are lengths).  This is because C unsigned
arithmetic has unhelpful behaviour when the values would become
negative.

In particular, comparing signed and unsigned integers, and doing
arithmetic (especially subtraction) when unsigned integers are
present, can be dangerous and lead to unexpected results.

So fix the resulting warnings (which are due to -Wsign-compare which
comes from -W) by making all lengths, counts (and iterators over them)
and return values from scanf be of signed types, usually int32_t
instead of uint32_t (but occasionally int).

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
7 years agointeger arithmetic types: make get_uint32, get_uint16 return the correct type
Ian Jackson [Sun, 12 Jun 2011 21:37:24 +0000 (22:37 +0100)]
integer arithmetic types: make get_uint32, get_uint16 return the correct type

Previously get_uint32 and get_uint16 would return whatever the usual
arithmetic conversions produced.  (The previous code was not in fact
even guaranteed to work properly on a machine with 16-bit ints.)

Now we cast the individual bytes before shifting.

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
7 years agointeger arithmetic types: correct perhaps-possible negative timeout situation
Ian Jackson [Sun, 12 Jun 2011 19:35:47 +0000 (20:35 +0100)]
integer arithmetic types: correct perhaps-possible negative timeout situation

site_settimeout assumes that its timeout parameter is not before now.
Following the logic of the code this would appear to be currently
true, although I'm not absolutely certain.

Nevertheless it would be better to avoid this assumption.  Instead,
use a signed variable for the time until the timeout, and explicitly
turn negative values into zero.

The use of an int64_t will not cause an arithmetic overflow provided
that no timeouts are more than 2^64 milliseconds (around 580x10^6 yr)
in the past or the future.

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
7 years agointeger and buffer overflows: introduce safe_malloc_ary
Ian Jackson [Sun, 12 Jun 2011 21:28:33 +0000 (22:28 +0100)]
integer and buffer overflows: introduce safe_malloc_ary

When allocating an array, it is necessary to check that the
multiplication (to compute the size in bytes) does not overflow.

Do this in a new function safe_malloc_ary, which we call in both the
places where safe_malloc was previously used with an unchecked
multiplication.

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
7 years agointeger and buffer overflows: introduce a number of asserts
Ian Jackson [Sun, 12 Jun 2011 21:23:15 +0000 (22:23 +0100)]
integer and buffer overflows: introduce a number of asserts

In various places we add and increment integers, hoping that they
don't overflow.  We also prepend and append things to our internal
buffer, which is of fixed size, without checking that they will fit.

This means that malicious configuration (for example, long site names)
might be able to take over the secnet program.

So, add a whole lot of checking.  Many of these places don't have a
sensible way to return an error; in those cases we assert.  Some of
the checks are off-by-one in the sense that they say "assert(x<...)"
when "<=" would be OK too.  This is done to avoid having to think too
hard about fenceposts, as it's a simple way to avoid introducing bugs.

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Signed-off-by: Richard Kettlewell <richard@greenend.org.uk>
7 years agopossible security fix: do not call slilog with intended message as format string
Ian Jackson [Sun, 12 Jun 2011 19:00:10 +0000 (20:00 +0100)]
possible security fix: do not call slilog with intended message as format string

vMessage would call slilog with part of the intended log message as
the format string.  This is a potential format string vulnerability,
detected by -Wformat-security.

I have not analysed the code in detail to determine in exactly which
circumstances a secnet installation will be vulnerable, but in general
a vulnerability (at least for DOS) will exist in any situation where
an attacker can cause a log message to contain things which look like
printf directives.

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
7 years agologging: provide vslilog as well as slilog
Ian Jackson [Sun, 12 Jun 2011 19:03:33 +0000 (20:03 +0100)]
logging: provide vslilog as well as slilog

In general it is a mistake to provide a varargs function which takes a
format string, but not the corresponding function taking a va_list.

We implement slilog in terms of vslilog in the obvious way.

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
7 years agocleanup: specify never-interactive option for flex scanner
Ian Jackson [Sat, 11 Jun 2011 11:11:15 +0000 (12:11 +0100)]
cleanup: specify never-interactive option for flex scanner

We never parse configuration interactively.  That's just as well,
because without "%option never-interactive" flex generates a redundant
declaration of isatty which upsets -Wredundant-decls.

This is a bug in flex IMO but the workaround is fine for secnet.

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
7 years agocleanup: use flex-generated declarations for scanner interface
Ian Jackson [Sat, 11 Jun 2011 11:07:48 +0000 (12:07 +0100)]
cleanup: use flex-generated declarations for scanner interface

We now pass the --header=... option to flex.  This causes it to
generate a header file describing the flex interface.  We #include
this almost everywhere we #include conffile_internal.h, and that makes
the declarations of yyin and yylex in conffile_internal.h redundant so
remove them.

Note that flex generates a conffile.yy.c which also contains many of
the same declarations as in conffile.yy.h.  So, unfortunately, we
should not #include conffile.yy.h in conffile.hh.c and therefore not
in conffile_internal.h either (if we want -Wredundant-decls, which we do).

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
7 years agocleanup: move declaration of version[] into secnet.h
Ian Jackson [Sun, 5 Jun 2011 12:58:06 +0000 (13:58 +0100)]
cleanup: move declaration of version[] into secnet.h

Also, #include secnet.h in the autogenerated version.c.

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
7 years agocleanup: fix up the type of string buffers
Ian Jackson [Wed, 25 May 2011 20:00:20 +0000 (21:00 +0100)]
cleanup: fix up the type of string buffers

vsnprintf expects a char*, and the format string passed to ->log does
too, so make buffers be char[].

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Signed-off-by: Richard Kettlewell <richard@greenend.org.uk>
7 years agocleanup: turn off some unused flex options
Ian Jackson [Wed, 25 May 2011 20:00:06 +0000 (21:00 +0100)]
cleanup: turn off some unused flex options

We do not use yyunput or yyinput.  Turning them off slightly improves
the scanner performance (not that that's important) but also prevents
"defined but not used" compiler warnings.

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
7 years agocleanup: remove other redundant declarations
Ian Jackson [Sun, 5 Jun 2011 12:59:01 +0000 (13:59 +0100)]
cleanup: remove other redundant declarations

These declarations are now in secnet.h.

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
7 years agocleanup: remove redundant "init_module" declarations
Ian Jackson [Sat, 11 Jun 2011 10:18:21 +0000 (11:18 +0100)]
cleanup: remove redundant "init_module" declarations

These declarations are now provided in secnet.h and should not appear
in individual .c files.

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
7 years agocleanup: move declarations of external objects into header files
Ian Jackson [Mon, 16 May 2011 10:13:59 +0000 (11:13 +0100)]
cleanup: move declarations of external objects into header files

It is not a good idea to declare external objects in .c files.  Every
external object (ie, object with external linkage) should be declared
exactly once in a .h file, and every .c file that refers to it or
defines it should #include that header.

When combined with appropriate compiler warnings, this ensures that
every file sees the same signature for every such object.  (At least
for functions.)

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
7 years agocleanup: add many compiler warning options
Ian Jackson [Wed, 25 May 2011 20:00:36 +0000 (21:00 +0100)]
cleanup: add many compiler warning options

This is a set of warning options which are useful and IMO should be
enabled in secnet.  Currently the code is not warning-clean to the
required standard; subsequent changes will fix the warnings.

Signed-off-by: Richard Kettlewell <richard@greenend.org.uk>
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
7 years agobuild system: commit configure
Ian Jackson [Sun, 12 Jun 2011 21:59:39 +0000 (22:59 +0100)]
build system: commit configure

Commit configure (as generated by autoconf 2.67-2 Debian i386) into
the repo and remove it from .gitignore.

This now means that, provided you don't want to modify configure.in,
you can build secnet from a git clone without autoconf installed and
without any worries about the autoconf version.

If you _do_ modify configure.in, the resulting changes to configure
will end up in the repo, just as previously changes to config.h.in
were committed too.

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
7 years agobuild system: rerun autoheader
Ian Jackson [Sun, 12 Jun 2011 21:58:57 +0000 (22:58 +0100)]
build system: rerun autoheader

Run a recent autoheader (autoconf 2.67-2 from Debian i386) and commit
the resulting config.h.in.

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
7 years agobuild system: remove *~ files in clean target
Ian Jackson [Sun, 5 Jun 2011 12:43:54 +0000 (13:43 +0100)]
build system: remove *~ files in clean target

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
7 years agocleanup: add a .dir-locals.el
Richard Kettlewell [Sun, 19 Jun 2011 13:20:54 +0000 (14:20 +0100)]
cleanup: add a .dir-locals.el

Ensures indent level is right for Emacs users.

Signed-off-by: Richard Kettlewell <richard@greenend.org.uk>
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
7 years agobuild system: add a .gitignore
Ian Jackson [Sun, 5 Jun 2011 12:43:16 +0000 (13:43 +0100)]
build system: add a .gitignore

Ignore all files generated by running autoconf, ./configure, and make,
and the debian build, and editor backup files.

(The files generated by running autoheader are committed and therefore
we don't add them to .gitignore.  There is probably a mistake here,
which will be fixed later in this series.)

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Signed-off-by: Richard Kettlewell <richard@greenend.org.uk>
7 years agoImport release 0.1.18 v0.1.18
Stephen Early [Tue, 18 Mar 2008 18:21:25 +0000 (18:21 +0000)]
Import release 0.1.18

7 years agoPython encoding declaration
Stephen Early [Tue, 14 Jun 2005 23:24:02 +0000 (00:24 +0100)]
Python encoding declaration

Add encoding declaration to ipaddr.py to stop deprecation warnings on
recent python implementations.

7 years agoImport release 0.1.17 v0.1.17
Stephen Early [Sat, 11 Jun 2005 23:18:00 +0000 (00:18 +0100)]
Import release 0.1.17

7 years agoMacOS X support
Stephen Early [Wed, 6 Apr 2005 00:58:29 +0000 (01:58 +0100)]
MacOS X support

Patch from Richard Kettlewell <richard@sfere.greenend.org.uk> to
support MacOS X; see also http://www.greenend.org.uk/rjk/2004/osx.html

7 years agoMinor Makefile update
Stephen Early [Wed, 6 Apr 2005 00:44:21 +0000 (01:44 +0100)]
Minor Makefile update

Update bison pattern rule to indicate that both the .tab.c and .tab.h
files are generated by the same command.

7 years agoUpdate i386 implementation of ip_csum
Stephen Early [Wed, 6 Apr 2005 00:30:07 +0000 (01:30 +0100)]
Update i386 implementation of ip_csum

Update i386 implementation of ip_csum from recent linux
include/asm-i386/checksum.h to fix gcc quote syntax issue.

7 years agoRename log() to slilog()
Stephen Early [Wed, 6 Apr 2005 00:23:59 +0000 (01:23 +0100)]
Rename log() to slilog()

Rename global 'log' to 'slilog' to avoid conflict with gcc built-in
log() function.

7 years agoautoconf-related updates from Ross Younger <ross@crazyscot.com>
Stephen Early [Wed, 6 Apr 2005 00:18:28 +0000 (01:18 +0100)]
autoconf-related updates from Ross Younger <ross@crazyscot.com>

configure.in:
+ require autoconf 2.50
+ use new AC_INIT syntax (NB. This required me to specify an explicit
  package version number and maintainer address!)
+ fix linux/if.h header check
+ add some quoting
+ barf at configure time if gmp, fl or adns are missing
+ use new AC_LIBOBJ syntax for snprintf and getopt
+ include config.h fragments formerly in config.h.bot and config.h.top

Makefile.in: distfiles and dependencies updated to suit.

config.h.bot and config.h.top: removed.

7 years agoImport release 0.1.16 v0.1.16
Stephen Early [Fri, 19 Sep 2003 14:40:00 +0000 (15:40 +0100)]
Import release 0.1.16

7 years agoImport release 0.1.15 v0.1.15
Stephen Early [Thu, 21 Feb 2002 16:28:00 +0000 (16:28 +0000)]
Import release 0.1.15

7 years agoImport release 0.1.14 v0.1.14
Stephen Early [Fri, 28 Dec 2001 19:31:00 +0000 (19:31 +0000)]
Import release 0.1.14

7 years agoImport release 0.1.13 v0.1.13
Stephen Early [Thu, 6 Dec 2001 17:36:00 +0000 (17:36 +0000)]
Import release 0.1.13

7 years agoImport release 0.1.12 v0.1.12
Stephen Early [Mon, 5 Nov 2001 14:51:00 +0000 (14:51 +0000)]
Import release 0.1.12

7 years agoImport release 0.1.11 v0.1.11
Stephen Early [Sat, 27 Oct 2001 14:29:00 +0000 (15:29 +0100)]
Import release 0.1.11

7 years agoImport release 0.1.10 v0.1.10
Stephen Early [Mon, 22 Oct 2001 13:13:00 +0000 (14:13 +0100)]
Import release 0.1.10

7 years agoImport release 0.1.9 v0.1.9
Stephen Early [Sat, 20 Oct 2001 17:03:00 +0000 (18:03 +0100)]
Import release 0.1.9

7 years agoImport release 0.1.8 v0.1.8
Stephen Early [Tue, 16 Oct 2001 13:05:00 +0000 (14:05 +0100)]
Import release 0.1.8

7 years agoImport release 0.1.7 v0.1.7
Stephen Early [Mon, 15 Oct 2001 00:37:00 +0000 (01:37 +0100)]
Import release 0.1.7

7 years agoImport release 0.1.6 v0.1.6
Stephen Early [Sat, 13 Oct 2001 17:02:00 +0000 (18:02 +0100)]
Import release 0.1.6

7 years agoImport release 0.1.5 v0.1.5
Stephen Early [Thu, 11 Oct 2001 17:16:00 +0000 (18:16 +0100)]
Import release 0.1.5

7 years agoImport release 0.1.4 v0.1.4
Stephen Early [Wed, 10 Oct 2001 23:37:00 +0000 (00:37 +0100)]
Import release 0.1.4

7 years agoImport release 0.1.3 v0.1.3
Stephen Early [Wed, 10 Oct 2001 15:11:00 +0000 (16:11 +0100)]
Import release 0.1.3

7 years agoImport release 0.1.2 v0.1.2
Stephen Early [Thu, 4 Oct 2001 16:57:00 +0000 (17:57 +0100)]
Import release 0.1.2

7 years agoImport release 0.1.1 v0.1.1
Stephen Early [Thu, 27 Sep 2001 18:10:00 +0000 (19:10 +0100)]
Import release 0.1.1

7 years agoImport release 0.1.0 v0.1.0
Stephen Early [Tue, 25 Sep 2001 23:19:00 +0000 (00:19 +0100)]
Import release 0.1.0

7 years agoImport release 0.09 v0.09
Stephen Early [Mon, 24 Sep 2001 16:25:00 +0000 (17:25 +0100)]
Import release 0.09

7 years agoImport release 0.08 v0.08
Stephen Early [Mon, 24 Sep 2001 13:25:00 +0000 (14:25 +0100)]
Import release 0.08

7 years agoImport release 0.07 v0.07
Stephen Early [Sun, 23 Sep 2001 23:48:00 +0000 (00:48 +0100)]
Import release 0.07

7 years agoImport release 0.06 v0.06
Stephen Early [Sun, 23 Sep 2001 20:49:00 +0000 (21:49 +0100)]
Import release 0.06

7 years agoImport release 0.05 v0.05
Stephen Early [Sun, 23 Sep 2001 17:30:00 +0000 (18:30 +0100)]
Import release 0.05

7 years agoImport release 0.04 v0.04
Stephen Early [Sun, 23 Sep 2001 15:28:00 +0000 (16:28 +0100)]
Import release 0.04

7 years agoImport release 0.03 v0.03
Stephen Early [Wed, 19 Sep 2001 23:24:00 +0000 (00:24 +0100)]
Import release 0.03