From e459f6ee0f71f182718cfbbe6d0a551b1e1886b9 Mon Sep 17 00:00:00 2001 From: Peter Palfrader Date: Sat, 8 Oct 2005 21:20:01 +0000 Subject: Add directory format fix to debian's 0.1.1.8-alpha-1 svn:r5232 --- debian/changelog | 6 +- debian/patches/00list | 1 + ...8_add_newlines_between_serverdescriptors.dpatch | 66 ++++++++++++++++++++++ 3 files changed, 72 insertions(+), 1 deletion(-) create mode 100755 debian/patches/08_add_newlines_between_serverdescriptors.dpatch diff --git a/debian/changelog b/debian/changelog index 403f2f78ae..a1a98c6dcd 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,8 +1,12 @@ tor (0.1.1.8-alpha-1) experimental; urgency=low * New upstream version. + * Add patch from CVS to + "Insert a newline between all router descriptors when generating (old + style) signed directories, in case somebody was counting on that". + r1.247 of dirserv.c, <20051008060243.85F41140808C@moria.seul.org> - -- Peter Palfrader Sat, 8 Oct 2005 00:26:29 +0200 + -- Peter Palfrader Sat, 8 Oct 2005 20:24:39 +0200 tor (0.1.1.7-alpha-1) experimental; urgency=low diff --git a/debian/patches/00list b/debian/patches/00list index cd17cd1dca..8741cb7214 100644 --- a/debian/patches/00list +++ b/debian/patches/00list @@ -2,3 +2,4 @@ 03_tor_manpage_in_section_8.dpatch 06_add_compile_time_defaults.dpatch 07_log_to_file_by_default.dpatch +08_add_newlines_between_serverdescriptors diff --git a/debian/patches/08_add_newlines_between_serverdescriptors.dpatch b/debian/patches/08_add_newlines_between_serverdescriptors.dpatch new file mode 100755 index 0000000000..aa4c662645 --- /dev/null +++ b/debian/patches/08_add_newlines_between_serverdescriptors.dpatch @@ -0,0 +1,66 @@ +#! /bin/sh -e +## 07_log_to_file_by_default.dpatch by +## +## All lines beginning with `## DP:' are a description of the patch. +## DP: No description. + +if [ $# -lt 1 ]; then + echo "`basename $0`: script expects -patch|-unpatch as argument" >&2 + exit 1 +fi + +[ -f debian/patches/00patch-opts ] && . debian/patches/00patch-opts +patch_opts="${patch_opts:--f --no-backup-if-mismatch} ${2:+-d $2}" + +case "$1" in + -patch) patch -p1 ${patch_opts} < $0;; + -unpatch) patch -R -p1 ${patch_opts} < $0;; + *) + echo "`basename $0`: script expects -patch|-unpatch as argument" >&2 + exit 1;; +esac + +exit 0 + +@DPATCH@ +diff -u -d -r1.246 -r1.247 +--- tor-0.1.1.9/src/or/dirserv.c 6 Oct 2005 04:33:40 -0000 1.246 ++++ /tmp/dpep.YwfNhI/tor-0.1.1.9/src/or/dirserv.c 8 Oct 2005 06:02:41 -0000 1.247 +@@ -731,6 +731,7 @@ + dirserv_dump_directory_to_string(char **dir_out, + crypto_pk_env_t *private_key) + { ++ char *cp; + char *router_status; + char *identity_pkey; /* Identity key, DER64-encoded. */ + char *recommended_versions; +@@ -765,7 +766,7 @@ + buf_len = 2048+strlen(recommended_versions)+ + strlen(router_status); + SMARTLIST_FOREACH(descriptor_list, routerinfo_t *, ri, +- buf_len += ri->signed_descriptor_len); ++ buf_len += ri->signed_descriptor_len+1); + buf = tor_malloc(buf_len); + /* We'll be comparing against buf_len throughout the rest of the + function, though strictly speaking we shouldn't be able to exceed +@@ -785,9 +786,17 @@ + tor_free(router_status); + tor_free(identity_pkey); + ++ cp = buf + strlen(buf); + SMARTLIST_FOREACH(descriptor_list, routerinfo_t *, ri, +- if (strlcat(buf, ri->signed_descriptor, buf_len) >= buf_len) +- goto truncated); ++ { ++ if (cp+ri->signed_descriptor_len+1 >= buf+buf_len) ++ goto truncated; ++ memcpy(cp, ri->signed_descriptor, ri->signed_descriptor_len); ++ cp += ri->signed_descriptor_len; ++ *cp++ = '\n'; /* add an extra newline in case somebody was depending on ++ * it. */ ++ }); ++ *cp = '\0'; + + /* These multiple strlcat calls are inefficient, but dwarfed by the RSA + signature. + -- cgit v1.2.3-54-g00ecf