1 secnet (0.6.4) unstable; urgency=medium
3 * Bump version number for re-push. (See dgit bug #977845.)
5 -- Ian Jackson <ijackson@chiark.greenend.org.uk> Sat, 12 Nov 2022 18:50:33 +0000
7 secnet (0.6.3) unstable; urgency=medium
9 Copyright and source code notices:
10 * Include notices and licences of all included elements in LICENCE,
11 not just in the files themselvves.
12 * Tidy up a handful of notices to the most recent facts.
13 * Do not claim CC-BY-SA 4.0 is GPL3+ compatible - only GPL3.
14 * Add a README.source.
15 * Update my own copyright year.
17 -- Ian Jackson <ijackson@chiark.greenend.org.uk> Sat, 12 Nov 2022 18:37:17 +0000
19 secnet (0.6.2) unstable; urgency=medium
21 Bugfixes to code and build system:
22 * site: promote creation of st->scratch, allowing new pubkey scheme
23 to work even when secnet is restarting.
24 * comm-common.h: Remove unused `notify' variable. [Colin Watson]
25 * Dir.sd.mk: Prevent builtin make rule overwriting conffile.c.
28 * configure: Correct bug reporting address. Report from Colin Watson.
29 * example.conf improvements:
30 - Comment out some tuning overrides
31 - Improve syntax by deleting one of the two map examples
32 - Add a commented-out mobile site setting
34 * OLD-NEWS, OLD-BUGS: Rename from NEWS and BUGS, and don't ship OLD-BUGS.
36 Debian packaging changes:
37 * debian/rules: Use dh sequencer. Resulting changes:
38 - We now provide debug symbols in the new Debian way.
39 - The way the prerm stops secnet accords with modern practice.
40 * init script: source /lib/lsb/init-functions.
41 * init script: make "restart" work if secnet is not running.
43 * debhelper compat: bump to 12 (stretch-backports).
44 * debian/rules: Use dh_prep instead of deprecated dh_clean -k.
45 * Adjust Priority (as per modern policy and lintian).
46 * Add some lintian overrides.
47 * Add missing Pre-Depends on init-system-helpers.
49 Credits and legal documentation improvements:
50 * Add missing credits for base91 and python argparse extension.
51 ensure some packaging credits exist in all the places they should be.
52 * Add copyright/credits notices to many files which were missing them.
53 * Move and centralise legal information into its own file, LICENCE.
56 * comprehensive-test: Actually allow OLD_SECNET_DIR set to ''
57 * test-example/common.conf: Fix a reference to the sites file.
58 * test-example/null-fake-userv: New test utility script.
60 -- Ian Jackson <ijackson@chiark.greenend.org.uk> Thu, 30 Dec 2021 15:10:12 +0000
62 secnet (0.6.1) unstable; urgency=medium
65 * Fix completely broken startup logging. Config errors would not
66 be repoorted other than via the exit status! (Broken in 0.6.0.)
67 * Suppress various uninteresting messages during startup, to
68 avoid noise during successful startup.
69 * Move "starting" message earlier.
71 make-secnet-sites bugfixes:
72 * Fix error handling if caller is in wrong group.
73 * Fix regressions in handling of delegated sites file fragments
74 (especially wrt the optional group parameter to `location').
75 Broken since security fixes in 0.5.0.
77 Fixes to example config file:
78 * Use new name-prefixed format for map(site...) runes. Old runes
79 were desupported by make-secnet-sites security fix (in 0.5.0).
80 * Fix "transform" syntax (broken since 0.3.0).
82 Other bugfixes and improvements:
83 * rsa: Do not crash if private key file is not accessible when
84 running --just-check-config. (Broken since 0.6.0.)
85 * rsa: Print errno value if we fail to open key file.
86 * config parsing: When closure is of wrong type, give details.
87 * Use CLOCK_MONOTONIC for all our timing needs (but only when
88 built against an as-yet-unpublished adns feature).
91 * Tests for some of the changes.
92 * Minor internal refactorings and improvements.
95 -- Ian Jackson <ijackson@chiark.greenend.org.uk> Sun, 24 May 2020 22:14:26 +0100
97 secnet (0.6.0) unstable; urgency=medium
100 * mobile sites: Do not ever expire peer addresses. In practice
101 this fixes transitions between IPv6-only and IPv4-only networks.
102 * make-secnet-sites: Tainted: Fix a lot of bad return values
103 (which would result in assertions rather than nice error messages).
104 * Fix hash algo confusion in mixed sha1/md5 configurations (see below).
106 Incompatible changes:
107 * site: Always advertise all capabilities, even in MSG1. This is
108 incompatible with secnets earlier than 0.3.0 (September 2013), which
109 are all quite badly broken and should have been upgraded long ago.
110 * Drop support for using the same loaded rsa key with multiple different
111 hash algorithms (which was broken in 0.5.0). Right now we support
112 only `sha1' and `md5' so everyone should be using `sha1'.
113 Installations which specified `md5' anywhere may need config changes.
115 Major new featureset (use of which is not adviseable yet):
116 * New facilities for negotiating about the signing keys to use for
117 authentication during key setup, and selecting and using the
118 appropriate keys. (``key-cache'/`privcache' and `peer-keys').
119 Using these new facilities for keyrollover now is in principle
120 possible but rather complex. Further machinery is planned;
121 for now, retain your existing config which should keep working.
123 - secnet: new `privcache' closure;
124 - secnet: `key-cache' and `peer-keys' keys on site closures;
125 - secnet: new file format for peer public keysets;
126 - secnet: new `make-public' config operator;
127 - make-secnet-sites `pub', `pkg', `serial', etc. keywords;
128 - make-secnet-sites --filter, --pubkeys-*, --output-version.
130 More minor (logging) improvements:
131 * Make stderr line buffered and log to it by default.
132 * Do not log differently with --nodetach.
133 * New `prefix' option to `logfile' closure.
134 * Tidy and simplify some messages.
137 * Many substantial internal refactorings in secnet.
138 * Many substantial internal refactorings in make-secnet-sites.
139 * make-secnet-sites option parsing totally replaced.
140 * Imported subtrees for base91-c and base91-python.
141 * New portablity code, etc.: osdep.[ch], fmemopen reimplementation.
142 * Explicitly define oddly-rotated dh padding arrangement (write_mpbin).
144 Build system and packaging:
145 * Do not fail to build from git when HEAD refers to a packed ref.
146 * Update to subdirmk 0.3.
147 * Many makefile fixes (esp. to clean and cdeps).
148 * configure.ac: Drop or suppress some very obsolete checks.
149 * autogen.sh: Write a comment about need for autoheader.
150 * dir-locals: Provide python-indent-offset too.
153 * stest: Use stderr, not tty, for logging.
154 * stest/udp-preload.c: Fix error handling of sun_prep.
155 * stest: Fix breakage if nproc is not installed.
157 Test suite improvements:
158 * New tests, including tests for new features.
159 * Existing tests (especially stest) generally made more thorough.
160 * New comprehensive-test and pretest-to-tested convenience scripts.
161 * Arrangements for testing with (user-provided) old secnet.
162 * parallel-test.*: scripts to help with parallelised bisection.
163 * stest: Print a lot more output about what we are doing.
164 * stest: Better support for cwd with longish pathname.
165 * stest: More flexibility, env var hooks, etc.
167 -- Ian Jackson <ijackson@chiark.greenend.org.uk> Sun, 16 Feb 2020 12:48:13 +0000
169 secnet (0.5.1) unstable; urgency=medium
171 POTENTIALLY INCOMPATIBLE CHANGE. Some security implications.
173 * make-secnet-sites: Prefix names when writing secnet sites.conf file.
175 make-secnet-sites must copy names (vpn, location and site names) from
176 the input sites file (which is not wholly trusted) to the secnet
177 config file. Prior to this release, naming a location or site the
178 same as a secnet predefined name could generate a broken sites.conf
179 which secnet would reject. (With the existing featureset,
180 malfunctions other than rejection, eg privilege escalation, are not
183 make-secnet-sites now adds a prefix to these names when writing
184 sites.conf. This will not affect configurations which use the
185 make-secnet-sites-provided `all-sites' key, as is usual. Other
186 configurations will break unless the references in the static part of
187 the config are adjusted.
189 Previous behaviour can be restored with the --no-conf-key-prefix
190 option. (Planned future enhancements to secnet are likely to make use
191 of that option, with untrusted input, dangerously insecure.)
193 other changes to make-secnet-sites:
194 * Fix argument parsing. Fixes a regression affecting -P in 0.5.0,
195 and also fixes new facilities introduced in 0.5.0.
196 * Sort the properties on output (and adjust the test case expected
197 outputs). Tests now pass on (at least) Python 2.7.13, 3.5.3, 3.7.5.
198 * Delete some unused code.
201 * Change one idiom to avoid a warning from GCC9. No functional change.
203 build system - MAJOR CHANGES:
204 * Fix out-of-tree builds. (Broken in 0.5.0)
205 * Replace recursive make with use of the new subdirmk system.
206 This represents a fairly comprehensive overhaul of the makefiles.
207 Several bugs (esp. involving dependencies between files in different
208 directories) are fixed.
209 * Drop `make check' from `make all'. (Otherwise there is no way
210 to ask for `all' without `check'.)
211 * Suppress two unhelpful new compiler warnings from GCC9.
212 * Release checklist update.
215 * Credit Mark Wooding properly in CREDITS.
216 * Include DEVELOPER-CERTIFICATE.
219 * Locations now have different names to sites.
220 * Somewhat better debugging output from mtest.
221 * Do not run msgcode-test except with `make fullcheck'.
222 * Other minor bugfixes and improvments.
223 * stest: Suppress unhelpful -Wno-unused-result (needed for stretch).
225 -- Ian Jackson <ijackson@chiark.greenend.org.uk> Fri, 22 Nov 2019 23:13:14 +0000
227 secnet (0.5.0) unstable; urgency=medium
229 make-secnet-sites SECURITY FIX:
230 * Do not blindly trust inputs; instead, check the syntax for sanity.
231 Previous releases can be induced to run arbitrary code as the user
232 invoking secnet (which might be root), if a secnet sites.conf is used
233 that was generated from an untrustworthy sites file.
234 * The userv invocation mode of make-secnet-sites seems to have been safe
235 in itself, but it previously allowed hazardous data to be propagated
236 into the master sites file. This is now prevented too.
238 make-secnet-sites overhaul work:
239 * make-secnet-sites is now in the common subset of Python2 and Python3.
240 The #! is python3 now, but it works with Python2.7 too.
241 It will probably *not* work with old versions of Python2.
242 * We no longer depend on the obsolete `ipaddr' library. We use
243 `ipaddress' now. And this is onlo a Recommends in the .deb.
244 * Ad-hoc argument parser been replaced with `argparse'.
245 There should be no change to existing working invocations.
246 * Bad address syntax error does not wrongly mention IPv6 scopes.
247 * Minor refactoring to support forthcoming work. [Mark Wooding]
249 other bugfixes, improvements and changes to secnet itself:
250 * Better logging of why we are sending NAK messages.
251 * Correctly use the verified copy of the peer remote capabilities
252 from MSG3. (Bug is not a vulnerability.) [Mark Wooding]
253 * Significant internal rearrangements and refactorings, to support
254 forthcoming key management work. [Mark Wooding and Ian Jackson]
257 * Completely overhaul release checklist; drop dist target.
258 * Remove dependency on `libfl.a'. [Mark Wooding]
259 * polypath.c: Fix missing include of <limits.h>. [Mark Wooding]
260 * Add a Wireshark dissector `secnet-wireshark.lua'. It is not
261 installed anywhere right now. [Mark Wooding]
264 * Improve documentation of capability negotiation in NOTES, secnet(8)
265 and magic.h. [Mark Wooding]
267 -- Ian Jackson <ijackson@chiark.greenend.org.uk> Thu, 24 Oct 2019 19:11:54 +0100
269 secnet (0.4.5) unstable; urgency=medium
271 * INSTALL: Mention that rsa key generation might need ssh-keygen1.
272 * mobile: Fix negotiation bug with mixed old/new secnets and
273 simultaneous key setup attempts by each end. [Mark Wooding]
274 * Makefile.in: Support installation from a `VPATH' build. [Mark Wooding]
275 * Portability fixes for clang. [Mark Wooding]
277 -- Ian Jackson <ijackson@chiark.greenend.org.uk> Sat, 21 Sep 2019 12:04:31 +0100
279 secnet (0.4.4) unstable; urgency=medium
282 * make-secnet-sites: Don't allow setting new VPN-level properties
283 when restricted. This could allow denial of service by
284 users with delegated authorisation. [Mark Wooding]
286 Bugfixes for poor network environments:
287 * polypath: cope properly with asymmetric routing, by correcting
288 the handling of late duplicated packets etc. Protocol is now
289 incompatible with secnet prior to 0.3.0 when either end is mobile.
290 * Randomise key setup retry time.
293 * rsa and cbcmac: Fix configuration error messages. [Mark Wooding]
294 * Handle IPv4 addresses properly (ie, not foolishly byte-swapped),
295 when IPv6 is not available. [Mark Wooding]
296 * Better logging (and less foolish debug), especially about whether
297 key is set up, and about crossed key setup attempts.
298 * Internal refactoring and fixes. [Ian Jackson and Mark Wooding]
300 Build system and portability:
301 * configure: rerun autogen.sh with autoconf 2.69-10
302 * Avoid memset(0,0,0) wrt st->sharedsecret. (Fixes compiler warning;
303 in theory might cause miscompilation.) [Mark Wooding]
306 * README.make-secnet-sites: new documentation file. [Mark Wooding]
307 * NOTES: Describe current allocation of capability bits. [Mark Wooding]
308 * NOTES: tiny fix tot protocol description.
309 * secnet(8): Delete wrong information about dh groups. [Mark Wooding]
312 * Fix erroneous GPL3+ licence notices "version d or later" (!)
313 * .dir-locals.el: Settings for Python code. [Mark Wooding]
315 -- Ian Jackson <ijackson@chiark.greenend.org.uk> Sun, 08 Sep 2019 22:53:14 +0100
317 secnet (0.4.3) unstable; urgency=low
319 Security improvement:
320 * Use `mpz_powm_sec' for modexps.
323 * Implement comm-info and dedicated-interface-addr feature, for
325 * Implement `keepalive' site option, to try to keep link always up.
328 * #include <limits.h> (fixes the build on jessie).
329 * Tolerate building from a git checkout, but with git not installed.
330 (This can happen in chroots.)
331 * Turn off -Wsign-compare for bison output.
332 * Makefile.in: Fix `check-ipaddrset' rule to get reference from
333 $(srcdir). (Makes out-of-tree builds work properly.)
334 * Release checklist fixes.
335 * Burn version numbers 0.4.1 and 0.4.2 due to errors in release prep.
338 * When printing messages about dropping IPv6, do not print anything
339 about ihl. (Check the IP version field first!)
340 * When turning on debug, turn on verbose too.
342 -- Ian Jackson <ijackson@chiark.greenend.org.uk> Sat, 25 Nov 2017 13:36:41 +0000
344 secnet (0.4.0) unstable; urgency=low
346 Debugging improvements:
347 * Packet-level debugging from site notes errors from transmit.
348 * Report when transport peers updated as a result of transmit.
350 -- Ian Jackson <ijackson@chiark.greenend.org.uk> Sat, 28 Feb 2015 15:03:00 +0000
352 secnet (0.4.0~beta2) unstable; urgency=low
355 * Ignore IPv6 Unique Local unicast addresses.
356 * Skip "tentative" IPv6 local addresses.
357 * Improve logging and debug output.
360 * Build where size_t is not compatible with int.
362 Build system and packaging fixes:
363 * Makefile: support DESTDIR.
364 * debian/rules: set DESTDIR (not prefix).
365 * debian/rules: Support dpkg-buildflags.
366 * Install ipaddrset.py and secnet.8 with correct permissions.
367 * Fix check for <linux/if_tun.h> and git rid of our copy.
368 * Use -lresolv only if inet_aton is not found otherwise.
369 * Use -lnsl only if inet_ntoa is not found otherwise.
370 * debian/rules: Provide build-arch and build-indep targets.
371 * debian/rules: Do not run build for *-indep (!)
372 * Makefile.in: Putative dual (backport and not) release build process doc.
375 * Update to GPLv3. Add missing copyright notices and credits.
376 * Get rid of old FSF street address; use URL instead.
377 * Remove obsolete LICENCE.txt (which was for snprintf reimplementation).
378 * Remove obsolete references to Cendio (for old ipaddr.py).
380 -- Ian Jackson <ijackson@chiark.greenend.org.uk> Sun, 28 Dec 2014 17:14:10 +0000
382 secnet (0.4.0~beta1) unstable; urgency=low
385 * Support transport over IPv6. (We do not yet carry IPv6 in the private
386 network.) IPv6 support depends on IPv6-capable adns (adns 1.5.x).
387 * New polypath comm, which can duplicate packets so as to send them via
388 multiple routes over the public network, for increased
389 reliability/performance (but increased cost). Currently Linux-only
390 but should be fairly easy to port.
391 * Support multiple public addresses for peers.
392 * Discard previously-received packets (by default).
394 Logging improvements:
395 * Report (each first) transmission and reception success and failure.
396 * Log reason for DNS reolution failure.
397 * Log unexpected kinds of death from userv.
398 * Log authbind exit status as errno value (if appropriate).
400 Configuration adjustments:
401 * Adjust default number of mobile peer addresses to store when a peer
402 public address is also configured.
403 * Make specifying peer public port optional. This avoids making special
404 arrangements to bind to a port for in mobile sites with no public
408 * Hackypar children will die if they get a terminating signal.
409 * Fix signal dispositions inherited by secnet's child processes.
410 * Fix off-by-one error which prevented setting transport-peers-max to 5.
412 Test, build and internal improvements:
413 * Use conventional IP address handling library ipaddr.py.
414 * Provide a fuzzer for the slip decoder.
415 * Build system improvements.
416 * Many source code cleanups.
418 -- Ian Jackson <ijackson@chiark.greenend.org.uk> Sun, 26 Oct 2014 15:28:31 +0000
420 secnet (0.3.4) unstable; urgency=low
423 * The previous security fix to buffer handling was entirely wrong. This
424 one is better. Thanks to Simon Tatham for the report and the patch.
426 -- Ian Jackson <ijackson@chiark.greenend.org.uk> Mon, 22 Sep 2014 16:16:11 +0100
428 secnet (0.3.3) unstable; urgency=high
431 * Pass correct size argument to recvfrom. This is a serious security
432 problem which may be exploitable from outside the VPN.
433 * Fix a memory leak in some error logging.
436 * Two other latent bugs in buffer length handling found and fixed.
437 * Non-critical stylistic improvements to buffer length handling, to make
438 the code clearer and to assist audit.
440 -- Ian Jackson <ijackson@chiark.greenend.org.uk> Fri, 19 Sep 2014 23:50:45 +0100
442 secnet (0.3.3~beta1) unstable; urgency=low
444 Installation compatibility fix:
445 * In make-secnet-sites, always use our own ipaddr.py even if the
446 incompatible modern ipaddr.py is installed (eg via python-ipaddr.deb).
447 (Future versions of secnet are going to need that Python module to be
450 For links involving mobile sites:
451 * Use source of NAK packets as hint for peer transport address.
452 * When initiating rekey, make use of data transport peer addresses.
455 * Provide clean target in test-example/Makefile.
457 -- Ian Jackson <ijackson@chiark.greenend.org.uk> Fri, 19 Sep 2014 00:11:44 +0100
459 secnet (0.3.2) unstable; urgency=low
461 * Release of 0.3.2. No code changes since 0.3.1~beta1.
463 -- Ian Jackson <ijackson@chiark.greenend.org.uk> Thu, 26 Jun 2014 20:27:58 +0100
465 secnet (0.3.2~beta1) unstable; urgency=low
467 For links involving mobile sites:
468 * SECURITY: Properly update peer address array when it is full.
469 * Do name-resolution on peer-initiated key setup too, when we are mobile
470 (and other name-resolution improvements).
472 Other minor improvements:
473 * Log peer addresses on key exchange timeout.
474 * When printing version (eg during startup), use value from git-describe
475 and thus include git commit id where applicable.
476 * Updates to release checklist in Makefile.in.
477 * Use C99 _Bool for bool_t.
479 -- Ian Jackson <ijackson@chiark.greenend.org.uk> Fri, 06 Jun 2014 01:17:54 +0100
481 secnet (0.3.1) unstable; urgency=low
483 * Release of 0.3.1. No code changes since 0.3.1~beta3.
485 -- Ian Jackson <ijackson@chiark.greenend.org.uk> Thu, 15 May 2014 01:08:30 +0100
487 secnet (0.3.1~beta3) unstable; urgency=low
489 * Build fixes for non-i386 architectures and gcc 4.8.2.
491 -- Ian Jackson <ijackson@chiark.greenend.org.uk> Thu, 08 May 2014 19:53:43 +0100
493 secnet (0.3.1~beta2) unstable; urgency=low
495 Fix relating to new fragmentation / ICMP functionality:
496 * Generate ICMP packets correctly in point-to-point configurations.
498 -- Ian Jackson <ijackson@chiark.greenend.org.uk> Sat, 03 May 2014 18:58:09 +0100
500 secnet (0.3.1~beta1) unstable; urgency=low
502 Security fixes (vulnerabilities are to inside attackers only):
503 * SECURITY: Fixes to MTU and fragmentation handling.
504 * SECURITY: Correctly set "unused" ICMP header field.
505 * SECURITY: Fix IP length check not to crash on very short packets.
508 * Make the inter-site MTU configurable, and negotiate it with the peer.
511 * Fix netlink SEGV on clientless netlinks (i.e. configuration error).
512 * Fix formatting error in p-t-p startup message.
513 * Do not send ICMP errors in response to unknown incoming ICMP.
514 * Fix formatting error in secnet.8 manpage.
515 * Internal code rearrangements and improvements.
517 Packaging improvements:
518 * Updates to release checklist in Makefile.in.
519 * Additions to the test-example suite.
521 -- Ian Jackson <ijackson@chiark.greenend.org.uk> Thu, 01 May 2014 19:02:56 +0100
523 secnet (0.3.0) unstable; urgency=low
525 * Release of 0.3.0. No code changes since 0.3.0~beta3.
526 * Update release checklist.
528 -- Ian Jackson <ijackson@chiark.greenend.org.uk> Sun, 01 Sep 2013 20:27:48 +0100
530 secnet (0.3.0~beta3) unstable; urgency=low
532 * New upstream version.
533 - Stability bugfix: properly initialise site's scratch buffer.
535 -- Ian Jackson <ijackson@chiark.greenend.org.uk> Mon, 05 Aug 2013 11:54:09 +0100
537 secnet (0.3.0~beta2) unstable; urgency=low
539 * New upstream version.
540 - SECURITY FIX: RSA public modulus and exponent buffer overflow.
541 - SECURITY FIX: Use constant-time memcmp for message authentication.
542 - SECURITY FIX: Provide a new transform, eax-serpent, to replace cbcmac.
543 - SECURITY FIX: No longer send NAKs for NAKs, avoiding NAK storm.
544 - SECURITY FIX: Fix site name checking when site name A is prefix of B.
545 - SECURITY FIX: Safely reject too-short IP packets.
546 - Better robustness for mobile sites (proper user of NAKs, new PROD msg).
547 - Better robustness against SLIP decoding errors.
548 - Fix bugs which caused routes to sometimes not be advertised.
549 - Protocol capability negotiation mechanism.
550 - Improvements and fixes to protocol and usage documentation.
551 - Other bugfixes and code tidying up.
553 -- Ian Jackson <ijackson@chiark.greenend.org.uk> Thu, 25 Jul 2013 18:26:01 +0100
555 secnet (0.3.0~beta1) unstable; urgency=low
557 * New upstream version.
558 - SECURITY FIX: avoid crashes (or buffer overrun) on short packets.
559 - Bugfixes relating to packet loss during key exchange.
560 - Bugfixes relating to link up/down status.
561 - Bugfixes relating to logging.
562 - make-secnet-sites made more sophisticated to support two vpns on chiark.
563 - Documentation improvements.
564 - Build system improvements.
565 * Debian packaging improvements:
567 - Maintainer / uploaders.
568 - init script requires $remove_fs since we're in /usr.
570 -- Ian Jackson <ijackson@chiark.greenend.org.uk> Thu, 12 Jul 2012 20:18:16 +0100
572 secnet (0.2.1-1) unstable; urgency=low
574 * New upstream version. (authbind endianness fix)
576 -- Ian Jackson <ijackson@chiark.greenend.org.uk> Sun, 11 Dec 2011 13:14:57 +0000
578 secnet (0.2.0-1) unstable; urgency=low
580 * New upstream version.
582 -- Ian Jackson <ijackson@chiark.greenend.org.uk> Sat, 10 Dec 2011 22:44:41 +0000
584 secnet (0.1.18-1) unstable; urgency=low
586 * New upstream version.
588 -- Stephen Early <steve@greenend.org.uk> Tue, 18 Mar 2008 17:45:00 +0000