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

Weijun Wang Weijun.Wang at Sun.COM
Thu Jul 2 10:11:34 UTC 2009


Sorry, my code is not correct. It might read more than expected when
contentLength != -1

   while (total < contentLength) {
      if (total >= resp.len) {
          resp = Arrays.copyOf(resp, resp.len*2);
      }
      count = in.read(resp, total, resp.len-total)
      if (count < 0) break;
      total += count;
   }

Weijun Wang wrote:
> 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