[security-dev 00947]: Re: code review request 6853793: OutOfMemoryError in sun.security.provider.certpath.OCSPChecker.check

Weijun Wang Weijun.Wang at Sun.COM
Thu Jul 2 03:03:29 PDT 2009


I understand what the code means. It either reads contentLength bytes of
data, or, if it's -1, reads until EOF.

However, I guess it would look simpler if you use only one while(read):

  if (contentLength == -1) {
     resp = new byte[contentLength];
  } else {
     resp = new byte[2048];
     contentLength = Integer.MAX_VALUE;
  }
  while (total < contentLength) {
     count = in.read(resp, total, resp.len-total)
     if (count < 0) break;
     total += count;
     if (total almost exceeds resp len) {
         resp = Arrays.copyOf(resp, resp.len*2);
     }
  }

Also, I guess the response should be truncated back to total after the
reading is complete.

  response = Arrays.copyOf(response, total);

Thanks
Max

Xuelei Fan wrote:
> Hi,
> 
> bug desc: http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6853793
> webrv: http://cr.openjdk.java.net/~xuelei/6853793/webrev/
> 
> no new regression test, trivial changes, hard to write a new test.
> 
> Thanks,
> Xuelei



More information about the security-dev mailing list