From 6738284449959f032955927d888909e0c37354e1 Mon Sep 17 00:00:00 2001 From: Dave Kuhlman <dkuhlman@davekuhlman.org> Date: Wed, 17 Jan 2018 14:46:52 -0800 Subject: [PATCH] Fix for infinite loop in validation of simple types --- README.rst | 8 ++++++++ generateDS.py | 23 ++++++++++++----------- generateDS.txt | 2 +- generateds_gui_notes.txt | 2 +- gui/generateds_gui.py | 2 +- librarytemplate_howto.txt | 2 +- process_includes.py | 2 +- setup.py | 2 +- tutorial/generateds_tutorial.txt | 2 +- tutorial/generateds_tutorial.zip | Bin 48768 -> 48769 bytes 10 files changed, 27 insertions(+), 18 deletions(-) diff --git a/README.rst b/README.rst index c900431..4f11426 100644 --- a/README.rst +++ b/README.rst @@ -141,6 +141,14 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. Change history -------------- +Version 2.29.5 (01/17/2017) + +- Fix to prevent infinite recursion that happens when a simple type + is defined whose name is the same as it's restriction base type + except for the namespace prefix. Thanks to Nicolas de Saint Jorre + for reporting this problem and for providing a schema that + reproduces it. + Version 2.29.4 (12/14/2017) - Fix for exporting the child of an element, when that child is diff --git a/generateDS.py b/generateDS.py index bfe6ae7..a0edc78 100755 --- a/generateDS.py +++ b/generateDS.py @@ -229,7 +229,7 @@ logging.disable(logging.INFO) # Do not modify the following VERSION comments. # Used by updateversion.py. ##VERSION## -VERSION = '2.29.4' +VERSION = '2.29.5' ##VERSION## BaseStrTypes = six.string_types @@ -4541,16 +4541,17 @@ def processValidatorBodyRestrictions( if base1 is not None: if ":" in base1: base1 = base1.split(":")[1] - st1 = find_simple_type_def(tree, base1, None, None, ns, base) - if st1 is not None: - restrictions1 = st1.xpath( - "./xs:restriction", - namespaces=ns, n=stName, b=base) - if restrictions1: - s2 = processValidatorBodyRestrictions( - tree, '', restrictions1, st1, ns, stName, - base1, patterns1) - s1 += s2 + if st.get('name') != base1: + st1 = find_simple_type_def(tree, base1, None, None, ns, base) + if st1 is not None: + restrictions1 = st1.xpath( + "./xs:restriction", + namespaces=ns, n=stName, b=base) + if restrictions1: + s2 = processValidatorBodyRestrictions( + tree, '', restrictions1, st1, ns, stName, + base1, patterns1) + s1 += s2 return s1 # end processValidatorBodyRestrictions diff --git a/generateDS.txt b/generateDS.txt index 608888f..785b1a6 100644 --- a/generateDS.txt +++ b/generateDS.txt @@ -12,7 +12,7 @@ generateDS -- Generate Data Structures from XML Schema .. version -:revision: 2.29.4 +:revision: 2.29.5 .. version diff --git a/generateds_gui_notes.txt b/generateds_gui_notes.txt index 59a6d69..1f0b27c 100644 --- a/generateds_gui_notes.txt +++ b/generateds_gui_notes.txt @@ -12,7 +12,7 @@ GenerateDS GUI Notes .. version -:revision: 2.29.4 +:revision: 2.29.5 .. version diff --git a/gui/generateds_gui.py b/gui/generateds_gui.py index 4e13f90..06a6483 100644 --- a/gui/generateds_gui.py +++ b/gui/generateds_gui.py @@ -41,7 +41,7 @@ from libgenerateDS.gui import generateds_gui_session # Do not modify the following VERSION comments. # Used by updateversion.py. ##VERSION## -VERSION = '2.29.4' +VERSION = '2.29.5' ##VERSION## diff --git a/librarytemplate_howto.txt b/librarytemplate_howto.txt index 702e571..a03d078 100644 --- a/librarytemplate_howto.txt +++ b/librarytemplate_howto.txt @@ -8,7 +8,7 @@ How to package a generateDS.py generated library .. version -:revision: 2.29.4 +:revision: 2.29.5 .. version diff --git a/process_includes.py b/process_includes.py index 723639a..fffc046 100644 --- a/process_includes.py +++ b/process_includes.py @@ -40,7 +40,7 @@ except ImportError: # Do not modify the following VERSION comments. # Used by updateversion.py. ##VERSION## -VERSION = '2.29.4' +VERSION = '2.29.5' ##VERSION## CatalogDict = {} diff --git a/setup.py b/setup.py index 93eeec3..a37f5de 100644 --- a/setup.py +++ b/setup.py @@ -7,7 +7,7 @@ setup(name="generateDS", # Do not modify the following VERSION comments. # Used by updateversion.py. ##VERSION## - version="2.29.4", + version="2.29.5", ##VERSION## author="Dave Kuhlman", author_email="dkuhlman@davekuhlman.org", diff --git a/tutorial/generateds_tutorial.txt b/tutorial/generateds_tutorial.txt index ec4b328..f2aa24f 100644 --- a/tutorial/generateds_tutorial.txt +++ b/tutorial/generateds_tutorial.txt @@ -11,7 +11,7 @@ generateDS -- Introduction and Tutorial .. version -:revision: 2.29.4 +:revision: 2.29.5 .. version diff --git a/tutorial/generateds_tutorial.zip b/tutorial/generateds_tutorial.zip index 2df8e3b9633f8cec64f6150fb17446a73cb67f39..9e996e740b4f0d52d4c85bdb54bd683193861181 100644 GIT binary patch delta 1430 zcmZqp%hdRnNjAWnnMH(wfq{dewban(<E7VOF-!~${HzQN;tVpAC+w8s;$&dnbum5) zh$lLV)Za1Sx%*dp2g?aY%UFRW&b%p^n`LG(u+CaIx5}#1j(e)B^Q2<K3G(qlcFzwx zw`FYfndsl&?{98CKk_Ogv)kN{-^ABk-@t1*N!F)K#DSfg-+9@KE$i)C>w-hK$`yHU zY>WQe@gX^*b~&^A+TIyKyx;DNG!@ScPq2Kcn$W2%!e1}?A*=Y^>$A@)Y*v|jdi7~9 zeK1WSpsjCBw%Z9^C+B;YFSat<B>7zGU%2k@gvmk&+Qr;22qt=DB-$Uk5IybTl-0ii zMekg;|1S9P;>m4o+NEDZYa?a63wh6fs?>A8EatVRZF7D>n*M_~{zrGV{W9F;JUjb` zUH-#6YaYD%^y$~!fXP9O!u1-tJ9xw<cjonT?l>Y)JlpDV*u%Qt4CUt%JR<bJE}3`O z#HCs3`7!^@%*#9X*!|Uzd}8->1@Gj#<DPntGj}d6{&doE!b*eGxu=g_Igt1Ll~q{P z_U7c*KHSA72hUIR6?U=Vt<gTrmm_YGuOTK-b1C-yN2Z?ZojVgAH%(rBnQN9u{ak}z zwe{>Lx7>IszHZf-zb+}9avPubm#CCnOg7{;H)}qt5&YHj&7ut=d*YTS%y#_kk}vhD z)aQ-pxhuhY)pMsGP+HXC$~paw#N^6|=vjMa=rC|fPJ6hpP_FV(j=;1=+4*g?f^I6_ zl{YqP*{Hr+8c}UO?bpmXp+^;M=5x4Bk6sY&oR)amX195T4!djjWr-g<`cr-=PB%#m zFnKJgA2mBJ*lF_N3s)zzW_Q=-W$#$GYU`RwM#(i(9yfh#o|^vklJhU?-@dE=Oj-TP z9+CLGN(_A_?_$zr&psa?1;m@*F~#e%fJFn1q*S4zQKc2!42&!<m>C$r1e*Q{M(S|= z`-~*aA^LA+YQjaivJ@C0qI%i-Fww~=*>50%Avp*KbmW+bLPQTV>cNz5{@N(TBnWa= zRoYWqeMSa`H9)tBPEO1b5zwnBP6-VG<`$S2Tv|M#mQ8Hcf|)Scw@rTX!&W1R(c*0g zSNOKoK?Khu1UIv`hx0*16Q&~EHf8E<Wlng0om{cg6qH3LZ`>sVQF~#h6w_L!$^ARU zCf{RXV`Bxo2`DYb#Rbgj3=H6K)!QW{=wigc;GCb5svjBxS0tkdl0N)%J>New1_o;h zCI%q}39vSxcNw-cHXAWao^K?IFcoU)#a&X2XD7eeB?Afogj=+COED{EGfcM4mc`K0 zy<3XWee$y13NS5TtM4sb8pQxCggjXo7$i}w-rUGA`Fx`ck~#Jmae<<Ntp)18+|=Bp z)S~#}g4E<<NJJt0D-SZ`j`tM?bD;kmfmjsDjK7U7llSeBg*gxszW??}F>+0o+^d8t z9Jg1B`A{3f<a=$%UY)#auN<T2<ePi#A)00ONihXa1xAkOWZ!*UU=yPDDX^vN1cfmG D=UOv; delta 1456 zcmZqt%hd3fNjAWnnMH(wfq{czL1~|NeZpPEXeI^*epUtsaR!;m6L(5+aWXK!`DYXb z#1kDw>Teqe-2JMZ$0@*UC@T@ErQrQqHG@ecqpfUJ=BE_Fr4>w`M+GOy-?u(>s=bZx zq0+00??2w%ef;)qdRXa^hQRbYe_Osvy>seIVV^9^dg0)q#}hQI-mdmvct0$3ZTp>| zHHpjT3+&@x`@ZDCimigds}BB~>r}AvGnbC~UN)V=mPZ@wnc{NK)$YAH$4~vMp6AKJ zr6O-Qm{MPy*p=3DN6F-g?c5lPL&C>Y{z|;E;<40ZtjQ^4krixf5#v+l*_$ePZs#ib z(1W)Bi{%C9&&kQYvFfdO>1K;*kEG(Bd=BbcraPsAS3LgVp}2!b-**-BeoZbpZg%}c z?!7}xBM*N2_3K%4Kv#X`E|zI$6s~MNv-E`G=81a3rax73ckqZ!?tIt4x#NgH@ocNd zVGkd^6MQ%K;DilvuRLwrGdtK^&-Ko~bZJ>}W$nK}qZ7`j0;SddHcpN?cDcy=`IF7X z3c-n|tfqIbZ2bH0Z0VXWb^Ob(%@li<(Il@tTdku)>PJ|c><ztwn*llsKkC=)zV}#E zV!d$j!DFoI;mbu$CR!zadHqmsQs&0X>tjM^{+@Y4$R_E${7a7)i;gFW<>j!=4qWzX z^9|QT&5GTA2V>dZ3h&KcaouoZxJ9u4*LhoFnYufa#8hK8CHp)}%+36iwTVF`C8DkU zSml$>&5jXlWi?WKt`ZY<o<2OV>cf;3nbVWr{*8E*UKA$U{-H)mA~vs)Z)U6S=QsBr zZj=$x^-F&6*lyCp_Lxg8ju(5<_hjT&`EvU5Ifwg;t<n9qb8X}NOHpB-GY$Vuf86x3 zd20ICTh70XfBUZfGiUWHc|=mY0ZfXMcQfg-NBlR6V*hWn`8`v-zVnpGZf{^pg#%Uw z83yP4lvMrD5MUZzaYHZa01%f}a5FHnykKTv022s9LE0xzG*V}Ws@%NaNWz>2EP6Xr z6E4b~rN9Ug)z8+4iB3+<eghE<&C!JkZtl!65rv2zY}A8`eruFsf{2Q=Xu(BYTRa*0 zK$hL{zQSM*^n)YAWVse`f%u}*JY@Gz_G^=${HWCkVuC~)!U=wDbr8V|2*J&4?csb7 z(Zs0;hfSS&TbUD{pC?!DGzDeh$s2dduz-X1;!Y{1HB6Hy>=c`PpNWl)m4O);&_HQ1 zE-rBBf&)c=mz1Eh5d$oUfr@|u2Q~vNUA0S!xyguO@&Y4KkO5FRd61lMu*(-VMg|5M zU`ZmvAOSWK$Yt2lcxLk3T{1AW5O?eBmSR@OW|+LNRd{mDZeCQ$9-yRK4n%U#Zf;b` zS3t>4jSxwxJv=Z;dyo^V(w^Gt1MOS`Ob4PUPGD_;dMP(GHz~C!zPKPYxmd5FI3+X$ z%^QfALN()WWAo(wdt_nuLA>#Qj}$X!8^kgCd(pfRzgLR+AXKs+Avt;XUO7gO$+z~} fL(GufC&d&r6&Nj|ll}H_fz6NJr@)rH6BL2~?r>XK -- GitLab