8152329: jvm should treat the "Multi-Release" jar manifest attribute name as case insensitive

Reviewed-by: iklam, jiangli, mseledtsov
This commit is contained in:
Calvin Cheung 2016-04-06 11:40:45 -07:00
parent 27216177ce
commit c282f25964
2 changed files with 17 additions and 2 deletions

View file

@ -233,6 +233,7 @@ ClassPathZipEntry::ClassPathZipEntry(jzfile* zip, const char* zip_name, bool is_
strcpy(copy, zip_name);
_zip_name = copy;
_is_boot_append = is_boot_append;
_multi_versioned = _unknown;
}
ClassPathZipEntry::~ClassPathZipEntry() {
@ -330,13 +331,20 @@ u1* ClassPathZipEntry::open_versioned_entry(const char* name, jint* filesize, TR
bool ClassPathZipEntry::is_multiple_versioned(TRAPS) {
assert(DumpSharedSpaces, "called only at dump time");
if (_multi_versioned != _unknown) {
return (_multi_versioned == _yes) ? true : false;
}
jint size;
char* buffer = (char*)open_entry("META-INF/MANIFEST.MF", &size, false, CHECK_false);
char* buffer = (char*)open_entry("META-INF/MANIFEST.MF", &size, true, CHECK_false);
if (buffer != NULL) {
if (strstr(buffer, "Multi-Release: true") != NULL) {
char* p = buffer;
for ( ; *p; ++p) *p = tolower(*p);
if (strstr(buffer, "multi-release: true") != NULL) {
_multi_versioned = _yes;
return true;
}
}
_multi_versioned = _no;
return false;
}
#endif // INCLUDE_CDS