This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

libgcj/2024: libgcj can abort on bogus arguments to Class.forName()



>Number:         2024
>Category:       libgcj
>Synopsis:       libgcj can abort on bogus arguments to Class.forName()
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Sun Feb 18 20:16:01 PST 2001
>Closed-Date:
>Last-Modified:
>Originator:     Bryce McKinlay
>Release:        unknown-1.0
>Organization:
>Environment:

>Description:
$ ./a.out
libgcj failure: couldn't understand class signature
Aborted (core dumped)

It should not be possible to crash the runtime with 
Class.forName. Instead, it probibly should throw a
ClassNotFoundException or something.
>How-To-Repeat:
public class T
{
  public static void main(String args[])
    throws ClassNotFoundException
  {
    Class.forName("[[Object;");
  }
}

The attached test case, from Kaffe's regression suite, 
provides a more extensive test of forName functionality 
(and it shows up other bugs that I'm not quite so concerned about...)
>Fix:

>Release-Note:
>Audit-Trail:
>Unformatted:
----gnatsweb-attachment----
Content-Type: application/octet-stream; name="ArrayForName.java"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="ArrayForName.java"

cHVibGljIGNsYXNzIEFycmF5Rm9yTmFtZSB7CgogICAgcHVibGljIHN0YXRpYyB2b2lkIHRlc3RM
b2FkQXJyYXkoKSB0aHJvd3MgRXhjZXB0aW9uIHsKCgkvLyBMb2FkaW5nIGJ5IGJ1aWx0LWluIHR5
cGUgSUQgaXMgbm90IGFsbG93ZWQKCS8vIGludCAgICAgICAgICAhPSBJCgkvLyBib29sZWFuICAg
ICAgIT0gWgoJLy8gbG9uZyAgICAgICAgICE9IEoKCS8vIGZsb2F0ICAgICAgICAhPSBGCgkvLyBk
b3VibGUgICAgICAgIT0gRAoJLy8gYnl0ZSAgICAgICAgICE9IEIKICAgICAgICAvLyBzaG9ydCAg
ICAgICAgIT0gUwoJLy8gY2hhciAgICAgICAgICE9IEMKCS8vIHZvaWQgICAgICAgICAhPSBWCgoJ
ZXhwZWN0KCJJIiwgIkV4Y2VwdGlvbiIpOwoJZXhwZWN0KCJaIiwgIkV4Y2VwdGlvbiIpOwoJZXhw
ZWN0KCJKIiwgIkV4Y2VwdGlvbiIpOwoJZXhwZWN0KCJGIiwgIkV4Y2VwdGlvbiIpOwoJZXhwZWN0
KCJEIiwgIkV4Y2VwdGlvbiIpOwoJZXhwZWN0KCJCIiwgIkV4Y2VwdGlvbiIpOwoJZXhwZWN0KCJT
IiwgIkV4Y2VwdGlvbiIpOwoJZXhwZWN0KCJDIiwgIkV4Y2VwdGlvbiIpOwoJZXhwZWN0KCJWIiwg
IkV4Y2VwdGlvbiIpOwoKCS8vIE5vdCBwb3NzaWJsZSB0byBsb2FkIGJ5IGJ1aWx0aW4gdHlwZSBu
YW1lCgoJZXhwZWN0KCJpbnQiLCAgICAgIkV4Y2VwdGlvbiIpOwoJZXhwZWN0KCJib29sZWFuIiwg
IkV4Y2VwdGlvbiIpOwoJZXhwZWN0KCJsb25nIiwgICAgIkV4Y2VwdGlvbiIpOwoJZXhwZWN0KCJm
bG9hdCIsICAgIkV4Y2VwdGlvbiIpOwoJZXhwZWN0KCJkb3VibGUiLCAgIkV4Y2VwdGlvbiIpOwoJ
ZXhwZWN0KCJieXRlIiwgICAgIkV4Y2VwdGlvbiIpOwoJZXhwZWN0KCJzaG9ydCIsICAgIkV4Y2Vw
dGlvbiIpOwoJZXhwZWN0KCJjaGFyIiwgICAgIkV4Y2VwdGlvbiIpOwoJZXhwZWN0KCJ2b2lkIiwg
ICAgIkV4Y2VwdGlvbiIpOwoKCS8vIFRlc3QgbG9hZGluZyBhbiBhcnJheSBieSBidWlsdC1pbiB0
eXBlIGlkCgkvLyBpbnRbXSAgICAgICAgPT0gW0kKCS8vIGludFtdW10gICAgICA9PSBbW0kKCS8v
IGJvb2xlYW5bXSAgICA9PSBbWgoJLy8gYm9vbGVhbltdW10gID09IFtbWgoJLy8gbG9uZ1tdICAg
ICAgID09IFtKCgkvLyBsb25nW11bXSAgICAgPT0gW1tKCgkvLyBmbG9hdFtdICAgICAgPT0gW0YK
CS8vIGZsb2F0W11bXSAgICA9PSBbW0YKCS8vIGRvdWJsZVtdICAgICA9PSBbRAoJLy8gZG91Ymxl
W11bXSAgID09IFtbRAoJLy8gYnl0ZVtdICAgICAgID09IFtCCgkvLyBieXRlW11bXSAgICAgPT0g
W1tCCgkvLyBzaG9ydFtdICAgICAgPT0gW1MKCS8vIHNob3J0W11bXSAgICA9PSBbW1MKCS8vIGNo
YXJbXSAgICAgICA9PSBbQwoJLy8gY2hhcltdW10gICAgID09IFtbQwoKCWV4cGVjdCgiW0kiLCAg
ImludFtdIik7CglleHBlY3QoIltbSSIsICJpbnRbXVtdIik7CglleHBlY3QoIltaIiwgICJib29s
ZWFuW10iKTsKCWV4cGVjdCgiW1taIiwgImJvb2xlYW5bXVtdIik7CglleHBlY3QoIltKIiwgICJs
b25nW10iKTsKCWV4cGVjdCgiW1tKIiwgImxvbmdbXVtdIik7CglleHBlY3QoIltGIiwgICJmbG9h
dFtdIik7CglleHBlY3QoIltbRiIsICJmbG9hdFtdW10iKTsKCWV4cGVjdCgiW0QiLCAgImRvdWJs
ZVtdIik7CglleHBlY3QoIltbRCIsICJkb3VibGVbXVtdIik7CglleHBlY3QoIltCIiwgICJieXRl
W10iKTsKCWV4cGVjdCgiW1tCIiwgImJ5dGVbXVtdIik7CglleHBlY3QoIltTIiwgICJzaG9ydFtd
Iik7CglleHBlY3QoIltbUyIsICJzaG9ydFtdW10iKTsKCWV4cGVjdCgiW0MiLCAgImNoYXJbXSIp
OwoJZXhwZWN0KCJbW0MiLCAiY2hhcltdW10iKTsKCgkvLyBBcnJheSBvZiB0eXBlIHZvaWQgaXMg
bm90IGFsbG93ZWQKCglleHBlY3QoIltWIiwgICAgIkV4Y2VwdGlvbiIpOwoJZXhwZWN0KCJbW1Yi
LCAgICJFeGNlcHRpb24iKTsKCWV4cGVjdCgiW1tbViIsICAiRXhjZXB0aW9uIik7CgoJLy8gV2hl
biBsb2FkaW5nIGFuIGFycmF5IHVzaW5nIHRoZSBidWlsdC1pbgoJLy8gdHlwZSBpZCwgaWQgbXVz
dCBiZSBhdCBlbmQgb2Ygc3RyaW5nCgoJZXhwZWN0KCJbSUkiLCAgICJFeGNlcHRpb24iKTsKCWV4
cGVjdCgiW1paIiwgICAiRXhjZXB0aW9uIik7CglleHBlY3QoIltKSiIsICAgIkV4Y2VwdGlvbiIp
OwoJZXhwZWN0KCJbRkYiLCAgICJFeGNlcHRpb24iKTsKCWV4cGVjdCgiW0REIiwgICAiRXhjZXB0
aW9uIik7CglleHBlY3QoIltCQiIsICAgIkV4Y2VwdGlvbiIpOwoJZXhwZWN0KCJbU1MiLCAgICJF
eGNlcHRpb24iKTsKCWV4cGVjdCgiW0NDIiwgICAiRXhjZXB0aW9uIik7CglleHBlY3QoIltaWiIs
ICAgIkV4Y2VwdGlvbiIpOwoJZXhwZWN0KCJbQzsiLCAgICJFeGNlcHRpb24iKTsKCWV4cGVjdCgi
W0NcMDsiLCAiRXhjZXB0aW9uIik7CgoJLy8gW0wgKyBDbGFzcyArIDsKCS8vIFByaW1pdGl2ZSBD
bGFzcyBuYW1lIGlzIG5vdCB2YWxpZCAKCglleHBlY3QoIltMaW50OyIsICAgICAiRXhjZXB0aW9u
Iik7CglleHBlY3QoIltMYm9vbGVhbjsiLCAiRXhjZXB0aW9uIik7CglleHBlY3QoIltMbG9uZzsi
LCAgICAiRXhjZXB0aW9uIik7CglleHBlY3QoIltMZmxvYXQ7IiwgICAiRXhjZXB0aW9uIik7Cgll
eHBlY3QoIltMZG91YmxlOyIsICAiRXhjZXB0aW9uIik7CglleHBlY3QoIltMYnl0ZTsiLCAgICAi
RXhjZXB0aW9uIik7CglleHBlY3QoIltMc2hvcnQ7IiwgICAiRXhjZXB0aW9uIik7CglleHBlY3Qo
IltMY2hhcjsiLCAgICAiRXhjZXB0aW9uIik7CglleHBlY3QoIltMdm9pZDsiLCAgICAiRXhjZXB0
aW9uIik7CgoJLy8gamF2YS5sYW5nLk9iamVjdFtdICAgICA9PSBbTGphdmEubGFuZy5PYmplY3Q7
CgkvLyBqYXZhLmxhbmcuT2JqZWN0W11bXSAgID09IFtbTGphdmEubGFuZy5PYmplY3Q7CgkvLyBq
YXZhLmxhbmcuU3RyaW5nW10gICAgID09IFtMamF2YS5sYW5nLlN0cmluZzsKCS8vIGphdmEubGFu
Zy5TdHJpbmdbXVtdICAgPT0gW1tMamF2YS5sYW5nLlN0cmluZzsKCglleHBlY3QoIltMamF2YS5s
YW5nLk9iamVjdDsiLCAgImphdmEubGFuZy5PYmplY3RbXSIpOwoJZXhwZWN0KCJbW0xqYXZhLmxh
bmcuT2JqZWN0OyIsICJqYXZhLmxhbmcuT2JqZWN0W11bXSIpOwoJZXhwZWN0KCJbTGphdmEubGFu
Zy5TdHJpbmc7IiwgICJqYXZhLmxhbmcuU3RyaW5nW10iKTsKCWV4cGVjdCgiW1tMamF2YS5sYW5n
LlN0cmluZzsiLCAiamF2YS5sYW5nLlN0cmluZ1tdW10iKTsKCgkvLyBMICsgQ2xhc3MgbXVzdCBm
b2xsb3cgMC1OIFsgY2hhcmFjdGVycwoKCWV4cGVjdCgiTGphdmEubGFuZy5PYmplY3Q7IiwgIkV4
Y2VwdGlvbiIpOwoJZXhwZWN0KCJMamF2YS5sYW5nLlN0cmluZzsiLCAiRXhjZXB0aW9uIik7CgoJ
Ly8gTWlzYyBpbnZhbGlkIGNsYXNzIG5hbWVzCgoJZXhwZWN0KCJMIiwgICAgICAgICAgIkV4Y2Vw
dGlvbiIpOwoJZXhwZWN0KCJMOyIsICAgICAgICAgIkV4Y2VwdGlvbiIpOwoJZXhwZWN0KCJMUzsi
LCAgICAgICAgIkV4Y2VwdGlvbiIpOwoJZXhwZWN0KCJbTE9iamVjdDsiLCAgIkV4Y2VwdGlvbiIp
OwoJZXhwZWN0KCJbW0xPYmplY3Q7IiwgIkV4Y2VwdGlvbiIpOwoJZXhwZWN0KCJbTFN0cmluZzsi
LCAgIkV4Y2VwdGlvbiIpOwoJZXhwZWN0KCJbW0xTdHJpbmc7IiwgIkV4Y2VwdGlvbiIpOwoJZXhw
ZWN0KCJbW1N0cmluZzsiLCAgIkV4Y2VwdGlvbiIpOwoJZXhwZWN0KCJbW09iamVjdDsiLCAgIkV4
Y2VwdGlvbiIpOwoJZXhwZWN0KCJbW2ludDsiLCAgICAgIkV4Y2VwdGlvbiIpOwoJZXhwZWN0KCJM
U3RyaW5nOyIsICAgIkV4Y2VwdGlvbiIpOwoJZXhwZWN0KCJMOyIsICAgICAgICAgIkV4Y2VwdGlv
biIpOwoJZXhwZWN0KCJbW1EiLCAgICAgICAgIkV4Y2VwdGlvbiIpOyAgLy8gYXJyYXkgb2YgcHJp
bWl0aXZlIHR5cGUgaXMgbm90IGFsbG93ZWQKCWV4cGVjdCgiW3ZvaWQiLCAgICAgICJFeGNlcHRp
b24iKTsgIC8vIGFycmF5IG9mIHZvaWQgaXMgbm90IGFsbG93ZWQKCWV4cGVjdCgiW1tMamF2YS9s
YW5nL09iamVjdDsiLCAiRXhjZXB0aW9uIik7IC8vIGNsYXNzZXMgbXVzdCB1c2UgLiBhcyBzZXBl
cmF0b3IKCWV4cGVjdCgiW1tMamF2YS5sYW5nLlN0cmluZyIsICAiRXhjZXB0aW9uIik7IC8vIG5l
ZWQgOyBhdCB0aGUgZW5kIG9mIGNsYXNzIG5hbWUKCWV4cGVjdCgiW1tqYXZhLmxhbmcuU3RyaW5n
OyIsICAiRXhjZXB0aW9uIik7IC8vIG5lZWQgTCBhZnRlciBbCglleHBlY3QoIiIsICAgICAgICAg
ICAiRXhjZXB0aW9uIik7CiAgICB9CgogICAgc3RhdGljIHZvaWQgZXhwZWN0KFN0cmluZyBjbHNO
YW1lLCBTdHJpbmcgZXhwZWN0ZWQpIHRocm93cyBFeGNlcHRpb24gewoJU3RyaW5nIHJlc3VsdCA9
IGxvYWRCeU5hbWUoY2xzTmFtZSk7CgoJaWYgKCEgcmVzdWx0LmVxdWFscyhleHBlY3RlZCkpIHsK
CSAgICBTdHJpbmdCdWZmZXIgbXNnID0gbmV3IFN0cmluZ0J1ZmZlcigpOwoKCSAgICBtc2cuYXBw
ZW5kKCJmb3IgY2xzTmFtZSBcIiIgKyBjbHNOYW1lICsgIlwiIGV4cGVjdGVkIFwiIiArCgkJICAg
ICAgIGV4cGVjdGVkICsgIlwiIGJ1dCBnb3QgXCIiICsgcmVzdWx0ICsgIlwiIik7CgoJICAgIFN5
c3RlbS5lcnIucHJpbnRsbihtc2cudG9TdHJpbmcoKSk7Cgl9CiAgICB9CgogICAgc3RhdGljIFN0
cmluZyBsb2FkQnlOYW1lKFN0cmluZyBjbHNOYW1lKSB0aHJvd3MgRXhjZXB0aW9uIHsKICAgIAl0
cnkgewoJICAgIENsYXNzIGMgPSBDbGFzcy5mb3JOYW1lKGNsc05hbWUpOwoJICAgIGlmIChjID09
IG51bGwpIHsKCQkvLyBUaGlzIHNob3VsZCBuZXZlciBoYXBwZW4KCQl0aHJvdyBuZXcgTnVsbFBv
aW50ZXJFeGNlcHRpb24oIkNsYXNzLmZvck5hbWUoIiArCgkJICAgIGNsc05hbWUgKyAiKSByZXR1
cm5lZCBudWxsIik7CgkgICAgfQoJICAgIGlmICghYy5pc0FycmF5KCkgJiYgIWMuaXNQcmltaXRp
dmUoKSkgewoJCS8vIEluIHRoaXMgY2FzZSB3ZSB0cmllZCB0byBsb2FkIGEgcHJpbWl0aXZlCgkJ
Ly8gdHlwZSBieSBuYW1lIChsaWtlICJpbnQiKSwgYnV0IHdlIGdvdAoJCS8vIGFuIGFjdHVhbCBj
bGFzcyB0aGF0IHVzZWQgdGhhdCBuYW1lLgoJCS8vIFdlIG9ubHkgdHJ5IHRvIGxvYWQgYXJyYXlz
IGFuZCBwcmltaXRpdmUKCQkvLyB0eXBlcyBpbiB0aGlzIHNldCBvZiB0ZXN0cywgc28ganVzdCBw
cmV0ZW5kCgkJLy8gdGhhdCB3ZSBkaWQgbm90IGZpbmQgYSBjbGFzcyBuYW1lZCAiaW50Ii4KCQly
ZXR1cm4gIkV4Y2VwdGlvbiI7CgkgICAgfQoJCQoJICAgIHJldHVybiBnZXROYW1lRnJvbUNsYXNz
KCBjICk7Cgl9IGNhdGNoIChJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gZSkgeyAvLyBKREsgMS4x
CgkgICAgcmV0dXJuICJFeGNlcHRpb24iOwoJfSBjYXRjaCAoQ2xhc3NOb3RGb3VuZEV4Y2VwdGlv
biBlKSB7IC8vIEpESyAxLjIKCSAgICByZXR1cm4gIkV4Y2VwdGlvbiI7Cgl9CiAgICB9CgogICAg
c3RhdGljIFN0cmluZyBnZXROYW1lRnJvbUNsYXNzKENsYXNzIHR5cGUpIHsKCVN0cmluZ0J1ZmZl
ciBuYW1lID0gbmV3IFN0cmluZ0J1ZmZlcigpOwogICAgCgl3aGlsZSAodHlwZS5pc0FycmF5KCkp
IHsKCSAgICBuYW1lLmFwcGVuZCgiW10iKTsKCSAgICB0eXBlID0gdHlwZS5nZXRDb21wb25lbnRU
eXBlKCk7Cgl9CgluYW1lLmluc2VydCgwLHR5cGUuZ2V0TmFtZSgpKTsKCXJldHVybiBuYW1lLnRv
U3RyaW5nKCk7CiAgICB9CiAgICAKICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1td
IGFyZ3YpIHRocm93cyBFeGNlcHRpb24gewoJdGVzdExvYWRBcnJheSgpOwkKCVN5c3RlbS5vdXQu
cHJpbnRsbigiZG9uZSIpOwogICAgfQp9CgovKiBFeHBlY3RlZCBPdXRwdXQ6CmRvbmUKKi8K


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]