From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 16863 invoked by alias); 22 Mar 2004 08:14:04 -0000 Mailing-List: contact mauve-discuss-help@sources.redhat.com; run by ezmlm Precedence: bulk List-Subscribe: List-Archive: List-Post: List-Help: , Sender: mauve-discuss-owner@sources.redhat.com Received: (qmail 16856 invoked from network); 22 Mar 2004 08:14:03 -0000 Received: from unknown (HELO interway.li) (217.8.192.21) by sources.redhat.com with SMTP; 22 Mar 2004 08:14:03 -0000 Received: from [217.8.197.76] (HELO [192.168.1.33]) by interway.li (CommuniGate Pro SMTP 4.1.8) with ESMTP id 1340155; Mon, 22 Mar 2004 09:14:04 +0100 From: Sascha Brawer To: David Holmes , Chris Gray , Andrew Haley Cc: GNU Classpath , Subject: ClassLoader.findLoadedClass (was: ServiceFactory) Date: Mon, 22 Mar 2004 08:14:00 -0000 Message-Id: <20040322081359.4021@smtp.mail.ch.easynet.net> In-Reply-To: References: MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="==_20040322081359.19043-1_==" X-SW-Source: 2004-q1/txt/msg00020.txt.bz2 --==_20040322081359.19043-1_== Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Content-length: 1342 David Holmes wrote on Mon, 22 Mar 2004 09:22:43 +1000: >From what I've read, the specification of findLoadedClass and definition of >the class cache in terms of an initiating classloader, are intended to >prevent a malicious classloader from breaking the lookup process. If each >classloader delegates correctly to its parent then there is, as you say, no >harm. However, if the parent does not play nicely then different class >instances could be returned. > >This seems like a bug in the JDK implementation of findLoadedClass. Please find attached a testcase for Mauve (put the two files into gnu/ testlet/java/lang/ClassLoader). My understanding of the API spec [1] is that on line 51 of the testlet, the result of calling findLoadedClass should be 'klass' because 'loader' is an initiating loader for "gnu.testlet.java.lang.ClassLoader.TestClass". [1] http://java.sun.com/j2se/1.5.0/docs/api/java/lang/ ClassLoader.html#findLoadedClass(java.lang.String) On JDK 1.4.1_01, the testlet fails because the result returns null. Same for JamVM, which is based on Classpath. If people agree that both the JDK and the Classpath-based VMs are buggy, I'd commit the test case into Mauve and file bug reports with Classpath and Sun. -- Sascha Sascha Brawer, brawer@dandelis.ch, http://www.dandelis.ch/people/brawer/ --==_20040322081359.19043-1_== Content-Type: multipart/mixed; boundary="==_20040322081359.19043-2_==" --==_20040322081359.19043-2_== Content-Type: text/plain; name="TestClass.java"; x-mac-type="00000000"; x-mac-creator="00000000" Content-Disposition: attachment Content-Transfer-Encoding: base64 Content-length: 1286 Ly8gVGFnczogbm90LWEtdGVzdAoKLy8gQ29weXJpZ2h0IChDKSAyMDA0IFNh c2NoYSBCcmF3ZXIgPGJyYXdlckBkYW5kZWxpcy5jaD4KCi8vIFRoaXMgZmls ZSBpcyBwYXJ0IG9mIE1hdXZlLgoKLy8gTWF1dmUgaXMgZnJlZSBzb2Z0d2Fy ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQovLyBp dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIGFzIHB1Ymxpc2hlZCBieQovLyB0aGUgRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRp b24pCi8vIGFueSBsYXRlciB2ZXJzaW9uLgoKLy8gTWF1dmUgaXMgZGlzdHJp YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLy8g YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt cGxpZWQgd2FycmFudHkgb2YKLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQovLyBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgoKLy8g WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UKLy8gYWxvbmcgd2l0aCBNYXV2ZTsgc2Vl IHRoZSBmaWxlIENPUFlJTkcuICBJZiBub3QsIHdyaXRlIHRvCi8vIHRoZSBG cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIDU5IFRlbXBsZSBQbGFjZSAtIFN1 aXRlIDMzMCwKLy8gQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCgpwYWNr YWdlIGdudS50ZXN0bGV0LmphdmEubGFuZy5DbGFzc0xvYWRlcjsKCi8qKgog KiBVc2VkIGJ5IGdudS50ZXN0bGV0LmphdmEubGFuZy5DbGFzc0xvYWRlci5m aW5kTG9hZGVkQ2xhc3MuCiAqLwpwdWJsaWMgY2xhc3MgVGVzdENsYXNzCnsK fQo= --==_20040322081359.19043-2_== Content-Type: text/plain; name="findLoadedClass.java"; x-mac-type="00000000"; x-mac-creator="00000000" Content-Disposition: attachment Content-Transfer-Encoding: base64 Content-length: 2745 Ly8gVGFnczogSkRLMS4yCi8vIFVzZXM6IFRlc3RDbGFzcwoKLy8gQ29weXJp Z2h0IChDKSAyMDA0IFNhc2NoYSBCcmF3ZXIgPGJyYXdlckBkYW5kZWxpcy5j aD4KCi8vIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIE1hdXZlLgoKLy8gTWF1dmUg aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k L29yIG1vZGlmeQovLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQovLyB0aGUg RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBv ciAoYXQgeW91ciBvcHRpb24pCi8vIGFueSBsYXRlciB2ZXJzaW9uLgoKLy8g TWF1dmUgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs IGJlIHVzZWZ1bCwKLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLy8gTUVSQ0hBTlRB QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg U2VlIHRoZQovLyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y ZSBkZXRhaWxzLgoKLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w eSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLy8gYWxvbmcg d2l0aCBNYXV2ZTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuICBJZiBub3QsIHdy aXRlIHRvCi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIDU5IFRl bXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwKLy8gQm9zdG9uLCBNQSAwMjExMS0x MzA3LCBVU0EuCgpwYWNrYWdlIGdudS50ZXN0bGV0LmphdmEubGFuZy5DbGFz c0xvYWRlcjsKCmltcG9ydCBnbnUudGVzdGxldC5UZXN0bGV0OwppbXBvcnQg Z251LnRlc3RsZXQuVGVzdEhhcm5lc3M7CgoKLyoqCiAqIEBhdXRob3IgPGEg aHJlZj0ibWFpbHRvOmJyYXdlckBkYW5kZWxpcy5jaCI+U2FzY2hhIEJyYXdl cjwvYT4KICovCnB1YmxpYyBjbGFzcyBmaW5kTG9hZGVkQ2xhc3MKICBpbXBs ZW1lbnRzIFRlc3RsZXQKewogIHB1YmxpYyB2b2lkIHRlc3QoVGVzdEhhcm5l c3MgaCkKICB7CiAgICBDdXN0b21DbGFzc0xvYWRlciBsb2FkZXI7CiAgICBT dHJpbmcgbmFtZTsKICAgIENsYXNzIGtsYXNzOwoKICAgIC8vIENoZWNrICMx OiBBc2sgYSBDbGFzc0xvYWRlciB0byBsb2FkIGEgY2xhc3MsIHRoZW4gY2hl Y2sKICAgIC8vIHdoZXRoZXIgaXRzIGZpbmRMb2FkZWRDbGFzcyBtZXRob2Qg cmV0dXJucyBpdC4KICAgIC8vCiAgICAvLyBGYWlscyB3aXRoIEpESyAxLjQu MV8wMSAoZm9yIEdOVS9MaW51eCBvbiBJQS0zMikgYmVjYXVzZQogICAgLy8g aXRzIENsYXNzTG9hZGVyLmZpbmRMb2FkZWRDbGFzcyByZXR1cm5zIG51bGwg aGVyZS4KICAgIGxvYWRlciA9IG5ldyBDdXN0b21DbGFzc0xvYWRlcigpOwog ICAgbmFtZSA9ICJnbnUudGVzdGxldC5qYXZhLmxhbmcuQ2xhc3NMb2FkZXIu VGVzdENsYXNzIjsKICAgIHRyeQogICAgICB7CiAgICAgICAga2xhc3MgPSBs b2FkZXIubG9hZENsYXNzKG5hbWUpOwogICAgICAgIGguY2hlY2sobG9hZGVy LmNhbGxGaW5kTG9hZGVkQ2xhc3MobmFtZSksIGtsYXNzKTsKICAgICAgfQog ICAgY2F0Y2ggKENsYXNzTm90Rm91bmRFeGNlcHRpb24gY25mZXgpCiAgICAg IHsKICAgICAgICBoLmNoZWNrKGZhbHNlKTsKICAgICAgICBoLmRlYnVnKGNu ZmV4KTsKICAgICAgfQogIH0KCiAgCiAgcHJpdmF0ZSBzdGF0aWMgY2xhc3Mg Q3VzdG9tQ2xhc3NMb2FkZXIKICAgIGV4dGVuZHMgQ2xhc3NMb2FkZXIKICB7 CiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIHJlc3VsdCBvZiBjYWxsaW5n IHRoZSBwcm90ZWN0ZWQgbWV0aG9kIHtAbGluawogICAgICogQ2xhc3NMb2Fk ZXIjZmluZExvYWRlZENsYXNzfS4KICAgICAqLwogICAgcHVibGljIENsYXNz IGNhbGxGaW5kTG9hZGVkQ2xhc3MoU3RyaW5nIG5hbWUpCiAgICB7CiAgICAg IHJldHVybiBmaW5kTG9hZGVkQ2xhc3MobmFtZSk7CiAgICB9CiAgfQp9Cg== --==_20040322081359.19043-2_==-- --==_20040322081359.19043-1_==--