diff --git a/gsoap-doxygen-tabs.patch b/gsoap-doxygen-tabs.patch new file mode 100644 index 0000000000000000000000000000000000000000..cc7291e539629ee4ad0080ff7de523664a456d17 --- /dev/null +++ b/gsoap-doxygen-tabs.patch @@ -0,0 +1,12 @@ +diff -ur gsoap-2.8.75.orig/gsoap/doc/doxygen_header.html gsoap-2.8.75/gsoap/doc/doxygen_header.html +--- gsoap-2.8.75.orig/gsoap/doc/doxygen_header.html 2019-01-14 18:17:20.000000000 +0100 ++++ gsoap-2.8.75/gsoap/doc/doxygen_header.html 2019-07-23 08:06:29.628000000 +0200 +@@ -4,7 +4,7 @@ + + + Genivia - $title +- ++ + + + diff --git a/gsoap-libtool.patch b/gsoap-libtool.patch new file mode 100644 index 0000000000000000000000000000000000000000..fcd66f0b6edb544017870aa0a39b2244c03b544f --- /dev/null +++ b/gsoap-libtool.patch @@ -0,0 +1,135 @@ +diff -ur gsoap-2.8.orig/configure.ac gsoap-2.8/configure.ac +--- gsoap-2.8.orig/configure.ac 2020-06-30 21:02:21.000000000 +0200 ++++ gsoap-2.8/configure.ac 2020-07-21 22:24:34.231537804 +0200 +@@ -16,8 +16,7 @@ + AM_PROG_LEX + AC_PROG_YACC + AC_PROG_CPP +-AC_PROG_RANLIB +-#AM_PROG_LIBTOOL ++AM_PROG_LIBTOOL + AC_PROG_LN_S + AC_PROG_AWK + AC_PROG_INSTALL +@@ -307,15 +306,15 @@ + WSDL2H_EXTRA_LIBS="${WSDL2H_EXTRA_LIBS} -lgnutls -lgcrypt -lgpg-error -lz" + SAMPLE_INCLUDES= + SAMPLE_SSL_LIBS="-lgnutls -lgcrypt -lgpg-error -lz" +- WSDL2H_SOAP_CPP_LIB="libgsoapssl++.a" ++ WSDL2H_SOAP_CPP_LIB="libgsoapssl++.la" + else + AC_MSG_RESULT(no) + WSDL2H_EXTRA_FLAGS="-DWITH_OPENSSL -DWITH_GZIP" + # compile with wsdl2h when OPENSSL is available +- WSDL2H_EXTRA_LIBS="${WSDL2H_EXTRA_LIBS} -lssl -lcrypto -lz" ++ WSDL2H_EXTRA_LIBS="${WSDL2H_EXTRA_LIBS} -lcrypto" + SAMPLE_INCLUDES= + SAMPLE_SSL_LIBS="-lssl -lcrypto -lz" +- WSDL2H_SOAP_CPP_LIB="libgsoapssl++.a" ++ WSDL2H_SOAP_CPP_LIB="libgsoapssl++.la" + fi + if test -n "$ZLIB"; then + WSDL2H_EXTRA_FLAGS="-I${ZLIB}/include ${WSDL2H_EXTRA_FLAGS}" +@@ -334,7 +333,7 @@ + WSDL2H_EXTRA_FLAGS= + SAMPLE_SSL_LIBS= + SAMPLE_INCLUDES= +- WSDL2H_SOAP_CPP_LIB="libgsoap++.a" ++ WSDL2H_SOAP_CPP_LIB="libgsoap++.la" + fi + AM_CONDITIONAL([WITH_OPENSSL], [test "x$with_openssl" = "xyes" -a "x$with_gnutls" != "xyes"]) + AC_SUBST(WSDL2H_EXTRA_FLAGS) +diff -ur gsoap-2.8.orig/gsoap/Makefile.am gsoap-2.8/gsoap/Makefile.am +--- gsoap-2.8.orig/gsoap/Makefile.am 2020-06-30 21:02:23.000000000 +0200 ++++ gsoap-2.8/gsoap/Makefile.am 2020-07-21 22:24:34.231537804 +0200 +@@ -34,20 +34,30 @@ + dom_cpp.cpp: dom.cpp + $(LN_S) -f $(top_srcdir)/gsoap/dom.cpp dom_cpp.cpp + +-lib_LIBRARIES = libgsoap.a libgsoap++.a libgsoapck.a libgsoapck++.a libgsoapssl.a libgsoapssl++.a ++lib_LTLIBRARIES = libgsoap.la libgsoap++.la libgsoapck.la libgsoapck++.la libgsoapssl.la libgsoapssl++.la + +-libgsoap_a_SOURCES = stdsoap2.c dom.c +-libgsoap_a_CFLAGS = $(SOAPCPP2_DEBUG) $(SOAPCPP2_NONAMESPACES) $(SOAPCPP2_NO_C_LOCALE) $(SOAPCPP2_IPV6) $(SOAPCPP2_IPV6_V6ONLY) -D$(platform) +-libgsoap___a_SOURCES = stdsoap2_cpp.cpp dom_cpp.cpp +-libgsoap___a_CXXFLAGS = $(SOAPCPP2_DEBUG) $(SOAPCPP2_NONAMESPACES) $(SOAPCPP2_NO_C_LOCALE) $(SOAPCPP2_IPV6) $(SOAPCPP2_IPV6_V6ONLY) -D$(platform) +-libgsoapck_a_SOURCES = stdsoap2_ck.c dom.c +-libgsoapck_a_CFLAGS = $(SOAPCPP2_DEBUG) $(SOAPCPP2_NONAMESPACES) $(SOAPCPP2_NO_C_LOCALE) $(SOAPCPP2_IPV6) $(SOAPCPP2_IPV6_V6ONLY) -D$(platform) -DWITH_COOKIES +-libgsoapck___a_SOURCES = stdsoap2_ck_cpp.cpp dom_cpp.cpp +-libgsoapck___a_CXXFLAGS = $(SOAPCPP2_DEBUG) $(SOAPCPP2_NONAMESPACES) $(SOAPCPP2_NO_C_LOCALE) $(SOAPCPP2_IPV6) $(SOAPCPP2_IPV6_V6ONLY) -D$(platform) -DWITH_COOKIES +-libgsoapssl_a_SOURCES = stdsoap2_ssl.c dom.c +-libgsoapssl_a_CFLAGS = $(SOAPCPP2_DEBUG) $(SOAPCPP2_NONAMESPACES) $(SOAPCPP2_NO_C_LOCALE) $(SOAPCPP2_IPV6) $(SOAPCPP2_IPV6_V6ONLY) -D$(platform) $(WSDL2H_EXTRA_FLAGS) -DWITH_DOM -DWITH_COOKIES +-libgsoapssl___a_SOURCES = stdsoap2_ssl_cpp.cpp dom_cpp.cpp +-libgsoapssl___a_CXXFLAGS = $(SOAPCPP2_DEBUG) $(SOAPCPP2_NONAMESPACES) $(SOAPCPP2_NO_C_LOCALE) $(SOAPCPP2_IPV6) $(SOAPCPP2_IPV6_V6ONLY) -D$(platform) $(WSDL2H_EXTRA_FLAGS) -DWITH_DOM -DWITH_COOKIES ++SOVERSION = $(shell grep 'define VERSION' $(srcdir)/src/soapcpp2.h | cut -d '"' -f 2) ++ ++libgsoap_la_SOURCES = stdsoap2.c dom.c ++libgsoap_la_CFLAGS = $(SOAPCPP2_DEBUG) $(SOAPCPP2_NONAMESPACES) $(SOAPCPP2_NO_C_LOCALE) $(SOAPCPP2_IPV6) $(SOAPCPP2_IPV6_V6ONLY) -D$(platform) ++libgsoap_la_LDFLAGS = -release $(SOVERSION) ++libgsoap___la_SOURCES = stdsoap2_cpp.cpp dom_cpp.cpp ++libgsoap___la_CXXFLAGS = $(SOAPCPP2_DEBUG) $(SOAPCPP2_NONAMESPACES) $(SOAPCPP2_NO_C_LOCALE) $(SOAPCPP2_IPV6) $(SOAPCPP2_IPV6_V6ONLY) -D$(platform) ++libgsoap___la_LDFLAGS = -release $(SOVERSION) ++libgsoapck_la_SOURCES = stdsoap2_ck.c dom.c ++libgsoapck_la_CFLAGS = $(SOAPCPP2_DEBUG) $(SOAPCPP2_NONAMESPACES) $(SOAPCPP2_NO_C_LOCALE) $(SOAPCPP2_IPV6) $(SOAPCPP2_IPV6_V6ONLY) -D$(platform) -DWITH_COOKIES ++libgsoapck_la_LDFLAGS = -release $(SOVERSION) ++libgsoapck___la_SOURCES = stdsoap2_ck_cpp.cpp dom_cpp.cpp ++libgsoapck___la_CXXFLAGS = $(SOAPCPP2_DEBUG) $(SOAPCPP2_NONAMESPACES) $(SOAPCPP2_NO_C_LOCALE) $(SOAPCPP2_IPV6) $(SOAPCPP2_IPV6_V6ONLY) -D$(platform) -DWITH_COOKIES ++libgsoapck___la_LDFLAGS = -release $(SOVERSION) ++libgsoapssl_la_SOURCES = stdsoap2_ssl.c dom.c ++libgsoapssl_la_CFLAGS = $(SOAPCPP2_DEBUG) $(SOAPCPP2_NONAMESPACES) $(SOAPCPP2_NO_C_LOCALE) $(SOAPCPP2_IPV6) $(SOAPCPP2_IPV6_V6ONLY) -D$(platform) $(WSDL2H_EXTRA_FLAGS) -DWITH_DOM -DWITH_COOKIES ++libgsoapssl_la_LDFLAGS = -release $(SOVERSION) ++libgsoapssl_la_LIBADD = -lssl -lcrypto -lz ++libgsoapssl___la_SOURCES = stdsoap2_ssl_cpp.cpp dom_cpp.cpp ++libgsoapssl___la_CXXFLAGS = $(SOAPCPP2_DEBUG) $(SOAPCPP2_NONAMESPACES) $(SOAPCPP2_NO_C_LOCALE) $(SOAPCPP2_IPV6) $(SOAPCPP2_IPV6_V6ONLY) -D$(platform) $(WSDL2H_EXTRA_FLAGS) -DWITH_DOM -DWITH_COOKIES ++libgsoapssl___la_LDFLAGS = -release $(SOVERSION) ++libgsoapssl___la_LIBADD = -lssl -lcrypto -lz + + BUILT_SOURCES = stdsoap2_cpp.cpp dom_cpp.cpp stdsoap2_ck.c stdsoap2_ck_cpp.cpp stdsoap2_ssl.c stdsoap2_ssl_cpp.cpp + +diff -ur gsoap-2.8.orig/gsoap/samples/autotest/Makefile.am gsoap-2.8/gsoap/samples/autotest/Makefile.am +--- gsoap-2.8.orig/gsoap/samples/autotest/Makefile.am 2020-06-30 21:02:24.000000000 +0200 ++++ gsoap-2.8/gsoap/samples/autotest/Makefile.am 2020-07-21 22:24:34.231537804 +0200 +@@ -14,7 +14,7 @@ + WSDLINPUT=$(top_srcdir)/gsoap/samples/autotest/examples.wsdl + SOAPHEADER=$(top_srcdir)/gsoap/samples/autotest/examples.h + SOAP_CPP_SRC=soapC.cpp soapServer.cpp +-SOAP_CPP_LIB=$(top_builddir)/gsoap/libgsoap++.a ++SOAP_CPP_LIB=$(top_builddir)/gsoap/libgsoap++.la + + $(SOAP_CPP_SRC) : $(WSDLINPUT) + $(WSDL) $(WSDL_FLAGS) $(WSDLINPUT) +diff -ur gsoap-2.8.orig/gsoap/samples/databinding/Makefile.am gsoap-2.8/gsoap/samples/databinding/Makefile.am +--- gsoap-2.8.orig/gsoap/samples/databinding/Makefile.am 2020-06-30 21:02:25.000000000 +0200 ++++ gsoap-2.8/gsoap/samples/databinding/Makefile.am 2020-07-21 22:24:34.232537807 +0200 +@@ -14,7 +14,7 @@ + WSDLINPUT=$(top_srcdir)/gsoap/samples/databinding/address.xsd + SOAPHEADER=$(top_srcdir)/gsoap/samples/databinding/address.h + SOAP_CPP_SRC=addressC.cpp +-SOAP_CPP_LIB=$(top_builddir)/gsoap/libgsoap++.a ++SOAP_CPP_LIB=$(top_builddir)/gsoap/libgsoap++.la + + $(SOAP_CPP_SRC) : $(WSDLINPUT) + $(WSDL) $(WSDL_FLAGS) $(WSDLINPUT) +diff -ur gsoap-2.8.orig/gsoap/samples/Makefile.defines gsoap-2.8/gsoap/samples/Makefile.defines +--- gsoap-2.8.orig/gsoap/samples/Makefile.defines 2020-06-30 21:02:25.000000000 +0200 ++++ gsoap-2.8/gsoap/samples/Makefile.defines 2020-07-21 22:24:34.232537807 +0200 +@@ -13,13 +13,13 @@ + SOAP_C_CORE=soapC.c + SOAP_C_CLIENT=soapClient.c $(SOAP_C_CORE) + SOAP_C_SERVER=soapServer.c $(SOAP_C_CORE) +-SOAP_C_LIB=$(top_builddir)/gsoap/libgsoap.a +-SOAP_C_LIB_CK=$(top_builddir)/gsoap/libgsoapck.a +-SOAP_C_LIB_SSL=$(top_builddir)/gsoap/libgsoapssl.a ++SOAP_C_LIB=$(top_builddir)/gsoap/libgsoap.la ++SOAP_C_LIB_CK=$(top_builddir)/gsoap/libgsoapck.la ++SOAP_C_LIB_SSL=$(top_builddir)/gsoap/libgsoapssl.la + + SOAP_CPP_CORE=soapC.cpp + SOAP_CPP_CLIENT=soapClient.cpp $(SOAP_CPP_CORE) + SOAP_CPP_SERVER=soapServer.cpp $(SOAP_CPP_CORE) +-SOAP_CPP_LIB=$(top_builddir)/gsoap/libgsoap++.a +-SOAP_CPP_LIB_CK=$(top_builddir)/gsoap/libgsoapck++.a +-SOAP_CPP_LIB_SSL=$(top_builddir)/gsoap/libgsoapssl++.a ++SOAP_CPP_LIB=$(top_builddir)/gsoap/libgsoap++.la ++SOAP_CPP_LIB_CK=$(top_builddir)/gsoap/libgsoapck++.la ++SOAP_CPP_LIB_SSL=$(top_builddir)/gsoap/libgsoapssl++.la diff --git a/gsoap-plugins-hardening.patch b/gsoap-plugins-hardening.patch new file mode 100644 index 0000000000000000000000000000000000000000..3803e224087719a054a09f24b280b1e8a4d18e83 --- /dev/null +++ b/gsoap-plugins-hardening.patch @@ -0,0 +1,336 @@ +diff -ur gsoap2-code-r191/gsoap/plugin/httpda.c gsoap2-code-r192/gsoap/plugin/httpda.c +--- gsoap2-code-r191/gsoap/plugin/httpda.c 2020-06-30 21:06:47.000000000 +0200 ++++ gsoap2-code-r192/gsoap/plugin/httpda.c 2020-11-19 19:29:25.000000000 +0100 +@@ -1460,7 +1460,7 @@ + MUTEX_LOCK(http_da_session_lock); + + for (session = http_da_session; session; session = session->next) +- if (!strcmp(session->realm, realm) && !strcmp(session->nonce, nonce) && !strcmp(session->opaque, opaque)) ++ if (session->realm && session->nonce && session->opaque && !strcmp(session->realm, realm) && !strcmp(session->nonce, nonce) && !strcmp(session->opaque, opaque)) + break; + + if (session) +diff -ur gsoap2-code-r191/gsoap/plugin/wsaapi.c gsoap2-code-r192/gsoap/plugin/wsaapi.c +--- gsoap2-code-r191/gsoap/plugin/wsaapi.c 2020-06-30 21:06:47.000000000 +0200 ++++ gsoap2-code-r192/gsoap/plugin/wsaapi.c 2020-11-19 19:29:25.000000000 +0100 +@@ -1056,7 +1056,7 @@ + oldheader->SOAP_WSA(FaultTo)->Address = oldheader->SOAP_WSA(ReplyTo)->Address; + } + /* use FaultTo */ +- if (oldheader && oldheader->SOAP_WSA(FaultTo) && !strcmp(oldheader->SOAP_WSA(FaultTo)->Address, soap_wsa_noneURI)) ++ if (oldheader && oldheader->SOAP_WSA(FaultTo) && oldheader->SOAP_WSA(FaultTo)->Address && !strcmp(oldheader->SOAP_WSA(FaultTo)->Address, soap_wsa_noneURI)) + return soap_send_empty_response(soap, SOAP_OK); /* HTTP ACCEPTED */ + soap->header = NULL; + /* allocate a new header */ +diff -ur gsoap2-code-r191/gsoap/plugin/wsseapi.c gsoap2-code-r192/gsoap/plugin/wsseapi.c +--- gsoap2-code-r191/gsoap/plugin/wsseapi.c 2020-10-16 23:01:09.000000000 +0200 ++++ gsoap2-code-r192/gsoap/plugin/wsseapi.c 2020-11-19 19:29:25.000000000 +0100 +@@ -2957,7 +2957,7 @@ + else + { + /* check password text */ +- if (!strcmp(token->Password->__item, password)) ++ if (token->Password->__item && !strcmp(token->Password->__item, password)) + return SOAP_OK; + } + } +@@ -3119,6 +3119,7 @@ + { + _wsse__BinarySecurityToken *token = soap_wsse_BinarySecurityToken(soap, id); + DBGFUN1("soap_wsse_get_BinarySecurityToken", "id=%s", id?id:""); ++ *data = NULL; + if (token) + { + *valueType = token->ValueType; +@@ -3149,9 +3150,9 @@ + X509 *cert = NULL; + char *valueType = NULL; + #if (OPENSSL_VERSION_NUMBER >= 0x0090800fL) +- const unsigned char *data; ++ const unsigned char *data = NULL; + #else +- unsigned char *data; ++ unsigned char *data = NULL; + #endif + int size; + DBGFUN1("soap_wsse_get_BinarySecurityTokenX509", "id=%s", id?id:""); +@@ -3271,7 +3272,7 @@ + SOAP_FMAC2 + soap_wsse_add_SecurityContextToken(struct soap *soap, const char *id, const char *identifier) + { +- char *URI; ++ char *URI = NULL; + size_t l; + _wsse__Security *security = soap_wsse_add_Security(soap); + DBGFUN2("soap_wsse_add_SecurityContextToken", "id=%s", id, "identifier=%s", identifier?identifier:""); +@@ -3653,7 +3654,7 @@ + { + ds__SignatureType *signature = soap_wsse_add_Signature(soap); + const char *method = NULL; +- char *sig; ++ char *sig = NULL; + int siglen; + int err; + const char *c14ninclude = soap->c14ninclude; +@@ -3884,10 +3885,10 @@ + && signature->SignedInfo + && signature->SignatureValue) + { +- char *sig; +- const char *sigval; ++ char *sig = NULL; ++ const char *sigval = NULL; + int method, bits, siglen, sigvallen; +- struct soap_dom_element *elt; ++ struct soap_dom_element *elt = NULL; + /* check that we are using the intended signature algorithm */ + if (soap_wsse_get_SignedInfo_SignatureMethod(soap, &method, &bits)) + return soap->error; +@@ -3944,8 +3945,8 @@ + for (att = prt->atts; att; att = att->next) + { + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "DOM attribute = %s\n", att->name)); +- if (!strncmp(att->name, "xmlns:", 6) && !soap_lookup_ns(soap, att->name + 6, strlen(att->name + 6))) +- soap_attribute(soap, att->name, att->text); ++ if (att->name && att->text && !strncmp(att->name, "xmlns:", 6) && !soap_lookup_ns(soap, att->name + 6, strlen(att->name + 6))) ++ (void)soap_attribute(soap, att->name, att->text); + } + } + /* push xmlns="..." */ +@@ -3953,9 +3954,9 @@ + { + for (att = prt->atts; att; att = att->next) + { +- if (!strcmp(att->name, "xmlns")) ++ if (att->name && att->text && !strcmp(att->name, "xmlns")) + { +- soap_attribute(soap, att->name, att->text); ++ (void)soap_attribute(soap, att->name, att->text); + prt = NULL; + break; + } +@@ -4239,17 +4240,17 @@ + for (att = prt->atts; att; att = att->next) + { + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "DOM attribute = %s\n", att->name)); +- if (!strncmp(att->name, "xmlns:", 6) && !soap_lookup_ns(soap, att->name + 6, strlen(att->name + 6))) +- soap_attribute(soap, att->name, att->text); ++ if (att->name && att->text && !strncmp(att->name, "xmlns:", 6) && !soap_lookup_ns(soap, att->name + 6, strlen(att->name + 6))) ++ (void)soap_attribute(soap, att->name, att->text); + } + } + for (prt = dom->prnt; prt; prt = prt->prnt) + { + for (att = prt->atts; att; att = att->next) + { +- if (!strcmp(att->name, "xmlns")) ++ if (att->name && att->text && !strcmp(att->name, "xmlns")) + { +- soap_attribute(soap, att->name, att->text); ++ (void)soap_attribute(soap, att->name, att->text); + prt = NULL; + break; + } +@@ -5090,7 +5091,7 @@ + if (elt) + { + att = soap_att_get(elt, NULL, "EncodingType"); +- if (att) ++ if (att && soap_att_get_text(att)) + keybase = !strcmp(soap_att_get_text(att), wsse_Base64BinaryURI); + att = soap_att_get(elt, NULL, "ValueType"); + keytype = soap_att_get_text(att); +@@ -5140,7 +5141,7 @@ + { + int keylen; + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Verify EncryptedKey %s alg=%x\n", keyalgo, data->deco_alg)); +- if (keydata) ++ if (keytype && keydata) + { + if (!strcmp(keytype, wsse_X509v3URI)) + { +@@ -6111,9 +6112,8 @@ + */ + static int soap_p_hash(struct soap *soap, const char *hmac_key, size_t hmac_key_len, const char *secret, size_t secretlen, int alg, char HA[], size_t HA_len, char temp[], char *phash, size_t phashlen) + { +- char *buffer; + size_t i; +- buffer = (char*)SOAP_MALLOC(soap, HA_len + secretlen); ++ char *buffer = (char*)SOAP_MALLOC(soap, HA_len + secretlen); + if (!buffer) + return soap->error = SOAP_EOM; + i = 0; +@@ -7351,7 +7351,7 @@ + soap_strcpy(URI + 1, l + 1, Id); + } + #endif +- if (!strcmp(tag, "SOAP-ENV:Body")) ++ if (tag && !strcmp(tag, "SOAP-ENV:Body")) + { + if (soap_element(soap, tag, id, type) + || soap_element_start_end_out(soap, NULL)) +@@ -7401,7 +7401,7 @@ + } + if (data && (!data->encid || soap_tagsearch(data->encid, tag))) + { +- if (!strcmp(tag, "SOAP-ENV:Body")) ++ if (tag && !strcmp(tag, "SOAP-ENV:Body")) + { + if (soap_wsse_encrypt_end(soap)) + return soap->error; +diff -ur gsoap2-code-r191/gsoap/plugin/wsseapi.cpp gsoap2-code-r192/gsoap/plugin/wsseapi.cpp +--- gsoap2-code-r191/gsoap/plugin/wsseapi.cpp 2020-10-16 23:01:09.000000000 +0200 ++++ gsoap2-code-r192/gsoap/plugin/wsseapi.cpp 2020-11-19 19:29:25.000000000 +0100 +@@ -2957,7 +2957,7 @@ + else + { + /* check password text */ +- if (!strcmp(token->Password->__item, password)) ++ if (token->Password->__item && !strcmp(token->Password->__item, password)) + return SOAP_OK; + } + } +@@ -3119,6 +3119,7 @@ + { + _wsse__BinarySecurityToken *token = soap_wsse_BinarySecurityToken(soap, id); + DBGFUN1("soap_wsse_get_BinarySecurityToken", "id=%s", id?id:""); ++ *data = NULL; + if (token) + { + *valueType = token->ValueType; +@@ -3149,9 +3150,9 @@ + X509 *cert = NULL; + char *valueType = NULL; + #if (OPENSSL_VERSION_NUMBER >= 0x0090800fL) +- const unsigned char *data; ++ const unsigned char *data = NULL; + #else +- unsigned char *data; ++ unsigned char *data = NULL; + #endif + int size; + DBGFUN1("soap_wsse_get_BinarySecurityTokenX509", "id=%s", id?id:""); +@@ -3271,7 +3272,7 @@ + SOAP_FMAC2 + soap_wsse_add_SecurityContextToken(struct soap *soap, const char *id, const char *identifier) + { +- char *URI; ++ char *URI = NULL; + size_t l; + _wsse__Security *security = soap_wsse_add_Security(soap); + DBGFUN2("soap_wsse_add_SecurityContextToken", "id=%s", id, "identifier=%s", identifier?identifier:""); +@@ -3653,7 +3654,7 @@ + { + ds__SignatureType *signature = soap_wsse_add_Signature(soap); + const char *method = NULL; +- char *sig; ++ char *sig = NULL; + int siglen; + int err; + const char *c14ninclude = soap->c14ninclude; +@@ -3884,10 +3885,10 @@ + && signature->SignedInfo + && signature->SignatureValue) + { +- char *sig; +- const char *sigval; ++ char *sig = NULL; ++ const char *sigval = NULL; + int method, bits, siglen, sigvallen; +- struct soap_dom_element *elt; ++ struct soap_dom_element *elt = NULL; + /* check that we are using the intended signature algorithm */ + if (soap_wsse_get_SignedInfo_SignatureMethod(soap, &method, &bits)) + return soap->error; +@@ -3944,8 +3945,8 @@ + for (att = prt->atts; att; att = att->next) + { + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "DOM attribute = %s\n", att->name)); +- if (!strncmp(att->name, "xmlns:", 6) && !soap_lookup_ns(soap, att->name + 6, strlen(att->name + 6))) +- soap_attribute(soap, att->name, att->text); ++ if (att->name && att->text && !strncmp(att->name, "xmlns:", 6) && !soap_lookup_ns(soap, att->name + 6, strlen(att->name + 6))) ++ (void)soap_attribute(soap, att->name, att->text); + } + } + /* push xmlns="..." */ +@@ -3953,9 +3954,9 @@ + { + for (att = prt->atts; att; att = att->next) + { +- if (!strcmp(att->name, "xmlns")) ++ if (att->name && att->text && !strcmp(att->name, "xmlns")) + { +- soap_attribute(soap, att->name, att->text); ++ (void)soap_attribute(soap, att->name, att->text); + prt = NULL; + break; + } +@@ -4239,17 +4240,17 @@ + for (att = prt->atts; att; att = att->next) + { + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "DOM attribute = %s\n", att->name)); +- if (!strncmp(att->name, "xmlns:", 6) && !soap_lookup_ns(soap, att->name + 6, strlen(att->name + 6))) +- soap_attribute(soap, att->name, att->text); ++ if (att->name && att->text && !strncmp(att->name, "xmlns:", 6) && !soap_lookup_ns(soap, att->name + 6, strlen(att->name + 6))) ++ (void)soap_attribute(soap, att->name, att->text); + } + } + for (prt = dom->prnt; prt; prt = prt->prnt) + { + for (att = prt->atts; att; att = att->next) + { +- if (!strcmp(att->name, "xmlns")) ++ if (att->name && att->text && !strcmp(att->name, "xmlns")) + { +- soap_attribute(soap, att->name, att->text); ++ (void)soap_attribute(soap, att->name, att->text); + prt = NULL; + break; + } +@@ -5090,7 +5091,7 @@ + if (elt) + { + att = soap_att_get(elt, NULL, "EncodingType"); +- if (att) ++ if (att && soap_att_get_text(att)) + keybase = !strcmp(soap_att_get_text(att), wsse_Base64BinaryURI); + att = soap_att_get(elt, NULL, "ValueType"); + keytype = soap_att_get_text(att); +@@ -5140,7 +5141,7 @@ + { + int keylen; + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Verify EncryptedKey %s alg=%x\n", keyalgo, data->deco_alg)); +- if (keydata) ++ if (keytype && keydata) + { + if (!strcmp(keytype, wsse_X509v3URI)) + { +@@ -6111,9 +6112,8 @@ + */ + static int soap_p_hash(struct soap *soap, const char *hmac_key, size_t hmac_key_len, const char *secret, size_t secretlen, int alg, char HA[], size_t HA_len, char temp[], char *phash, size_t phashlen) + { +- char *buffer; + size_t i; +- buffer = (char*)SOAP_MALLOC(soap, HA_len + secretlen); ++ char *buffer = (char*)SOAP_MALLOC(soap, HA_len + secretlen); + if (!buffer) + return soap->error = SOAP_EOM; + i = 0; +@@ -7351,7 +7351,7 @@ + soap_strcpy(URI + 1, l + 1, Id); + } + #endif +- if (!strcmp(tag, "SOAP-ENV:Body")) ++ if (tag && !strcmp(tag, "SOAP-ENV:Body")) + { + if (soap_element(soap, tag, id, type) + || soap_element_start_end_out(soap, NULL)) +@@ -7401,7 +7401,7 @@ + } + if (data && (!data->encid || soap_tagsearch(data->encid, tag))) + { +- if (!strcmp(tag, "SOAP-ENV:Body")) ++ if (tag && !strcmp(tag, "SOAP-ENV:Body")) + { + if (soap_wsse_encrypt_end(soap)) + return soap->error; diff --git a/gsoap-url-parse-hardening.patch b/gsoap-url-parse-hardening.patch new file mode 100644 index 0000000000000000000000000000000000000000..21bc4df7f2388af9c36d7e4efb0fa198b20cf4c1 --- /dev/null +++ b/gsoap-url-parse-hardening.patch @@ -0,0 +1,36 @@ +diffdiff -ur gsoap2-code-r193/gsoap/samples/calc_vs2005/calc_vs2005/stdsoap2.cpp gsoap2-code-r194/gsoap/samples/calc_vs2005/calc_vs2005/stdsoap2.cpp +--- gsoap2-code-r193/gsoap/samples/calc_vs2005/calc_vs2005/stdsoap2.cpp 2021-01-17 20:13:51.000000000 +0100 ++++ gsoap2-code-r194/gsoap/samples/calc_vs2005/calc_vs2005/stdsoap2.cpp 2021-01-22 23:49:26.000000000 +0100 +@@ -21246,7 +21243,7 @@ + if (*s == ':') + { + s++; +- if (*s != '@') ++ if (*s != '@' && s < t) + { + l = t - s + 1; + r = r + strlen(r) + 1; +diff -ur gsoap2-code-r193/gsoap/stdsoap2.c gsoap2-code-r194/gsoap/stdsoap2.c +--- gsoap2-code-r193/gsoap/stdsoap2.c 2021-01-17 20:13:51.000000000 +0100 ++++ gsoap2-code-r194/gsoap/stdsoap2.c 2021-01-22 23:49:26.000000000 +0100 +@@ -21246,7 +21243,7 @@ + if (*s == ':') + { + s++; +- if (*s != '@') ++ if (*s != '@' && s < t) + { + l = t - s + 1; + r = r + strlen(r) + 1; +diff -ur gsoap2-code-r193/gsoap/stdsoap2.cpp gsoap2-code-r194/gsoap/stdsoap2.cpp +--- gsoap2-code-r193/gsoap/stdsoap2.cpp 2021-01-17 20:13:51.000000000 +0100 ++++ gsoap2-code-r194/gsoap/stdsoap2.cpp 2021-01-22 23:49:26.000000000 +0100 +@@ -21246,7 +21243,7 @@ + if (*s == ':') + { + s++; +- if (*s != '@') ++ if (*s != '@' && s < t) + { + l = t - s + 1; + r = r + strlen(r) + 1; diff --git a/gsoap-wsse.patch b/gsoap-wsse.patch new file mode 100644 index 0000000000000000000000000000000000000000..c7d62a9c2e3d24eec99359f41d0224ebc961d358 --- /dev/null +++ b/gsoap-wsse.patch @@ -0,0 +1,94 @@ +diff -ur gsoap2-code-r187/gsoap/plugin/wsseapi.c gsoap2-code-r188/gsoap/plugin/wsseapi.c +--- gsoap2-code-r187/gsoap/plugin/wsseapi.c 2020-06-30 21:06:47.000000000 +0200 ++++ gsoap2-code-r188/gsoap/plugin/wsseapi.c 2020-07-22 22:20:04.000000000 +0200 +@@ -3956,9 +3956,12 @@ + if (!strcmp(att->name, "xmlns")) + { + soap_attribute(soap, att->name, att->text); ++ prt = NULL; + break; + } + } ++ if (!prt) ++ break; + } + } + else +@@ -4247,9 +4250,12 @@ + if (!strcmp(att->name, "xmlns")) + { + soap_attribute(soap, att->name, att->text); ++ prt = NULL; + break; + } + } ++ if (!prt) ++ break; + } + } + else +@@ -4984,7 +4990,7 @@ + if (soap_tagsearch(data->encid, "ds:Signature")) + { + /* support ds:Signature encryption only with HTTP chunking, otherwise content length is incorrect */ +- if ((soap->omode & SOAP_IO) == SOAP_IO_BUFFER) ++ if ((soap->omode & SOAP_IO) == SOAP_IO_BUFFER || (soap->omode & SOAP_IO) == SOAP_IO_FLUSH) + soap->omode = (soap->omode & ~SOAP_IO) | SOAP_IO_CHUNK; + } + } +@@ -7573,6 +7579,8 @@ + soap->c14ninclude = NULL; /* but do not render inclusive namespaces */ + if ((soap->mode & SOAP_XML_INDENT)) + soap->count += 5; /* correction for soap->ns = 0: add \n+indent */ ++ if ((soap->mode & SOAP_XML_DEFAULTNS)) ++ soap->count -= 2*(9 + strlen(ds_URI)); /* correct for xmlns="http://www.w3.org/2000/09/xmldsig#" added to SignedInfo and ds:SignatureValue */ + } + soap_out_ds__SignedInfoType(soap, "ds:SignedInfo", 0, signature->SignedInfo, NULL); + soap_out__ds__SignatureValue(soap, "ds:SignatureValue", 0, &signature->SignatureValue, NULL); +diff -ur gsoap2-code-r187/gsoap/plugin/wsseapi.cpp gsoap2-code-r188/gsoap/plugin/wsseapi.cpp +--- gsoap2-code-r187/gsoap/plugin/wsseapi.cpp 2020-06-30 21:06:47.000000000 +0200 ++++ gsoap2-code-r188/gsoap/plugin/wsseapi.cpp 2020-07-22 22:20:04.000000000 +0200 +@@ -3956,9 +3956,12 @@ + if (!strcmp(att->name, "xmlns")) + { + soap_attribute(soap, att->name, att->text); ++ prt = NULL; + break; + } + } ++ if (!prt) ++ break; + } + } + else +@@ -4247,9 +4250,12 @@ + if (!strcmp(att->name, "xmlns")) + { + soap_attribute(soap, att->name, att->text); ++ prt = NULL; + break; + } + } ++ if (!prt) ++ break; + } + } + else +@@ -4984,7 +4990,7 @@ + if (soap_tagsearch(data->encid, "ds:Signature")) + { + /* support ds:Signature encryption only with HTTP chunking, otherwise content length is incorrect */ +- if ((soap->omode & SOAP_IO) == SOAP_IO_BUFFER) ++ if ((soap->omode & SOAP_IO) == SOAP_IO_BUFFER || (soap->omode & SOAP_IO) == SOAP_IO_FLUSH) + soap->omode = (soap->omode & ~SOAP_IO) | SOAP_IO_CHUNK; + } + } +@@ -7573,6 +7579,8 @@ + soap->c14ninclude = NULL; /* but do not render inclusive namespaces */ + if ((soap->mode & SOAP_XML_INDENT)) + soap->count += 5; /* correction for soap->ns = 0: add \n+indent */ ++ if ((soap->mode & SOAP_XML_DEFAULTNS)) ++ soap->count -= 2*(9 + strlen(ds_URI)); /* correct for xmlns="http://www.w3.org/2000/09/xmldsig#" added to SignedInfo and ds:SignatureValue */ + } + soap_out_ds__SignedInfoType(soap, "ds:SignedInfo", 0, signature->SignedInfo, NULL); + soap_out__ds__SignatureValue(soap, "ds:SignatureValue", 0, &signature->SignatureValue, NULL); diff --git a/gsoap.spec b/gsoap.spec new file mode 100644 index 0000000000000000000000000000000000000000..8fc6f6b1b689d28977204eff6f088ef601560ae4 --- /dev/null +++ b/gsoap.spec @@ -0,0 +1,135 @@ +Summary: Generator Tools for Coding SOAP/XML Web Services in C and C++ +Name: gsoap +Version: 2.8.104 +Release: 1 +License: GPLv2+ with exceptions +URL: http://gsoap2.sourceforge.net/ +Source0: http://downloads.sourceforge.net/gsoap2/%{name}_%{version}.zip +Source1: soapcpp2.1 +Source2: wsdl2h.1 +Source3: index.html +Patch0: %{name}-libtool.patch +Patch1: %{name}-doxygen-tabs.patch +Patch2: gsoap-wsse.patch +Patch3: gsoap-plugins-hardening.patch +Patch4: gsoap-url-parse-hardening.patch +BuildRequires: gcc-c++ flex bison dos2unix openssl-devel zlib-devel autoconf automake libtool +BuildRequires: doxygen graphviz make +%description +The gSOAP Web services development toolkit offers an XML to C/C++ +language binding to ease the development of SOAP/XML Web services in C +and C/C++. + +%package devel +Summary: Devel libraries and headers for linking with gSOAP generated stubs +Requires: %name = %version-%release +%description devel +gSOAP libraries, headers and generators for linking with and creating +gSOAP generated stubs. + +%package doc +Summary: Documentation for gSOAP +BuildArch: noarch +%description doc +gSOAP documentation in html. + +%prep +%setup -q -n gsoap-2.8 +%patch0 -p1 +%patch1 -p1 +%patch2 -p1 +%patch3 -p1 +%patch4 -p1 +find gsoap/samples/autotest/databinding/examples -name '*.xml' \ + -exec chmod a-x {} ';' +chmod a-x gsoap/doc/fonts/* +dos2unix -k README.txt LICENSE.txt NOTES.txt GPLv2_license.txt \ + gsoap/plugin/sessions.c gsoap/plugin/sessions.h +rm -rf gsoap/extras gsoap/mod_gsoap gsoap/Symbian +sed 's!$(top_srcdir)/gsoap/extras/\*!!' -i gsoap/Makefile.am +rm -rf gsoap/doc/apache gsoap/doc/wininet gsoap/doc/isapi +rm -rf gsoap/bin +rm gsoap/samples/rest/person +rm gsoap/samples/wcf/Basic/TransportSecurity/calculator +rm gsoap/VisualStudio2005/wsdl2h/wsdl2h/soapcpp2.exe +rm gsoap/samples/webserver/opt{C.c,H.h,Stub.h} +rm gsoap/VisualStudio2005/wsdl2h/wsdl2h/wsdl{C.cpp,H.h,Stub.h} +find . -name .DS_Store -exec rm {} ';' + +%build +autoreconf --install --force +%configure --disable-static --prefix=/usr --enable-ipv6 --enable-samples +make +cp -pr gsoap/doc gsoap/doc-build +pushd gsoap/doc-build +rm -rf */html +for f in */Doxyfile ; do + ( cd $(dirname $f) ; doxygen Doxyfile ) +done +rm README.txt index.html +rm doxygen_footer.html doxygen_header.html +rm guide/index.md guide/stdsoap2.h soapdoc2.html +rm GeniviaLogo2_trans_noslogan.png +rm genivia_content.css genivia_tabs.css +rm */Doxyfile +rm */html/genivia_tabs.css +rm -f */doxygen_sqlite3.db +popd +install -m 644 -p %{SOURCE3} gsoap/doc-build + +%install +make install DESTDIR=%{buildroot} +rm -f %{buildroot}/%_libdir/*.la +rm %{buildroot}/%_datadir/gsoap/plugin/testmsgr-httpda.o +rm %{buildroot}/%_datadir/gsoap/plugin/testmsgr-smdevp.o +mkdir -p %{buildroot}/%_mandir/man1 +install -m 644 -p %{SOURCE1} %{SOURCE2} %{buildroot}/%_mandir/man1 + +%check +make check + +%files +%doc factsheet.pdf NOTES.txt README.txt +%license LICENSE.txt GPLv2_license.txt +%_libdir/libgsoap-*.so +%_libdir/libgsoap++-*.so +%_libdir/libgsoapck-*.so +%_libdir/libgsoapck++-*.so +%_libdir/libgsoapssl-*.so +%_libdir/libgsoapssl++-*.so + +%files devel +%_bindir/soapcpp2 +%_bindir/wsdl2h +%_mandir/man1/soapcpp2.1* +%_mandir/man1/wsdl2h.1* +%_libdir/libgsoap.so +%_libdir/libgsoap++.so +%_libdir/libgsoapck.so +%_libdir/libgsoapck++.so +%_libdir/libgsoapssl.so +%_libdir/libgsoapssl++.so +%_includedir/stdsoap2.h +%dir %_datadir/gsoap +%dir %_datadir/gsoap/import +%_datadir/gsoap/import/* +%dir %_datadir/gsoap/WS +%_datadir/gsoap/WS/* +%dir %_datadir/gsoap/custom +%_datadir/gsoap/custom/* +%dir %_datadir/gsoap/plugin +%_datadir/gsoap/plugin/* +%_libdir/pkgconfig/gsoapck.pc +%_libdir/pkgconfig/gsoapck++.pc +%_libdir/pkgconfig/gsoap.pc +%_libdir/pkgconfig/gsoap++.pc +%_libdir/pkgconfig/gsoapssl.pc +%_libdir/pkgconfig/gsoapssl++.pc + +%files doc +%doc gsoap/doc-build/* +%license LICENSE.txt GPLv2_license.txt + +%changelog +* Mon Sep 6 2021 wulei - 2.8.104-1 +- package init diff --git a/gsoap_2.8.104.zip b/gsoap_2.8.104.zip new file mode 100644 index 0000000000000000000000000000000000000000..63ef46368eb0ec69dfb662820bcb70a30d00dd2e Binary files /dev/null and b/gsoap_2.8.104.zip differ diff --git a/index.html b/index.html new file mode 100644 index 0000000000000000000000000000000000000000..e018e983d2229805c1be0be135c025e5839239ec --- /dev/null +++ b/index.html @@ -0,0 +1,67 @@ + + + +Genivia gSOAP Documentation + + + +

