libchop: Add patches that fix the whole thing.
svn path=/nixpkgs/trunk/; revision=30430
This commit is contained in:
parent
63d36b5185
commit
175f3b3e62
@ -0,0 +1,103 @@
|
||||
From cb343e4e0421ba89651c884939238eec74e826f6 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= <ludo@gnu.org>
|
||||
Date: Mon, 14 Nov 2011 17:28:53 +0100
|
||||
Subject: [PATCH 1/2] tests: Simplify `deserialize.c'.
|
||||
|
||||
* tests/interfaces/deserialize.c (pair)[serial_size]: Remove field.
|
||||
(ascii_serials): Adjust accordingly.
|
||||
(check_serial_deserial): Use `strlen (pair->serial)' instead of
|
||||
`pair->serial_size'.
|
||||
---
|
||||
tests/interfaces/deserialize.c | 20 +++++++++-----------
|
||||
1 files changed, 9 insertions(+), 11 deletions(-)
|
||||
|
||||
diff --git a/tests/interfaces/deserialize.c b/tests/interfaces/deserialize.c
|
||||
index 80c610d..6e9b765 100644
|
||||
--- a/tests/interfaces/deserialize.c
|
||||
+++ b/tests/interfaces/deserialize.c
|
||||
@@ -24,12 +24,12 @@
|
||||
|
||||
#include <testsuite.h>
|
||||
#include <stdlib.h>
|
||||
+#include <string.h>
|
||||
|
||||
struct pair
|
||||
{
|
||||
const char *const class_name;
|
||||
const char *const serial;
|
||||
- size_t serial_size;
|
||||
};
|
||||
|
||||
static const struct pair ascii_serials[] =
|
||||
@@ -37,16 +37,14 @@ static const struct pair ascii_serials[] =
|
||||
{
|
||||
"chk_index_handle",
|
||||
"zqoimseyv5r4cpj3ab64o6y2j6cbatkz5picnvidsyafwnvtrvbq====,grqqeqcihncuevm7xnmnkfp3ukkruk2e/4a",
|
||||
- 92
|
||||
},
|
||||
|
||||
{
|
||||
"hash_index_handle",
|
||||
"3q2hrigwtmsmvqi64cy2yw7szh66drvf/122",
|
||||
- 36
|
||||
},
|
||||
|
||||
- { NULL, NULL, 0 }
|
||||
+ { NULL, NULL }
|
||||
};
|
||||
|
||||
/* Check whether we can serialize/deserialize PAIR. */
|
||||
@@ -59,7 +57,7 @@ check_serial_deserial (const struct pair *pair)
|
||||
chop_object_t *object;
|
||||
const chop_class_t *klass;
|
||||
chop_buffer_t buffer;
|
||||
- char with_trailing_junk[pair->serial_size + sizeof junk + 1];
|
||||
+ char with_trailing_junk[strlen (pair->serial) + sizeof junk + 1];
|
||||
size_t read;
|
||||
|
||||
test_stage ("instance of `%s'", pair->class_name);
|
||||
@@ -73,17 +71,17 @@ check_serial_deserial (const struct pair *pair)
|
||||
test_stage_intermediate ("with trailing NUL");
|
||||
err = chop_object_deserialize (object, klass,
|
||||
CHOP_SERIAL_ASCII,
|
||||
- pair->serial, pair->serial_size,
|
||||
+ pair->serial, strlen (pair->serial),
|
||||
&read);
|
||||
|
||||
test_check_errcode (err, "deserializing");
|
||||
- test_assert (read == pair->serial_size);
|
||||
+ test_assert (read == strlen (pair->serial));
|
||||
|
||||
err = chop_object_serialize (object, CHOP_SERIAL_ASCII, &buffer);
|
||||
test_check_errcode (err, "serializing");
|
||||
|
||||
test_assert (!strncmp (chop_buffer_content (&buffer), pair->serial,
|
||||
- pair->serial_size));
|
||||
+ strlen (pair->serial)));
|
||||
|
||||
chop_object_destroy (object);
|
||||
chop_buffer_clear (&buffer);
|
||||
@@ -96,17 +94,17 @@ check_serial_deserial (const struct pair *pair)
|
||||
|
||||
err = chop_object_deserialize (object, klass,
|
||||
CHOP_SERIAL_ASCII,
|
||||
- with_trailing_junk, pair->serial_size,
|
||||
+ with_trailing_junk, strlen (pair->serial),
|
||||
&read);
|
||||
|
||||
test_check_errcode (err, "deserializing with trailing junk");
|
||||
- test_assert (read == pair->serial_size);
|
||||
+ test_assert (read == strlen (pair->serial));
|
||||
|
||||
err = chop_object_serialize (object, CHOP_SERIAL_ASCII, &buffer);
|
||||
test_check_errcode (err, "serializing (trailing junk)");
|
||||
|
||||
test_assert (!strncmp (chop_buffer_content (&buffer), pair->serial,
|
||||
- pair->serial_size));
|
||||
+ strlen (pair->serial)));
|
||||
|
||||
test_stage_result (1);
|
||||
}
|
||||
--
|
||||
1.7.6
|
||||
|
@ -0,0 +1,47 @@
|
||||
From 8b2d0b3792e4c0535ff7241cf3770232618cdefc Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= <ludo@gnu.org>
|
||||
Date: Mon, 14 Nov 2011 17:34:10 +0100
|
||||
Subject: [PATCH 2/2] block-indexer-hash: Fix off-by-n in ASCII
|
||||
deserialization of the block indexer.
|
||||
|
||||
* src/block-indexer-hash.c (hbi_deserialize): Don't read beyond SIZE.
|
||||
|
||||
* tests/interfaces/deserialize.c (ascii_serials): Add a
|
||||
`hash_block_indexer' example.
|
||||
---
|
||||
src/block-indexer-hash.c | 2 +-
|
||||
tests/interfaces/deserialize.c | 5 +++++
|
||||
2 files changed, 6 insertions(+), 1 deletions(-)
|
||||
|
||||
diff --git a/src/block-indexer-hash.c b/src/block-indexer-hash.c
|
||||
index 858ddd7..db7d6b4 100644
|
||||
--- a/src/block-indexer-hash.c
|
||||
+++ b/src/block-indexer-hash.c
|
||||
@@ -638,7 +638,7 @@ hbi_deserialize (const char *buffer, size_t size, chop_serial_method_t method,
|
||||
size_t name_len = 0;
|
||||
const char *end = buffer;
|
||||
|
||||
- while (isalnum (*end))
|
||||
+ while (isalnum (*end) && end - buffer < size)
|
||||
{
|
||||
if (name_len >= sizeof (name))
|
||||
return CHOP_DESERIAL_CORRUPT_INPUT;
|
||||
diff --git a/tests/interfaces/deserialize.c b/tests/interfaces/deserialize.c
|
||||
index 6e9b765..af7015e 100644
|
||||
--- a/tests/interfaces/deserialize.c
|
||||
+++ b/tests/interfaces/deserialize.c
|
||||
@@ -44,6 +44,11 @@ static const struct pair ascii_serials[] =
|
||||
"3q2hrigwtmsmvqi64cy2yw7szh66drvf/122",
|
||||
},
|
||||
|
||||
+ {
|
||||
+ "hash_block_indexer",
|
||||
+ "SHA1"
|
||||
+ },
|
||||
+
|
||||
{ NULL, NULL }
|
||||
};
|
||||
|
||||
--
|
||||
1.7.6
|
||||
|
@ -0,0 +1,19 @@
|
||||
commit c1d42668b6fa0777df99c349a9b3826c186f3b9d
|
||||
Author: Ludovic Courtès <ludo@gnu.org>
|
||||
Date: Sat Nov 5 00:03:00 2011 +0100
|
||||
|
||||
Define $GUILE_LOAD_COMPILED_PATH when running tests.
|
||||
|
||||
* tests/Makefile.am (TESTS_ENVIRONMENT): Define
|
||||
$GUILE_LOAD_COMPILED_PATH.
|
||||
|
||||
diff -ubB --show-c-function /tmp/nix-build-bzqif52j6ypbhrkyg13ikc1wzscg2h7s-libchop-0.5.drv-0/libchop-0.5/tests/Makefile.in.orig /tmp/nix-build-bzqif52j6ypbhrkyg13ikc1wzscg2h7s-libchop-0.5.drv-0/libchop-0.5/tests/Makefile.in
|
||||
--- libchop-0.5/tests/Makefile.in 2011-11-14 17:42:14.000000000 +0100
|
||||
+++ libchop-0.5/tests/Makefile.in 2011-11-14 17:42:17.000000000 +0100
|
||||
@@ -1048,6 +1048,7 @@ TESTS = $(check_PROGRAMS) $(check_SCRIPT
|
||||
TESTS_ENVIRONMENT = \
|
||||
PATH="$(top_builddir)/utils:$$PATH" \
|
||||
GUILE_LOAD_PATH="$(abs_top_srcdir)/guile2:$(abs_top_builddir)/guile2:$$GUILE_LOAD_PATH" \
|
||||
+ GUILE_LOAD_COMPILED_PATH="$(abs_top_builddir)/guile2:$$GUILE_LOAD_COMPILED_PATH" \
|
||||
libchop_libdir="$(abs_top_builddir)/src" \
|
||||
top_srcdir="$(abs_top_srcdir)" srcdir="$(abs_srcdir)/utils"
|
@ -0,0 +1,25 @@
|
||||
From 55effc94ec10100673edc1400bc8cb086fd8dc3b Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= <ludo@gnu.org>
|
||||
Date: Mon, 14 Nov 2011 17:56:46 +0100
|
||||
Subject: [PATCH] tests: Export $XDG_CACHE_HOME in `utils/backup'.
|
||||
|
||||
* tests/utils/backup (XDG_CACHE_HOME): Export.
|
||||
---
|
||||
tests/utils/backup | 1 +
|
||||
1 files changed, 1 insertions(+), 0 deletions(-)
|
||||
|
||||
diff --git a/tests/utils/backup b/tests/utils/backup
|
||||
index d8db141..171060f 100755
|
||||
--- a/tests/utils/backup
|
||||
+++ b/tests/utils/backup
|
||||
@@ -21,6 +21,7 @@ source "${srcdir:-$PWD}/lib.sh"
|
||||
DB_FILE=",,backup.db"
|
||||
TMP_FILE=",,backup.tmp"
|
||||
XDG_CACHE_HOME="$PWD/backup-cache"
|
||||
+export XDG_CACHE_HOME
|
||||
|
||||
chop_CLEANUP_HOOK='rm -rf "$XDG_CACHE_HOME" "$DB_FILE" "$TMP_FILE"'
|
||||
|
||||
--
|
||||
1.7.6
|
||||
|
@ -9,7 +9,12 @@ stdenv.mkDerivation rec {
|
||||
sha256 = "0i7gl0c99pf6794bbwm3iha6a0bciqq969mgwwv6gm9phiiy5s8b";
|
||||
};
|
||||
|
||||
patches = [ ./guile-ascii-deserialize.patch ];
|
||||
patches =
|
||||
[ ./0001-tests-Simplify-deserialize.c.patch
|
||||
./0002-block-indexer-hash-Fix-off-by-n-in-ASCII-deserializa.patch
|
||||
./0003-fix-test-makefile.patch
|
||||
./0004-tests-Export-XDG_CACHE_HOME-in-utils-backup.patch
|
||||
];
|
||||
|
||||
buildNativeInputs = [ pkgconfig gperf ];
|
||||
buildInputs =
|
||||
|
@ -1,15 +0,0 @@
|
||||
This fixes `deserialize-object/ascii'.
|
||||
|
||||
diff --git a/guile2/chop/objects.scm b/guile2/chop/objects.scm
|
||||
index 1849195..1aa521d 100644
|
||||
--- a/guile2/chop/objects.scm
|
||||
+++ b/guile2/chop/objects.scm
|
||||
@@ -133,7 +133,7 @@
|
||||
|
||||
(define (deserialize-object/ascii class str)
|
||||
"Deserialize STR and return a new instance of CLASS that corresponds."
|
||||
- (%deserialize-object class (string->utf8 str) %ascii))
|
||||
+ (%deserialize-object class (string->pointer str) %ascii))
|
||||
|
||||
(define (deserialize-object/binary class bv)
|
||||
"Deserialize BV and return a new instance of CLASS that corresponds."
|
Loading…
Reference in New Issue
Block a user