# HG changeset patch # User dmocek # Date 1353367979 28800 # Node ID 49a37df9e80fae205a7b70d862cd303a62049c2c # Parent 2281f5670cc599f0fe97c880cdceb6a7db837dc3 8001242: Improve RMI HTTP conformance Reviewed-by: ahgross, mchung, smarks diff --git a/src/share/classes/sun/rmi/transport/proxy/CGIHandler.java b/src/share/classes/sun/rmi/transport/proxy/CGIHandler.java --- jdk/src/share/classes/sun/rmi/transport/proxy/CGIHandler.java +++ jdk/src/share/classes/sun/rmi/transport/proxy/CGIHandler.java @@ -285,11 +285,14 @@ final class CGIForwardCommand implements "unexpected EOF reading server response"); if (line.toLowerCase().startsWith(key)) { - if (contentLengthFound) - ; // what would we want to do in this case?? - responseContentLength = - Integer.parseInt(line.substring(key.length()).trim()); - contentLengthFound = true; + if (contentLengthFound) { + throw new CGIServerException( + "Multiple Content-length entries found."); + } else { + responseContentLength = + Integer.parseInt(line.substring(key.length()).trim()); + contentLengthFound = true; + } } } while ((line.length() != 0) && (line.charAt(0) != '\r') && (line.charAt(0) != '\n')); diff --git a/src/share/classes/sun/rmi/transport/proxy/HttpInputStream.java b/src/share/classes/sun/rmi/transport/proxy/HttpInputStream.java --- jdk/src/share/classes/sun/rmi/transport/proxy/HttpInputStream.java +++ jdk/src/share/classes/sun/rmi/transport/proxy/HttpInputStream.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1996, 2001, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1996, 2012, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -70,11 +70,14 @@ class HttpInputStream extends FilterInpu throw new EOFException(); if (line.toLowerCase().startsWith(key)) { - if (contentLengthFound) - ; // what would we want to do in this case?? - bytesLeft = - Integer.parseInt(line.substring(key.length()).trim()); - contentLengthFound = true; + if (contentLengthFound) { + throw new IOException( + "Multiple Content-length entries found."); + } else { + bytesLeft = + Integer.parseInt(line.substring(key.length()).trim()); + contentLengthFound = true; + } } // The idea here is to go past the first blank line.