Ticket #1653: 0001-In-order-to-prevent-SAXParserException-Content-not-a.patch

File 0001-In-order-to-prevent-SAXParserException-Content-not-a.patch, 1.9 KB (added by kay, 3 years ago)

patch for this ticket

  • router/java/src/org/cybergarage/xml/parser/JaxpParser.java

    From 9233e98bd4076a2b19987b164995c3a832c7e38c Thu Sep 3 22:20:00 2015
    From: kay <kay@mail.i2p>
    Date: Thu, 3 Sep 2015 22:20:00 +0000
    Subject: [PATCH] In order to prevent  SAXParserException 'Content not allowed
     in trailing section' all three read() methods of FilterInputStream have to be
     overridden.
    
    ---
     .../src/org/cybergarage/xml/parser/JaxpParser.java | 33 ++++++++++++++++++++++
     1 file changed, 33 insertions(+)
    
    diff --git a/router/java/src/org/cybergarage/xml/parser/JaxpParser.java b/router/java/src/org/cybergarage/xml/parser/JaxpParser.java
    index 332c552..cff7186 100644
    a b public class JaxpParser extends Parser 
    184184                        }
    185185                        return rv;
    186186                }
     187
     188                @Override
     189                public int read(byte[] b) throws IOException{
     190                    return this.read(b, 0, b.length);
     191                }
     192
     193                @Override
     194                public int read(byte[] b, int off, int len)  throws IOException{
     195                    if (b == null) {
     196                        throw new NullPointerException();
     197                    } else if (off < 0 || len < 0 || len > b.length - off) {
     198                        throw new IndexOutOfBoundsException();
     199                    } else if (len == 0) {
     200                        return 0;
     201                    }
     202
     203                    int rv = this.read();
     204                    if(-1 == rv) {
     205                        return -1;
     206                    }
     207
     208                    int i = 1;
     209                    b[off] = (byte) rv;
     210                    for (; i < len; i++){
     211                        rv = this.read();
     212                        if(-1 == rv) {
     213                            break;
     214                        }
     215                        b[off + i] = (byte) rv;
     216                    }
     217                    return i;
     218                }
     219
    187220        }
    188221
    189222        /**