From fc80fc27bf89226b96bdc6ddbe1847c3908ea6a2 Mon Sep 17 00:00:00 2001 From: John Mark Bell Date: Sun, 9 Nov 2008 12:42:11 +0000 Subject: Fix double free of filter read codec when resetting to an unsupported encoding. svn path=/trunk/libparserutils/; revision=5657 --- test/regression/filter-badenc-segv.c | 50 ++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 test/regression/filter-badenc-segv.c (limited to 'test/regression') diff --git a/test/regression/filter-badenc-segv.c b/test/regression/filter-badenc-segv.c new file mode 100644 index 0000000..c6c07f6 --- /dev/null +++ b/test/regression/filter-badenc-segv.c @@ -0,0 +1,50 @@ +#include +#include + +#include + +#include "input/filter.h" + +#include "testutils.h" + +static void *myrealloc(void *ptr, size_t len, void *pw) +{ + UNUSED(pw); + + return realloc(ptr, len); +} + +int main(int argc, char **argv) +{ + parserutils_filter *input; + parserutils_filter_optparams params; + + if (argc != 2) { + printf("Usage: %s \n", argv[0]); + return 1; + } + + assert(parserutils_initialise(argv[1], myrealloc, NULL) == + PARSERUTILS_OK); + + assert(parserutils_filter_create("UTF-8", myrealloc, NULL, &input) == + PARSERUTILS_OK); + + params.encoding.name = "GBK"; + assert(parserutils_filter_setopt(input, + PARSERUTILS_FILTER_SET_ENCODING, ¶ms) == + PARSERUTILS_BADENCODING); + + params.encoding.name = "GBK"; + assert(parserutils_filter_setopt(input, + PARSERUTILS_FILTER_SET_ENCODING, ¶ms) == + PARSERUTILS_BADENCODING); + + parserutils_filter_destroy(input); + + assert(parserutils_finalise(myrealloc, NULL) == PARSERUTILS_OK); + + printf("PASS\n"); + + return 0; +} -- cgit v1.2.3