-rw-r--r-- | .gitignore | 33 | ||||
-rw-r--r-- | COPYING | 2 | ||||
-rw-r--r-- | Makefile.am | 3 | ||||
-rw-r--r-- | NEWS.xml | 6 | ||||
-rwxr-xr-x | autogen.sh | 2 | ||||
-rw-r--r-- | autoregen.sh | 2 | ||||
-rw-r--r-- | configure.ac | 4 | ||||
-rw-r--r-- | include/opkele/expat.h | 3 | ||||
-rw-r--r-- | lib/basic_rp.cc | 3 | ||||
-rw-r--r-- | lib/discovery.cc | 31 | ||||
-rw-r--r-- | lib/expat.cc | 9 | ||||
-rw-r--r-- | test/RP.cc | 1 |
12 files changed, 71 insertions, 28 deletions
@@ -1,21 +1,16 @@ -configure +/configure Makefile.in -Doxyfile -config.log -depcomp -config.guess -config.h -config.sub -ltmain.sh -INSTALL -NEWS +/Doxyfile +/config.log +/config.h +/INSTALL +/NEWS Makefile -config.status -stamp-h1 -config.h.in -libtool -autom4te.cache -libopkele.pc -missing -aclocal.m4 -install-sh +/config.status +/stamp-h1 +/config.h.in +/autom4te.cache +/libopkele.pc +/aclocal.m4 +/aclocal.d +/aux.d @@ -1,2 +1,2 @@ -Copyright (c) 2005-2008 Klever Group (http://www.klever.net/) +Copyright (c) 2005-2009 Klever Group (http://www.klever.net/) diff --git a/Makefile.am b/Makefile.am index 3227bdb..7726dad 100644 --- a/Makefile.am +++ b/Makefile.am @@ -1,2 +1 @@ - SUBDIRS=include lib test @@ -4,2 +3,4 @@ EXTRA_DIST= NEWS NEWS.xml NEWS.xsl +ACLOCAL_AMFLAGS=-I aclocal.d + pkgconfigdir=${libdir}/pkgconfig @@ -2,2 +2,8 @@ <news> + <version version="2.0.2" date="April 11th, 2009"> + <ni>Handling of unknown encodings during discovery</ni> + <ni>Discovery robustness improvements</ni> + <ni>Workaround for OPs (e.g. livejournal.com) breaking specs</ni> + <ni>Build fixes and improvements</ni> + </version> <version version="2.0.1" date="November 22nd, 2008"> @@ -6,3 +6,3 @@ fi "$tool_libtoolize" -f \ -&& aclocal \ +&& aclocal -I aclocal.d \ && autoheader \ diff --git a/autoregen.sh b/autoregen.sh new file mode 100644 index 0000000..ce75a08 --- a/dev/null +++ b/autoregen.sh @@ -0,0 +1,2 @@ +#!/bin/bash +eval sh autogen.sh $(./config.status --version | grep '^ with options "'|sed -e 's/^[^"]\+"//' -e 's/"$//') "$@" diff --git a/configure.ac b/configure.ac index a7b56ff..2ded490 100644 --- a/configure.ac +++ b/configure.ac @@ -1,4 +1,6 @@ -AC_INIT([libopkele], [2.0.1], [libopkele-bugs@klever.net]) +AC_INIT([libopkele], [2.0.2], [libopkele-bugs@klever.net]) AC_CONFIG_SRCDIR([include/opkele/opkele-config.h]) AC_CONFIG_HEADERS([config.h include/opkele/acconfig.h]) +AC_CONFIG_MACRO_DIR([aclocal.d]) +AC_CONFIG_AUX_DIR([aux.d]) AM_INIT_AUTOMAKE([dist-bzip2]) diff --git a/include/opkele/expat.h b/include/opkele/expat.h index 3ab1630..21be003 100644 --- a/include/opkele/expat.h +++ b/include/opkele/expat.h @@ -28,2 +28,5 @@ namespace opkele { + virtual int unknown_encoding(const XML_Char * /* n */,XML_Encoding * /* i */) { return XML_STATUS_ERROR; } + void set_unknown_encoding_handler(); + virtual void start_element(const XML_Char * /* n */,const XML_Char ** /* a */) { } diff --git a/lib/basic_rp.cc b/lib/basic_rp.cc index 3cad71c..9c7113b 100644 --- a/lib/basic_rp.cc +++ b/lib/basic_rp.cc @@ -220,3 +220,4 @@ namespace opkele { bool o2 = om.has_field("ns") - && om.get_field("ns")==OIURI_OPENID20; + && om.get_field("ns")==OIURI_OPENID20 + && om.has_field("op_endpoint") && !om.get_field("op_endpoint").empty(); if( (!o2) && om.has_field("user_setup_url")) diff --git a/lib/discovery.cc b/lib/discovery.cc index bd1f917..b4ed3b6 100644 --- a/lib/discovery.cc +++ b/lib/discovery.cc @@ -285,2 +285,3 @@ namespace opkele { set_character_data_handler(); + set_unknown_encoding_handler(); @@ -455,6 +456,10 @@ namespace opkele { if(is_qelement(n,NSURI_XRD "\tType")) { - assert(xrd); assert(xrd_service); assert(cdata==&cdata_buf); + if(xrd && xrd_service) { + assert(cdata==&cdata_buf); xrd_service->types.insert(cdata_buf); + } }else if(is_qelement(n,NSURI_XRD "\tService")) { - assert(xrd); assert(xrd_service); + if(!(xrd && xrd_service)) { + skipping = -1; + }else{ assert(!pt_stack.empty()); @@ -463,4 +468,7 @@ namespace opkele { xrd_service = 0; + } }else if(is_qelement(n,NSURI_XRD "\tStatus")) { - assert(xrd); + if(!xrd) { + skipping=-1; + }else{ if(is_qelement(pt_stack.back().c_str(),n)) { @@ -471,5 +479,13 @@ namespace opkele { } + } }else if(is_qelement(n,NSURI_XRD "\tExpires")) { - assert(xrd); + if(!xrd) { + skipping=-1; + }else{ xrd->expires = util::w3c_to_time(cdata_buf); + } + }else if(is_qelement(n,NSURI_XRD "\tXRD")) { + assert(!pt_stack.empty()); + assert(pt_stack.back()==(NSURI_XRD "\tXRD")); + pt_stack.pop_back(); }else if((xmode&xmode_html) && is_element(n,"head")) { @@ -571,2 +587,9 @@ namespace opkele { + int unknown_encoding(const XML_Char* /* n */,XML_Encoding *i) { + for(unsigned int ii=0;ii < sizeof(i->map)/sizeof(i->map[0]);++ii) + i->map[ii] = ii; + i->convert = 0; i->release = 0; + return XML_STATUS_OK; + } + }; diff --git a/lib/expat.cc b/lib/expat.cc index c4dab7e..fb58a9a 100644 --- a/lib/expat.cc +++ b/lib/expat.cc @@ -94,2 +94,11 @@ namespace opkele { + static int _unknown_encoding(void *ehd,const XML_Char *n,XML_Encoding *i) { + return ((expat_t*)ehd)->unknown_encoding(n,i); + } + + void expat_t::set_unknown_encoding_handler() { + assert(_x); + XML_SetUnknownEncodingHandler(_x,_unknown_encoding,this); + } + } @@ -3,2 +3,3 @@ #include <cassert> +#include <cstdlib> #include <stdexcept> |