Metadata Aggregator - Issues with XMLSignatureSigningStage

James Webb jwebb at tech-consortium.com
Fri Nov 4 22:02:15 GMT 2011


Chad,

I'm working with Dan here on this project.  With a little but of debugging, I found the issue with the recursion in DomFilesystemSourceStage.getSourceFiles.

         // file must be a directory
-        final File[] files = sourceFile.listFiles();
+        final File[] files = input.listFiles();
         if (files != null) {
             for (File file : files) {
                 if (file.isFile() || (file.isDirectory() && recurseDirectories)) {

Essentially, the code was in an infinite loop as soon as it hit its first directory. 

I'm attaching a patch for that change. We'll file a bug and include the patch in there.

Thanks again for putting together this awesome tool!

Regards,

James Webb


________________________________________
From: dev-bounces at shibboleth.net [dev-bounces at shibboleth.net] on behalf of Chad La Joie [lajoie at itumi.biz]
Sent: Friday, November 04, 2011 4:57 PM
To: Shib Dev
Subject: Re: Metadata Aggregator - Issues with XMLSignatureSigningStage

Probably a bug, go ahead and file it.  I'm away on vacation until Nov 21.

On Fri, Nov 4, 2011 at 17:49, Dan McLaughlin
<dmclaughlin at tech-consortium.com> wrote:
> I have no issues signing or validating metadata now.  Thanks!
>
> I have run into an issue if I create subdirectories under
> /tmp/mda/entities with metadata files, then DomFilesystemSourceStage
> gets stuck in a recursive loop.  See exception below...
>
>        <bean id="source"
> class="net.shibboleth.metadata.dom.DomFilesystemSourceStage"
> p:id="source">
>                <property name="parserPool">
>                        <bean class="org.opensaml.util.xml.BasicParserPool"/>
>                </property>
>                <property name="source">
>                        <bean class="java.io.File">
>                                <constructor-arg value="/tmp/mda/entities"/>
>                        </bean>
>                </property>
>                <property name="recurseDirectories" value="true"/>
>        </bean>
>
> Exception in thread "main" java.lang.StackOverflowError
>        at sun.nio.cs.UTF_8$Encoder.encodeLoop(UTF_8.java:447)
>        at java.nio.charset.CharsetEncoder.encode(CharsetEncoder.java:544)
>        at java.lang.StringCoding$StringEncoder.encode(StringCoding.java:240)
>        at java.lang.StringCoding.encode(StringCoding.java:272)
>        at java.lang.String.getBytes(String.java:946)
>        at java.io.UnixFileSystem.list(Native Method)
>        at java.io.File.list(File.java:973)
>        at java.io.File.listFiles(File.java:1051)
>        at net.shibboleth.metadata.dom.DomFilesystemSourceStage.getSourceFiles(DomFilesystemSourceStage.java:250)
>        at net.shibboleth.metadata.dom.DomFilesystemSourceStage.getSourceFiles(DomFilesystemSourceStage.java:254)
>        at net.shibboleth.metadata.dom.DomFilesystemSourceStage.getSourceFiles(DomFilesystemSourceStage.java:254)
>        at net.shibboleth.metadata.dom.DomFilesystemSourceStage.getSourceFiles(DomFilesystemSourceStage.java:254)
>        at net.shibboleth.metadata.dom.DomFilesystemSourceStage.getSourceFiles(DomFilesystemSourceStage.java:254)
>        at net.shibboleth.metadata.dom.DomFilesystemSourceStage.getSourceFiles(DomFilesystemSourceStage.java:254)
>        at net.shibboleth.metadata.dom.DomFilesystemSourceStage.getSourceFiles(DomFilesystemSourceStage.java:254)
>        at net.shibboleth.metadata.dom.DomFilesystemSourceStage.getSourceFiles(DomFilesystemSourceStage.java:254)
>        at net.shibboleth.metadata.dom.DomFilesystemSourceStage.getSourceFiles(DomFilesystemSourceStage.java:254)
>        at net.shibboleth.metadata.dom.DomFilesystemSourceStage.getSourceFiles(DomFilesystemSourceStage.java:254)
>        at net.shibboleth.metadata.dom.DomFilesystemSourceStage.getSourceFiles(DomFilesystemSourceStage.java:254)
>        at net.shibboleth.metadata.dom.DomFilesystemSourceStage.getSourceFiles(DomFilesystemSourceStage.java:254)
>        at net.shibboleth.metadata.dom.DomFilesystemSourceStage.getSourceFiles(DomFilesystemSourceStage.java:254)
>        at net.shibboleth.metadata.dom.DomFilesystemSourceStage.getSourceFiles(DomFilesystemSourceStage.java:254)
>        at net.shibboleth.metadata.dom.DomFilesystemSourceStage.getSourceFiles(DomFilesystemSourceStage.java:254)
>        at net.shibboleth.metadata.dom.DomFilesystemSourceStage.getSourceFiles(DomFilesystemSourceStage.java:254)
>        at net.shibboleth.metadata.dom.DomFilesystemSourceStage.getSourceFiles(DomFilesystemSourceStage.java:254)
>        at net.shibboleth.metadata.dom.DomFilesystemSourceStage.getSourceFiles(DomFilesystemSourceStage.java:254)
>        at net.shibboleth.metadata.dom.DomFilesystemSourceStage.getSourceFiles(DomFilesystemSourceStage.java:254)
>        at net.shibboleth.metadata.dom.DomFilesystemSourceStage.getSourceFiles(DomFilesystemSourceStage.java:254)
>        at net.shibboleth.metadata.dom.DomFilesystemSourceStage.getSourceFiles(DomFilesystemSourceStage.java:254)
>        at net.shibboleth.metadata.dom.DomFilesystemSourceStage.getSourceFiles(DomFilesystemSourceStage.java:254)
>        at net.shibboleth.metadata.dom.DomFilesystemSourceStage.getSourceFiles(DomFilesystemSourceStage.java:254)
>        at net.shibboleth.metadata.dom.DomFilesystemSourceStage.getSourceFiles(DomFilesystemSourceStage.java:254)
>        at net.shibboleth.metadata.dom.DomFilesystemSourceStage.getSourceFiles(DomFilesystemSourceStage.java:254)
>        at net.shibboleth.metadata.dom.DomFilesystemSourceStage.getSourceFiles(DomFilesystemSourceStage.java:254)
>        at net.shibboleth.metadata.dom.DomFilesystemSourceStage.getSourceFiles(DomFilesystemSourceStage.java:254)
>        at net.shibboleth.metadata.dom.DomFilesystemSourceStage.getSourceFiles(DomFilesystemSourceStage.java:254)
>        at net.shibboleth.metadata.dom.DomFilesystemSourceStage.getSourceFiles(DomFilesystemSourceStage.java:254)
>        at net.shibboleth.metadata.dom.DomFilesystemSourceStage.getSourceFiles(DomFilesystemSourceStage.java:254)
>        at net.shibboleth.metadata.dom.DomFilesystemSourceStage.getSourceFiles(DomFilesystemSourceStage.java:254)
>        at net.shibboleth.metadata.dom.DomFilesystemSourceStage.getSourceFiles(DomFilesystemSourceStage.java:254)
>        at net.shibboleth.metadata.dom.DomFilesystemSourceStage.getSourceFiles(DomFilesystemSourceStage.java:254)
>        at net.shibboleth.metadata.dom.DomFilesystemSourceStage.getSourceFiles(DomFilesystemSourceStage.java:254)
>        at net.shibboleth.metadata.dom.DomFilesystemSourceStage.getSourceFiles(DomFilesystemSourceStage.java:254)
>        at net.shibboleth.metadata.dom.DomFilesystemSourceStage.getSourceFiles(DomFilesystemSourceStage.java:254)
>        at net.shibboleth.metadata.dom.DomFilesystemSourceStage.getSourceFiles(DomFilesystemSourceStage.java:254)
>        at net.shibboleth.metadata.dom.DomFilesystemSourceStage.getSourceFiles(DomFilesystemSourceStage.java:254)
>        at net.shibboleth.metadata.dom.DomFilesystemSourceStage.getSourceFiles(DomFilesystemSourceStage.java:254)
>        at net.shibboleth.metadata.dom.DomFilesystemSourceStage.getSourceFiles(DomFilesystemSourceStage.java:254)
>        at net.shibboleth.metadata.dom.DomFilesystemSourceStage.getSourceFiles(DomFilesystemSourceStage.java:254)
>        at net.shibboleth.metadata.dom.DomFilesystemSourceStage.getSourceFiles(DomFilesystemSourceStage.java:254)
>        at net.shibboleth.metadata.dom.DomFilesystemSourceStage.getSourceFiles(DomFilesystemSourceStage.java:254)
>        at net.shibboleth.metadata.d
>
> --
>
> Thanks,
>
> Dan McLaughlin
>
>
>
> On Thu, Oct 27, 2011 at 5:28 PM, Chad La Joie <lajoie at itumi.biz> wrote:
>> Dan,
>>
>> As Ian mentioned, there is a semi-released 0.6 that changes some
>> things.  I say semi-released because there was a compiler issue found
>> and I was going to fix it before release but then got side tracked by
>> this summer's security issues and then IdP releases.
>>
>> So, give me a couple days to fix up the compiler issue and update the
>> wiki and then test with that.  As Brent mentioned there are some
>> helper classes that I did that make it easier to create keys and certs
>> and the like so that should make what you're doing easier.
>>
>> On Thu, Oct 27, 2011 at 17:11, Dan McLaughlin
>> <dmclaughlin at tech-consortium.com> wrote:
>>> The only ones that I need examples for are signing and schema
>>> verification, the rest of the examples from the wiki are working with
>>> 0.5.
>>
>> --
>> Chad La Joie
>> www.itumi.biz
>> trusted identities, delivered
>> --
>> To unsubscribe from this list send an email to dev-unsubscribe at shibboleth.net
>>
> --
> To unsubscribe from this list send an email to dev-unsubscribe at shibboleth.net
>



--
Chad La Joie
www.itumi.biz
trusted identities, delivered
--
To unsubscribe from this list send an email to dev-unsubscribe at shibboleth.net
-------------- next part --------------
A non-text attachment was scrubbed...
Name: recursion_fix.patch
Type: application/octet-stream
Size: 712 bytes
Desc: recursion_fix.patch
Url : http://shibboleth.net/pipermail/dev/attachments/20111104/ea710e28/attachment-0001.obj 


More information about the dev mailing list