From 3df8a592ec92e39289e5dca4bfd2fb4e0db9e44c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Franti=C5=A1ek=20Hrdina?= Date: Thu, 16 Mar 2023 12:14:39 +0100 Subject: [PATCH] Adding test /CoreOS/expat/Sanity/handlers --- Sanity/handlers/ElementHandler.c | 40 +++++++++++++ Sanity/handlers/SetCdataSectionHandler.c | 37 ++++++++++++ Sanity/handlers/SetCharacterDataHandler.c | 27 +++++++++ Sanity/handlers/SetCommentHandler.c | 27 +++++++++ Sanity/handlers/SetDefaultHandler.c | 27 +++++++++ Sanity/handlers/SetDefaultHandlerExpand.c | 27 +++++++++ Sanity/handlers/SetExternalEntityRefHandler.c | 27 +++++++++ Sanity/handlers/SetNamespaceDeclHandler.c | 39 +++++++++++++ Sanity/handlers/SetNotStandaloneHandler.c | 27 +++++++++ Sanity/handlers/SetNotationDeclHandler.c | 27 +++++++++ .../SetProcessingInstructionHandler.c | 27 +++++++++ Sanity/handlers/SetUnknownEncodingHandler.c | 31 ++++++++++ .../handlers/SetUnparsedEntityDeclHandler.c | 27 +++++++++ Sanity/handlers/main.fmf | 25 ++++++++ Sanity/handlers/runtest.sh | 57 +++++++++++++++++++ 15 files changed, 472 insertions(+) create mode 100644 Sanity/handlers/ElementHandler.c create mode 100644 Sanity/handlers/SetCdataSectionHandler.c create mode 100644 Sanity/handlers/SetCharacterDataHandler.c create mode 100644 Sanity/handlers/SetCommentHandler.c create mode 100644 Sanity/handlers/SetDefaultHandler.c create mode 100644 Sanity/handlers/SetDefaultHandlerExpand.c create mode 100644 Sanity/handlers/SetExternalEntityRefHandler.c create mode 100644 Sanity/handlers/SetNamespaceDeclHandler.c create mode 100644 Sanity/handlers/SetNotStandaloneHandler.c create mode 100644 Sanity/handlers/SetNotationDeclHandler.c create mode 100644 Sanity/handlers/SetProcessingInstructionHandler.c create mode 100644 Sanity/handlers/SetUnknownEncodingHandler.c create mode 100644 Sanity/handlers/SetUnparsedEntityDeclHandler.c create mode 100644 Sanity/handlers/main.fmf create mode 100755 Sanity/handlers/runtest.sh diff --git a/Sanity/handlers/ElementHandler.c b/Sanity/handlers/ElementHandler.c new file mode 100644 index 0000000..c6f844c --- /dev/null +++ b/Sanity/handlers/ElementHandler.c @@ -0,0 +1,40 @@ +#include +#include +#include +#include +#include + +static void default_handler(void *userData, const XML_Char *s, int len) +{ + fprintf(stderr, "default_handler.\n"); +} + +void XML_startElement (void * userData, + const XML_Char * name, const XML_Char ** atts) +{ + printf("Start....... %s\n", name ? name : ""); +} + +void XML_endElement (void * userData, + const XML_Char * name) +{ + printf("End......... %s\n", name ? name : ""); +} + + +int main(int argc, char **argv) +{ + static const char pythontest1[] = { '\0', '\r', '\n' }; + XML_Parser p; + + p = XML_ParserCreate(NULL); + + XML_SetElementHandler(p, XML_startElement, XML_endElement); + + if (XML_Parse(p, pythontest1, 3, 1) == 0) + puts("parse fail"); + + XML_ParserFree(p); + + return 0; +} diff --git a/Sanity/handlers/SetCdataSectionHandler.c b/Sanity/handlers/SetCdataSectionHandler.c new file mode 100644 index 0000000..ed57c0d --- /dev/null +++ b/Sanity/handlers/SetCdataSectionHandler.c @@ -0,0 +1,37 @@ +#include +#include +#include +#include +#include + +static void default_handler(void *userData, const XML_Char *s, int len) +{ + fprintf(stderr, "default_handler.\n"); +} + +void XML_startCdata (void * userData) +{ +} + +void XML_endCdata (void * userData) +{ + +} + + +int main(int argc, char **argv) +{ + static const char pythontest1[] = { '\0', '\r', '\n' }; + XML_Parser p; + + p = XML_ParserCreate(NULL); + + XML_SetCdataSectionHandler(p, XML_startCdata, XML_endCdata); + + if (XML_Parse(p, pythontest1, 3, 1) == 0) + puts("parse fail"); + + XML_ParserFree(p); + + return 0; +} diff --git a/Sanity/handlers/SetCharacterDataHandler.c b/Sanity/handlers/SetCharacterDataHandler.c new file mode 100644 index 0000000..593e418 --- /dev/null +++ b/Sanity/handlers/SetCharacterDataHandler.c @@ -0,0 +1,27 @@ +#include +#include +#include +#include +#include + +static void default_handler(void *userData, const XML_Char *s, int len) +{ + fprintf(stderr, "default_handler.\n"); +} + +int main(int argc, char **argv) +{ + static const char pythontest1[] = { '\0', '\r', '\n' }; + XML_Parser p; + + p = XML_ParserCreate(NULL); + + XML_SetCharacterDataHandler(p, default_handler); + + if (XML_Parse(p, pythontest1, 3, 1) == 0) + puts("parse fail"); + + XML_ParserFree(p); + + return 0; +} diff --git a/Sanity/handlers/SetCommentHandler.c b/Sanity/handlers/SetCommentHandler.c new file mode 100644 index 0000000..ba13648 --- /dev/null +++ b/Sanity/handlers/SetCommentHandler.c @@ -0,0 +1,27 @@ +#include +#include +#include +#include +#include + +static void default_handler(void *userData, const XML_Char *s, int len) +{ + fprintf(stderr, "default_handler.\n"); +} + +int main(int argc, char **argv) +{ + static const char pythontest1[] = { '\0', '\r', '\n' }; + XML_Parser p; + + p = XML_ParserCreate(NULL); + + XML_SetCommentHandler(p, default_handler); + + if (XML_Parse(p, pythontest1, 3, 1) == 0) + puts("parse fail"); + + XML_ParserFree(p); + + return 0; +} diff --git a/Sanity/handlers/SetDefaultHandler.c b/Sanity/handlers/SetDefaultHandler.c new file mode 100644 index 0000000..ab20929 --- /dev/null +++ b/Sanity/handlers/SetDefaultHandler.c @@ -0,0 +1,27 @@ +#include +#include +#include +#include +#include + +static void default_handler(void *userData, const XML_Char *s, int len) +{ + fprintf(stderr, "default_handler.\n"); +} + +int main(int argc, char **argv) +{ + static const char pythontest1[] = { '\0', '\r', '\n' }; + XML_Parser p; + + p = XML_ParserCreate(NULL); + + XML_SetDefaultHandler(p, default_handler); + + if (XML_Parse(p, pythontest1, 3, 1) == 0) + puts("parse fail"); + + XML_ParserFree(p); + + return 0; +} diff --git a/Sanity/handlers/SetDefaultHandlerExpand.c b/Sanity/handlers/SetDefaultHandlerExpand.c new file mode 100644 index 0000000..ffe5b51 --- /dev/null +++ b/Sanity/handlers/SetDefaultHandlerExpand.c @@ -0,0 +1,27 @@ +#include +#include +#include +#include +#include + +static void default_handler(void *userData, const XML_Char *s, int len) +{ + fprintf(stderr, "default_handler.\n"); +} + +int main(int argc, char **argv) +{ + static const char pythontest1[] = { '\0', '\r', '\n' }; + XML_Parser p; + + p = XML_ParserCreate(NULL); + + XML_SetDefaultHandlerExpand(p, default_handler); + + if (XML_Parse(p, pythontest1, 3, 1) == 0) + puts("parse fail"); + + XML_ParserFree(p); + + return 0; +} diff --git a/Sanity/handlers/SetExternalEntityRefHandler.c b/Sanity/handlers/SetExternalEntityRefHandler.c new file mode 100644 index 0000000..be17fa1 --- /dev/null +++ b/Sanity/handlers/SetExternalEntityRefHandler.c @@ -0,0 +1,27 @@ +#include +#include +#include +#include +#include + +static void default_handler(void *userData, const XML_Char *s, int len) +{ + fprintf(stderr, "default_handler.\n"); +} + +int main(int argc, char **argv) +{ + static const char pythontest1[] = { '\0', '\r', '\n' }; + XML_Parser p; + + p = XML_ParserCreate(NULL); + + XML_SetExternalEntityRefHandler(p, default_handler); + + if (XML_Parse(p, pythontest1, 3, 1) == 0) + puts("parse fail"); + + XML_ParserFree(p); + + return 0; +} diff --git a/Sanity/handlers/SetNamespaceDeclHandler.c b/Sanity/handlers/SetNamespaceDeclHandler.c new file mode 100644 index 0000000..20ac1ec --- /dev/null +++ b/Sanity/handlers/SetNamespaceDeclHandler.c @@ -0,0 +1,39 @@ +#include +#include +#include +#include +#include + +static void default_handler(void *userData, const XML_Char *s, int len) +{ + fprintf(stderr, "default_handler.\n"); +} + +void XML_startNamespaceDecl(void *userData, + const XML_Char *prefix, + const XML_Char *uri) +{ +} + +void XML_endNamespaceDecl (void * userData, + const XML_Char * prefix) +{ +} + + +int main(int argc, char **argv) +{ + static const char pythontest1[] = { '\0', '\r', '\n' }; + XML_Parser p; + + p = XML_ParserCreate(NULL); + + XML_SetNamespaceDeclHandler(p, XML_startNamespaceDecl, XML_endNamespaceDecl); + + if (XML_Parse(p, pythontest1, 3, 1) == 0) + puts("parse fail"); + + XML_ParserFree(p); + + return 0; +} diff --git a/Sanity/handlers/SetNotStandaloneHandler.c b/Sanity/handlers/SetNotStandaloneHandler.c new file mode 100644 index 0000000..d256a0c --- /dev/null +++ b/Sanity/handlers/SetNotStandaloneHandler.c @@ -0,0 +1,27 @@ +#include +#include +#include +#include +#include + +static void default_handler(void *userData, const XML_Char *s, int len) +{ + fprintf(stderr, "default_handler.\n"); +} + +int main(int argc, char **argv) +{ + static const char pythontest1[] = { '\0', '\r', '\n' }; + XML_Parser p; + + p = XML_ParserCreate(NULL); + + XML_SetNotStandaloneHandler(p, default_handler); + + if (XML_Parse(p, pythontest1, 3, 1) == 0) + puts("parse fail"); + + XML_ParserFree(p); + + return 0; +} diff --git a/Sanity/handlers/SetNotationDeclHandler.c b/Sanity/handlers/SetNotationDeclHandler.c new file mode 100644 index 0000000..a1c03c5 --- /dev/null +++ b/Sanity/handlers/SetNotationDeclHandler.c @@ -0,0 +1,27 @@ +#include +#include +#include +#include +#include + +static void default_handler(void *userData, const XML_Char *s, int len) +{ + fprintf(stderr, "default_handler.\n"); +} + +int main(int argc, char **argv) +{ + static const char pythontest1[] = { '\0', '\r', '\n' }; + XML_Parser p; + + p = XML_ParserCreate(NULL); + + XML_SetNotationDeclHandler(p, default_handler); + + if (XML_Parse(p, pythontest1, 3, 1) == 0) + puts("parse fail"); + + XML_ParserFree(p); + + return 0; +} diff --git a/Sanity/handlers/SetProcessingInstructionHandler.c b/Sanity/handlers/SetProcessingInstructionHandler.c new file mode 100644 index 0000000..636e5a6 --- /dev/null +++ b/Sanity/handlers/SetProcessingInstructionHandler.c @@ -0,0 +1,27 @@ +#include +#include +#include +#include +#include + +static void default_handler(void *userData, const XML_Char *s, int len) +{ + fprintf(stderr, "default_handler.\n"); +} + +int main(int argc, char **argv) +{ + static const char pythontest1[] = { '\0', '\r', '\n' }; + XML_Parser p; + + p = XML_ParserCreate(NULL); + + XML_SetProcessingInstructionHandler(p, default_handler); + + if (XML_Parse(p, pythontest1, 3, 1) == 0) + puts("parse fail"); + + XML_ParserFree(p); + + return 0; +} diff --git a/Sanity/handlers/SetUnknownEncodingHandler.c b/Sanity/handlers/SetUnknownEncodingHandler.c new file mode 100644 index 0000000..41a811f --- /dev/null +++ b/Sanity/handlers/SetUnknownEncodingHandler.c @@ -0,0 +1,31 @@ +#include +#include +#include +#include +#include + + +void XML_unknownEncoding(void *encodingHandlerData, + const XML_Char *name, + XML_Encoding *info) +{ +} + +int main(int argc, char **argv) +{ + void *encodingHandlerData; + + static const char pythontest1[] = { '\0', '\r', '\n' }; + XML_Parser p; + + p = XML_ParserCreate(NULL); + + XML_SetUnknownEncodingHandler(p, XML_unknownEncoding, encodingHandlerData); + + if (XML_Parse(p, pythontest1, 3, 1) == 0) + puts("parse fail"); + + XML_ParserFree(p); + + return 0; +} diff --git a/Sanity/handlers/SetUnparsedEntityDeclHandler.c b/Sanity/handlers/SetUnparsedEntityDeclHandler.c new file mode 100644 index 0000000..0ed9a37 --- /dev/null +++ b/Sanity/handlers/SetUnparsedEntityDeclHandler.c @@ -0,0 +1,27 @@ +#include +#include +#include +#include +#include + +static void default_handler(void *userData, const XML_Char *s, int len) +{ + fprintf(stderr, "default_handler.\n"); +} + +int main(int argc, char **argv) +{ + static const char pythontest1[] = { '\0', '\r', '\n' }; + XML_Parser p; + + p = XML_ParserCreate(NULL); + + XML_SetUnparsedEntityDeclHandler(p, default_handler); + + if (XML_Parse(p, pythontest1, 3, 1) == 0) + puts("parse fail"); + + XML_ParserFree(p); + + return 0; +} diff --git a/Sanity/handlers/main.fmf b/Sanity/handlers/main.fmf new file mode 100644 index 0000000..d6b7404 --- /dev/null +++ b/Sanity/handlers/main.fmf @@ -0,0 +1,25 @@ +summary: Test for C expat handlers +description: |4 + Jan Lieskovsky + + C handlers test used for checking CVE-2009-3560. In the future we + could expand this for checking valid xml files as well. + + http://www.xml.com/pub/a/1999/09/expat/index.html +contact: fhrdina@redhat.com +component: + - expat +test: ./runtest.sh +framework: beakerlib +recommend: + - expat + - expat-devel + - gcc +duration: 15m +enabled: true +tag: + - Tier1 +tier: '1' +extra-nitrate: TC#0032973 +extra-summary: /CoreOS/expat/Sanity/handlers +extra-task: /CoreOS/expat/Sanity/handlers diff --git a/Sanity/handlers/runtest.sh b/Sanity/handlers/runtest.sh new file mode 100755 index 0000000..d30af18 --- /dev/null +++ b/Sanity/handlers/runtest.sh @@ -0,0 +1,57 @@ +#!/bin/bash +# vim: dict=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# runtest.sh of /CoreOS/expat/Sanity/handlers +# Description: Test for C expat handlers +# Author: Petr Splichal +# Jan Lieskovsky +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# Copyright (c) 2009 Red Hat, Inc. All rights reserved. +# +# This copyrighted material is made available to anyone wishing +# to use, modify, copy, or redistribute it subject to the terms +# and conditions of the GNU General Public License version 2. +# +# This program is distributed in the hope that it will be +# useful, but WITHOUT ANY WARRANTY; without even the implied +# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +# PURPOSE. See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public +# License along with this program; if not, write to the Free +# Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +# Boston, MA 02110-1301, USA. +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +# Include rhts environment +. /usr/share/beakerlib/beakerlib.sh || exit 1 + +PACKAGE="expat" + +rlJournalStart + rlPhaseStartSetup + rlAssertRpm $PACKAGE + rlRun "TmpDir=\`mktemp -d\`" 0 "Creating tmp directory" + rlRun "HandlersList=\`ls *.c | sed 's/\.c$//'\`" \ + 0 "Getting list of handlers" + rlRun "cp *.c $TmpDir" 0 "Copying source files" + rlRun "pushd $TmpDir" + rlPhaseEnd + + rlPhaseStartTest + for handler in $HandlersList ; do + rlRun "gcc $handler.c -o $handler -l expat" 0 "Compiling $handler" + rlRun "./$handler" 0 "Testing $handler" + done + rlPhaseEnd + + rlPhaseStartCleanup + rlRun "popd" + rlRun "rm -r $TmpDir" 0 "Removing tmp directory" + rlPhaseEnd +rlJournalPrintText +rlJournalEnd