But calling getObject(filter) effectively overrides the system filter, is that a problem?
> On Aug 23, 2018, at 11:51 PM, Roger Riggs <roger.ri...@oracle.com> wrote: > > Hi Max, > > Yes, the stream is passed to the readObject method of the classes being > deserialized. > > But that's only a concern during the call to a.readObject() not on the call > to setObjectInputFilter. > > It would be reasonable I think for getObject0 to put a doPriv around the call > to a.setObjectInputFilter(filter). > Then it would not be necessary to document the security exception nor need > for a permission > and making it easier to understand. The Signed/Sealed object should be free > to set the filter regardless > of the current SM. > > Roger > > > On 8/23/18 11:14 AM, Weijun Wang wrote: >> You mean during deserialization an untrusted object could be created that >> have a reference to the stream itself? >> >>> On Aug 23, 2018, at 10:12 PM, Roger Riggs <roger.ri...@oracle.com> wrote: >>> >>> Hi, >>> >>> The original basis for the security manager check was to ensure that the >>> filter could >>> not be replaced by untrusted code including code in the classes being >>> deserialized >>> that have access to the ObjectInputStream. >>> >>> Regards, Roger >>> >>> On 8/23/18 10:00 AM, Weijun Wang wrote: >>>> This follows the convention of ObjectInputStream::setObjectInputFilter. >>>> IMHO, in that case the caller also creates the filter and it's only set on >>>> this input stream. >>>> >>>> Maybe we shouldn't have added the permission check there? >>>> >>>> Thanks >>>> Max >>>> >>>>> On Aug 23, 2018, at 4:55 AM, Sean Mullan <sean.mul...@oracle.com> wrote: >>>>> >>>>> One thing I am curious about. Is there a reason why >>>>> getObject(ObjectInputFilter) requires a permission check? >>>>> >>>>> In this case, the caller is the one creating the filter and passing it >>>>> in, so the caller can only cause harm to themselves, and the >>>>> ObjectInputStream is a local variable which is not returned. This method >>>>> also does not mutate the contents of the SignedObject (or SealedObject) >>>>> ... so I don't see the risk here. I think you can just wrap >>>>> ObjectInputStream.setObjectInputFilter in doPrivileged. >>>>> >>>>> --Sean >