diff options
Diffstat (limited to 'test/regression/filter-badenc-segv.c')
-rw-r--r-- | test/regression/filter-badenc-segv.c | 50 |
1 files changed, 50 insertions, 0 deletions
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 <stdio.h> +#include <stdlib.h> + +#include <parserutils/parserutils.h> + +#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 <filename>\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; +} |