Documentation

+ +

User guide

+ +

the gSOAP user guide

+ +

XML data bindings

+ +

XML data binding documentation with examples describes the WSDL/XSD mapping tools to and from C/C++ types and QT C++ types. Explains the use of typemap.dat for wsdl2h with an explanation of the gSOAP C/C++ type and name binding conventions. Also describes memory management of objects and C/C++ data serialization. Includes an "Address Book" and a data structure "Graph" data binding example.

+ +

XML DOM API and the domcpp tool

+ +

XML DOM API and domcpp presents the DOM API with the updated XML DOM library v5 for C/C++, and the domcpp code generation tool to simplify DOM API coding.

+ +

XML-RPC, JSON, and the jsoncpp tool

+ +

XML-RPC/JSON and jsoncpp presents the XML-RPC and JSON/JSONPath library for C/C++, and the jsoncpp code generator to simplify JSON coding. JSON-RPC/REST client/server examples are included.

+ +

cURL for gSOAP

+ +

the CURL plugin enables cURL with gSOAP for client applications. Examples are included.

+ +

iOS for gSOAP

+ +

iOS for gSOAP describes the use of our iOS plugin for gSOAP to develop apps. Four example iOS apps are explained.

+ +

Security and authentication

+ +

WS-Trust describes the WS-Trust extensible framework. Includes SAML token creation, signing, verification, PSHA1, and more. Requires the WS-Security plugin.

