Index: ossp-pkg/xds/xml-decode-string.c RCS File: /v/ossp/cvs/ossp-pkg/xds/Attic/xml-decode-string.c,v co -q -kk -p'1.1' '/v/ossp/cvs/ossp-pkg/xds/Attic/xml-decode-string.c,v' | diff -u - /dev/null -L'ossp-pkg/xds/xml-decode-string.c' 2>/dev/null --- ossp-pkg/xds/xml-decode-string.c +++ /dev/null 2024-05-12 11:08:57.000000000 +0200 @@ -1,114 +0,0 @@ -/* - XDS - OSSP Extensible Data Serialization Library - Copyright (c) 2001 The OSSP Project (http://www.ossp.org/) - Copyright (c) 2001 Cable & Wireless Deutschland (http://www.cw.com/de/) - - This file is part of OSSP XDS, an extensible data serialization - library which can be found at http://www.ossp.com/pkg/xds/. - - Permission to use, copy, modify, and distribute this software for - any purpose with or without fee is hereby granted, provided that - the above copyright notice and this permission notice appear in all - copies. - - THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - IN NO EVENT SHALL THE AUTHORS AND COPYRIGHT HOLDERS AND THEIR - CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - SUCH DAMAGE. -*/ - -#include -#include "xds.h" - -static const char TAG_OPEN[] = ""; -static const char TAG_CLOSE[] = ""; -static const size_t TAG_OPEN_LEN = sizeof(TAG_OPEN)-1; -static const size_t TAG_CLOSE_LEN = sizeof(TAG_CLOSE)-1; - -int xml_decode_string(xds_t* xds, void* engine_context, - void* buffer, size_t buffer_size, size_t* used_buffer_size, - va_list* args) - { - char** target_buffer; - char* src; - size_t src_len; - char* dst; - - /* Setup the engine. We need at least space for our tags; how long - the actual content is going to be will be seen soon. */ - - xds_init_encoding_engine(TAG_OPEN_LEN + TAG_CLOSE_LEN); - - /* Is the opening tag there? */ - - if (strncasecmp(buffer, TAG_OPEN, TAG_OPEN_LEN) != 0) - return XDS_ERR_TYPE_MISMATCH; - - /* Determine the length of the encoded data. */ - - src = (char*)buffer + TAG_OPEN_LEN; - for (src_len = 0; src[src_len] != '<'; ++src_len) - if (src[src_len] == '\0') - return XDS_ERR_TYPE_MISMATCH; - - /* Check the closing tag. */ - - if (strncasecmp(src + src_len, TAG_CLOSE, TAG_CLOSE_LEN) != 0) - return XDS_ERR_TYPE_MISMATCH; - *used_buffer_size = TAG_OPEN_LEN + src_len + TAG_CLOSE_LEN; - - /* Allocate target buffer. */ - - target_buffer = va_arg(*args, char**); - xds_check_parameter(target_buffer != NULL); - *target_buffer = dst = malloc(src_len + 1); - if (dst == NULL) - return XDS_ERR_NO_MEM; - - /* Decode the data into the target buffer. */ - - while(src_len > 0) - { - if (*src == '&') - { - if (src_len >= 4 && strncmp(src, "<", 4) == 0) - { - *dst++ = '<'; - src += 4; src_len -= 4; - } - else if (src_len >= 4 && strncmp(src, ">", 4) == 0) - { - *dst++ = '>'; - src += 4; src_len -= 4; - } - else if (src_len >= 5 && strncmp(src, "&", 5) == 0) - { - *dst++ = '&'; - src += 5; src_len -= 5; - } - else - { - free(dst); - return XDS_ERR_TYPE_MISMATCH; - } - } - else - { - *dst++ = *src++; - --src_len; - } - } - *dst = '\0'; - - /* Done. */ - - return XDS_OK; - } Index: ossp-pkg/xds/xml-encode-string.c RCS File: /v/ossp/cvs/ossp-pkg/xds/Attic/xml-encode-string.c,v co -q -kk -p'1.1' '/v/ossp/cvs/ossp-pkg/xds/Attic/xml-encode-string.c,v' | diff -u - /dev/null -L'ossp-pkg/xds/xml-encode-string.c' 2>/dev/null --- ossp-pkg/xds/xml-encode-string.c +++ /dev/null 2024-05-12 11:08:57.000000000 +0200 @@ -1,126 +0,0 @@ -/* - XDS - OSSP Extensible Data Serialization Library - Copyright (c) 2001 The OSSP Project (http://www.ossp.org/) - Copyright (c) 2001 Cable & Wireless Deutschland (http://www.cw.com/de/) - - This file is part of OSSP XDS, an extensible data serialization - library which can be found at http://www.ossp.com/pkg/xds/. - - Permission to use, copy, modify, and distribute this software for - any purpose with or without fee is hereby granted, provided that - the above copyright notice and this permission notice appear in all - copies. - - THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED - WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - IN NO EVENT SHALL THE AUTHORS AND COPYRIGHT HOLDERS AND THEIR - CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF - USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - SUCH DAMAGE. -*/ - -#include -#include "xds.h" - -static const char TAG_OPEN[] = ""; -static const char TAG_CLOSE[] = ""; -static const size_t TAG_OPEN_LEN = sizeof(TAG_OPEN)-1; -static const size_t TAG_CLOSE_LEN = sizeof(TAG_CLOSE)-1; - -int xml_encode_string(xds_t* xds, void* engine_context, - void* buffer, size_t buffer_size, size_t* used_buffer_size, - va_list* args) - { - char* src; - size_t src_len; - char* dst; - size_t dst_size; - - /* Setup the engine. We need at least space for our tags; how long - the actual content is going to be will be seen soon. */ - - xds_init_encoding_engine(TAG_OPEN_LEN + TAG_CLOSE_LEN); - - /* Get the data from the stack. */ - - src = va_arg(*args, char*); - xds_check_parameter(src != NULL); - src_len = strlen(src); - - /* Set up the target buffer. */ - - dst = buffer; - dst_size = buffer_size; - - /* Write the opening tag. */ - - memmove(dst, TAG_OPEN, TAG_OPEN_LEN); - dst += TAG_OPEN_LEN; - dst_size -= TAG_OPEN_LEN; - - /* Format the data into the buffer. */ - - while(src_len > 0 && dst_size > 0) - { - switch(*src) - { - case '<': /* Turn into "<". */ - if (dst_size >= 4) - { - *dst++ = '&'; --dst_size; - *dst++ = 'l'; --dst_size; - *dst++ = 't'; --dst_size; - *dst++ = ';'; --dst_size; - ++src; --src_len; - } - break; - case '&': /* Turn into "&". */ - if (dst_size >= 5) - { - *dst++ = '&'; --dst_size; - *dst++ = 'a'; --dst_size; - *dst++ = 'm'; --dst_size; - *dst++ = 'p'; --dst_size; - *dst++ = ';'; --dst_size; - ++src; --src_len; - } - break; - case '>': /* Turn into ">". */ - if (dst_size >= 4) - { - *dst++ = '&'; --dst_size; - *dst++ = 'g'; --dst_size; - *dst++ = 't'; --dst_size; - *dst++ = ';'; --dst_size; - ++src; --src_len; - } - break; - default: /* Just copy it. */ - *dst++ = *src++; - --src_len; - --dst_size; - } - } - if (src_len > 0) - { /* Target buffer was too small. */ - *used_buffer_size = dst - (char*)buffer + 1; - return XDS_ERR_OVERFLOW; - } - - /* Write the closing tag. */ - - memmove(dst, TAG_CLOSE, TAG_CLOSE_LEN); - dst += TAG_CLOSE_LEN; - dst_size -= TAG_CLOSE_LEN; - - /* Done. */ - - *used_buffer_size = dst - (char*)buffer; - return XDS_OK; - }