Red Hat Bugzilla – Bug 466137
htmladmin gives 500 error
Last modified: 2015-01-04 18:34:23 EST
Point a browser to the admin server URL, click "Red Hat Administration Express" and authenticate, I end up at http://hptem080.cup.hp.com:9830/admin-serv/tasks/configuration/HTMLAdmin?op=index which gives a 500 error and this AS error log output:
"Premature end of script headers: htmladmin, referer: http://hptem080.cup.hp.com:9830/dist/download"
This happens on at least HP-UX 11.23 IA and PA with both RHDS 8.0.0 and 8.0.4.
A-ha, I got it running in a debugger and found it was having trouble getting a resource bundle from ICU. Turns out the htmladmin uses adminsdk's res_getstring() with the acceptLanguage set to the raw string from the browser, which I still had set to "en-US,en,en-CA,en-us,EN-US,EN,es-ES,es,no-NO,no,en-gb,ro-RO,ro,utf-8,utf,de-DE" after testing the SP7 security stuff. ICU chokes on that locale and returns U_ILLEGAL_ARGUMENT_ERROR. Returning my intl.accept_languages to the default fixes it.
There is no crash when it fails to resolve the locale, htmladmin just prints nothing at all since all the resource string lookups return empty strings.
It is the double quotes which is throwing it off. That is, en-US,en,en-CA,en-us,EN-US,EN,es-ES,es,no-NO,no,en-gb,ro-RO,ro,utf-8,utf,de-DE will work, but not "en-US,en,en-CA,en-us,EN-US,EN,es-ES,es,no-NO,no,en-gb,ro-RO,ro,utf-8,utf,de-DE"
You cannot set the language string to something containing quotes with the regular Preferences->Languages Choose... dialog, you have to go to
and set intl.accept_languages to the above value.
Furthermore, the browser (or perhaps Apache) will parse and append the string before it gets to htmladmin, and the value will be
This is what I've found in my testing. At any rate, it looks as though the fix is to handle U_ILLEGAL_ARGUMENT_ERROR, and just use the default language in that case.
Created attachment 325619 [details]
Created attachment 325699 [details]
cvs commit log
Reviewed by: nkinder (Thanks!)
Fix Description: If the locale string passed in to res_getstring is bogus, the CGI will just exit (no crash, no security problems) which causes the 500 error. ures_open returns U_ILLEGAL_ARGUMENT_ERROR if the locale string is bogus. In this case, just use NULL for the locale which will cause it to use the default one.
Platforms tested: RHEL5
Flag Day: no
Doc impact: no
fix verified - RHEL 5 - DS 8.1 Red Hat Administration Express available, able to view log and stop servers
An advisory has been issued which should help the problem
described in this bug report. This report is therefore being
closed with a resolution of ERRATA. For more information
on therefore solution and/or where to find the updated files,
please follow the link below. You may reopen this bug report
if the solution does not work for you.