+ +

WS-Security describes the WSSE plugin for WS-Security authentication, digital signatures, and encryption.

+ +

WS-Security lite describes client-server authentication with a light-weight implementation of WS-Security. Use this plugin for username authentication tokens and timestamps over HTTPS. Does not support signature and encryption.

+ +

WSSE smdevp signed message digest engine describes the digest engine of the WSSE plugin.

+ +

WSSE mecevp streaming message encryption and decryption engine describes the encryption engine of the WSSE plugin.

+ +

HTTP digest authentication describes the httpda plugin for secure HTTP authentication to replace HTTP basic authentication that is not secure over non-encrypted channels.

+ +

HTTP server session management describes the HTTP server session management plugin for secure server-side HTTP sessions with cookies.

+ +

Reliable messaging and message addressing

+ +

WS-Addressing describes the WSA plugin for WS-Addressing of messages and message (re)routing.

+ +

WS-ReliableMessaging describes the WSRM plugin for WS-ReliableMessaging message sequence creation and message sequence assured delivery with (optional) message resends.

+ +

WSRM mq plugin for inbound message queueing and message replay describes the MQ plugin for message queueing in support of WS-RM NoDiscard behavior.

+ +

Service discovery gSOAP plugin

+ +

WS-Discovery describes the WSDD plugin for service discovery with WS-Discovery.

+ +

Legacy gSOAP UDDI v2 API

+ +

UDDI v2 API describes the gSOAP UDDI v2 API.

+ + + diff --git a/soapcpp2.1 b/soapcpp2.1 new file mode 100644 index 0000000000000000000000000000000000000000..fbfb08402915eb1ab2d94ad597421df3bd29b934 --- /dev/null +++ b/soapcpp2.1 @@ -0,0 +1,158 @@ +.\" Hey, EMACS: -*- nroff -*- +.\" First parameter, NAME, should be all caps +.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection +.\" other parameters are allowed: see man(7), man(1) +.TH SOAPCPP2 1 "Juni 27, 2003" +.\" Please adjust this date whenever revising the manpage. +.\" +.\" Some roff macros, for reference: +.\" .nh disable hyphenation +.\" .hy enable hyphenation +.\" .ad l left justify +.\" .ad b justify to both left and right margins +.\" .nf disable filling +.\" .fi enable filling +.\" .br insert line break +.\" .sp insert n+1 empty lines +.\" for manpage-specific macros, see man(7) +.SH NAME +soapcpp2 \- the gSOAP Stub and Skeleton Compiler for C and C++ +.SH SYNOPSIS +\fBsoapcpp2\fR [\fIOPTIONS\fR] \fIINPUT\fR +.SH DESCRIPTION +Please see /usr/share/doc/gsoap-doc/soapdoc2.html for details. +.PP +Create stubs and client and server code from input \fIINPUT\fR or +standard input if \fIINPUT\fR is not specified. +.SH OPTIONS +.TP +\fB\-0\fR +No SOAP, generate REST source code. +.TP +\fB\-1\fR +Generate SOAP 1.1 source code. +.TP +\fB\-2\fR +Generate SOAP 1.2 source code. +.TP +\fB\-A\fR +Require HTTP SOAPAction headers to invoke server-side operations. +.TP +\fB\-a\fR +Use HTTP SOAPAction with WS-Addressing to invoke server-side operations. +.TP +\fB\-b\fR +Serialize byte arrays char[N] as string. +.TP +\fB\-C\fR +Generate client-side source code only. +.TP +\fB\-c\fR +Generate C source code. +.TP +\fB\-c++\fR +Generate C++ source code (default). +.TP +\fB\-c++11\fR +Generate C++ source code optimized for C++11 (compile with -std=c++11). +.TP +\fB\-d\fIpath\fR +Use \fIpath\fR to save files. +.TP +\fB\-Ec\fR +Generate extra functions for deep copying. +.TP +\fB\-Ed\fR +Generate extra functions for deep deletion. +.TP +\fB\-Et\fR +Generate extra functions for data traversals with callback functions. +.TP +\fB\-e\fR +Generate SOAP RPC encoding style bindings (also use \fB-1\fR or \fB-2\fR). +.TP +\fB\-f\fIN\fR +Multiple soapC files, with \fIN\fR serializer definitions per file (N>=10). +.TP +\fB\-g\fR +Generate XML sample messages in template format for testmsgr. +.TP +\fB\-h\fR +Display help info and exit. +.TP +\fB\-I\fIpath\fR +Use \fIpath\fR(s) for \fB#import\fR (paths separated with ':'). +.TP +\fB\-i\fR +Generate C++ service proxies and objects inherited from \fBsoap\fR struct. +.TP +\fB\-j\fR +Generate C++ service proxies and objects that share a \fBsoap\fR struct. +.TP +\fB\-L\fR +Do not generate \fBsoapClientLib\fR/\fBsoapServerLib\fR. +.TP +\fB\-l\fR +Generate linkable modules (experimental). +.TP +\fB\-m\fR +Generate source code for the Matlab(tm) MEX compiler (deprecated). +.TP +\fB\-n\fR +Use service name to rename service functions and namespace table. +.TP +\fB\-p\fIname\fR +Save files with new prefix \fIname\fR instead of \fBsoap\fR. +.TP +\fB\-Q\fIname\fR +Use \fIname\fR as the C++ namespace, including custom serializers. +.TP +\fB\-q\fIname\fR +Use \fIname\fR as the C++ namespace, excluding custom serializers. +.TP +\fB\-r\fR +Generate soapReadme.md report. +.TP +\fB\-S\fR +Generate server-side source code only. +.TP +\fB\-s\fR +Generate stub and skeleton functions with strict XML validation checks. +.TP +\fB\-T\fR +Generate server auto-test source code. +.TP +\fB\-t\fR +Generate source code for fully \fBxsi:type\fR typed SOAP/XML messages. +.TP +\fB\-u\fR +Uncomment WSDL/schema output by suppressing XML comments. +.TP +\fB\-V\fR +Display the current version and exit. +.TP +\fB\-v\fR +Verbose output. +.TP +\fB\-w\fR +Do not generate WSDL and schema files. +.TP +\fB\-x\fR +Do not generate sample XML message files. +.TP +\fB\-y\fR +Include C/C++ type access information in sample XML messages. +.TP +\fB\-z1\fR +Compatibility: Generate old-style C++ service proxies and objects. +.TP +\fB\-z2\fR +Compatibility with 2.7.x: Omit XML output for NULL pointers. +.TP +\fB\-z3\fR +Compatibility up to 2.8.30: \fB_param_N\fR indexing and nillable pointers. +.SH SEE ALSO +.BR wsdl2h (1). +.SH AUTHOR +This manual page was written by Thomas Wana , +for the Debian project (but may be used by others). diff --git a/wsdl2h.1 b/wsdl2h.1 new file mode 100644 index 0000000000000000000000000000000000000000..d6f41936575c795f3817cb8ad958db04bfd45a7f --- /dev/null +++ b/wsdl2h.1 @@ -0,0 +1,215 @@ +.\" Hey, EMACS: -*- nroff -*- +.\" First parameter, NAME, should be all caps +.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection +.\" other parameters are allowed: see man(7), man(1) +.TH WSDL2H 1 "December 23, 2004" +.\" Please adjust this date whenever revising the manpage. +.\" +.\" Some roff macros, for reference: +.\" .nh disable hyphenation +.\" .hy enable hyphenation +.\" .ad l left justify +.\" .ad b justify to both left and right margins +.\" .nf disable filling +.\" .fi enable filling +.\" .br insert line break +.\" .sp insert n+1 empty lines +.\" for manpage-specific macros, see man(7) +.SH NAME +wsdl2h \- the gSOAP WSDL/WADL/XSD processor for C and C++ +.SH SYNOPSIS +\fBwsdl2h\fR [\fIOPTIONS\fR] \fISOURCE\fR ... +.SH DESCRIPTION +Please see /usr/share/doc/gsoap-doc/soapdoc2.html for details. +.PP +Converts a \fBWSDL\fR or \fBXSD\fR input file, or from an HTTP address, +\fISOURCE\fR to a declaration file that can be parsed by +\fBsoapcpp2\fR(1). If no \fISOURCE\fR argument is specified, read +from standard input. +.SH OPTIONS +.TP +\fB\-a\fR +Generate indexed struct names for local elements with anonymous types. +.TP +\fB\-b\fR +Bi-directional operations (duplex ops) added to serve one-way responses. +.TP +\fB\-c\fR +Generate C source code. +.TP +\fB\-c++\fR +Generate C++ source code (default). +.TP +\fB\-c++11\fR +Generate C++11 source code. +.TP +\fB\-D\fR +Make attribute members with default/fixed values optional with pointers. +.TP +\fB\-d\fR +Use DOM to populate \fBxs\fR:\fIany\fR, \fBxs\fR:\fIanyType\fR and +\fBxs\fR:\fIanyAttribute\fR. +.TP +\fB\-e\fR +Do not qualify enum names. +.TP +\fB\-F\fR +Add transient members to structs to simulate struct-type derivation in C. +.TP +\fB\-f\fR +Generate flat C++ class hierarchy by removing inheritance. +.TP +\fB\-g\fR +Generate global top-level element and attribute declarations. +.TP +\fB\-h\fR +Display help info and exit. +.TP +\fB\-I\fIpath\fR +Use \fIpath\fR to locate WSDL and XSD files. +.TP +\fB\-i\fR +Do not import (advanced option). +.TP +\fB\-j\fR +Do not generate \fBSOAP_ENV__Header\fR and \fBSOAP_ENV__Detail\fR definitions. +.TP +\fB\-k\fR +Do not generate \fBSOAP_ENV__Header\fR mustUnderstand qualifiers. +.TP +\fB\-L\fR +Generate less documentation by removing generic @note comments. +.TP +\fB\-l\fR +Display license information. +.TP +\fB\-M\fR +Suppress error "must understand element with \fBwsdl\fR:\fIrequired\fR='true'". +.TP +\fB\-m\fR +Use \fBxsd.h\fR module to import primitive types. +.TP +\fB\-N\fIname\fR +Use \fIname\fR for service prefixes to produce a service for each binding. +.TP +\fB\-n\fIname\fR +Use \fIname\fR as the base namespace prefix instead of \fBns\fR. +.TP +\fB\-O1\fR +Optimize by omitting duplicate choice/sequence members. +.TP +\fB\-O2\fR +Optimize -O1 and omit unused schema types (unreachable from roots). +.TP +\fB\-O3\fR +Optimize -O2 and omit unused schema root attributes. +.TP +\fB\-O4\fR +Optimize -O3 and omit unused schema root elements (use only with WSDLs). +.TP +\fB\-Ow2\fR +Optimize -O2 while retaining all derived types of used base types. +.TP +\fB\-Ow3\fR +Optimize -O3 while retaining all derived types of used base types. +.TP +\fB\-Ow4\fR +Optimize -O4 while retaining all derived types of used base types. +.TP +\fB\-o\fIfile\fR +Output to file \fIfile\fR. +.TP +\fB\-P\fR +Do not create polymorphic types inherited from \fBxsd__anyType\fR. +.TP +\fB\-p\fR +Create polymorphic types inherited from base \fBxsd__anyType\fR. +.TP +\fB\-Q\fR +Make \fBxsd__anySimpleType\fR equal to \fBxsd__anyType\fR to use as the base type. +.TP +\fB\-q\fIname\fR +Use \fIname\fR for the C++ namespace of all declarations. +.TP +\fB\-R\fR +Generate REST operations for REST bindings specified in a WSDL. +.TP +\fB\-r\fIhost\fR[:\fIport\fR[:\fIuid\fR:\fIpwd\fR]] +Connect via proxy \fIhost\fR, \fIport\fR and proxy credentials \fIuid\fR and \fIpwd\fR. +.TP +\fB\-r\fR:\fIuid\fR:\fIpwd\fR +Connect with authentication credentials \fIuid\fR and \fIpwd\fR. +.TP +\fB\-S\fIname\fR +Use \fIname\fR instead of \fBsoap\fR for the C++ class members with soap contexts. +.TP +\fB\-s\fR +Do not generate STL code (no \fBstd::string\fR and no \fBstd::vector\fR). +.TP +\fB\-t\fIfile\fR +Use type map file \fIfile\fR instead of the default file \fBtypemap.dat\fR. +.TP +\fB\-U\fR +Allow UTF-8-encoded Unicode C/C++ identifiers when mapping XML tag names. +.TP +\fB\-u\fR +Do not generate unions. +.TP +\fB\-V\fR +Display the current version and exit. +.TP +\fB\-v\fR +Verbose output. +.TP +\fB\-W\fR +Suppress warnings. +.TP +\fB\-w\fR +Always wrap response parameters in a response struct (<=1.1.4 behavior). +.TP +\fB\-X\fR +Do not qualify part names to disambiguate doc/lit wrapped patterns. +.TP +\fB\-x\fR +Do not generate \fB_XML\fR \fIany\fR/\fIanyAttribute\fR extensibility elements. +.TP +\fB\-y\fR +Generate typedef synonyms for structs and enums. +.TP +\fB\-z1\fR +Compatibility with 2.7.6e: Generate pointer-based arrays. +.TP +\fB\-z2\fR +Compatibility with 2.7.7-2.7.15: (un)qualify element/attribute references. +.TP +\fB\-z3\fR +Compatibility with 2.7.16-2.8.7: (un)qualify element/attribute references. +.TP +\fB\-z4\fR +Compatibility up to 2.8.11: Do not generate union structs in \fBstd::vector\fR. +.TP +\fB\-z5\fR +Compatibility up to 2.8.15: Do not include minor improvements. +.TP +\fB\-z6\fR +Compatibility up to 2.8.17: Do not include minor improvements. +.TP +\fB\-z7\fR +Compatibility up to 2.8.59: Do not generate \fBstd::vector\fR of class of union. +.TP +\fB\-z8\fR +Compatibility up to 2.8.74: Do not generate qualifiers for doc/lit wrapped patterns. +.TP +\fB\-z9\fR +Compatibility up to 2.8.93: Always qualify element/attribute references. +.TP +\fB\-z10\fR +Compatibility up to 2.8.96: Generate qualifiers even when defined w/o namespace. +.TP +\fB\-_\fR +Do not generate _USCORE (replace with Unicode code point _x005f). +.SH SEE ALSO +.BR soapcpp2 (1). +.SH AUTHOR +This manual page was written by Thomas Wana , +for the Debian project (but may be used by others).