Closed
Bug 57210
Opened 24 years ago
Closed 24 years ago
If you have npjava32.dll in the Netscape 4.7x plugin dir, Mozilla crashes on startup
Categories
(Core Graveyard :: Plug-ins, defect, P1)
Tracking
(Not tracked)
VERIFIED
FIXED
People
(Reporter: kenkyee, Assigned: serhunt)
Details
(Keywords: crash, Whiteboard: [FIX IN HAND][rtm++])
Attachments
(4 files)
631 bytes,
patch
|
Details | Diff | Splinter Review | |
10.50 KB,
application/octet-stream
|
Details | |
836 bytes,
patch
|
Details | Diff | Splinter Review | |
1.26 KB,
patch
|
Details | Diff | Splinter Review |
As above. The workaround is to rename npjava32.dll to something else before
starting Mozilla. I can send my copy of npjava32.dll or my entire plugin
directory from Netscape if needed to reproduce this bug.
Netscape seems to be able to deal with renaming npjava32.dll so this is a
reasonable workaround.
This is regression introduced by fixing another bug (Mac "plugins"/"plug-ins"
thing.
The fix is easy and perfectly safe. Just adding a check for npjava* filename.
Whiteboard: [FIX IN HAND][rtm+]
Correction. Regression was introduced when we decided not to load anything from
the old installation except 'big three' and Java plugin. Check for npjava*.* was
accidentally dropped in version 1.121 of nsPluginHostImpl.cpp.
Comment 7•24 years ago
|
||
Marking [rtm need info] since I don't see a super review in here. Please mark
[rtm+] after getting one.
Whiteboard: [FIX IN HAND][rtm+] → [FIX IN HAND][rtm need info]
Hm... In fact, even without this patch no java dll should be picked from 4.x
plugins.
Shrirang, can you reproduce the problem? I seem to loose all my old java
plugins. Could be just invalid with current version of Mozilla.
Comment 9•24 years ago
|
||
Andrei, as you said, I lost my old java plugin and see some new files
there(npjava130_01c.dll...). there is no npjava32.dll at all and this problem
does not seem to happen. If I am not wrong, we stopped sniffing for java plugins
at all on windows after it started crashing in beta1....
Assignee | ||
Comment 10•24 years ago
|
||
Reporter: if you do use one of the recent Mozilla spins, would you please send
the dll in question to me, Shrirang or just attach it to the bug report?
Thanks.
Comment 11•24 years ago
|
||
Assignee | ||
Comment 12•24 years ago
|
||
Oh, this is IBM made plugin. I see the crash in PLC4.dll. Details to follow.
Assignee | ||
Comment 13•24 years ago
|
||
Please disregard all my previous comments. The problem is not with the java
plugin itself. Any plugin can display this, and I beleive we saw this before.
When we look through 4.x Plugins dir on start up we read all the plugins info in
order to decide whether to ignore a specific plugin or to use it. It crashes on
this stage, and it happens when the number of mime types listed in the plugin
version stamp does not correspont to the number of file extensions. As I said we
saw this with other plugins and our code is still not safe enough to deal with
this.
I'll try to come up with the patch soon.
Assignee | ||
Comment 14•24 years ago
|
||
OK, here is one-liner which fixes the crash. So, now when the data contains less
segments than variants it will just break off the loop.
static char** MakeStringArray(PRUint32 variants, char* data)
{
if((variants <= 0) || (data == NULL))
return NULL;
char ** array = (char **)PR_Calloc(variants, sizeof(char *));
if(array == NULL)
return NULL;
char * start = data;
for(PRUint32 i = 0; variants; i++)
{
char * p = PL_strchr(start, '|');
if(p != NULL)
*p = 0;
array[i] = PL_strdup(start);
+ if(p == NULL) // nothing more to look for
+ break;
start = ++p;
}
return array;
}
Assignee | ||
Comment 15•24 years ago
|
||
This version could be safer, since there is no garantee that somewhere in the
code it will not try to access array elemets without checking for null.
static char** MakeStringArray(PRUint32 variants, char* data)
{
if((variants <= 0) || (data == NULL))
return NULL;
char ** array = (char **)PR_Calloc(variants, sizeof(char *));
if(array == NULL)
return NULL;
char * start = data;
for(PRUint32 i = 0; variants; i++)
{
char * p = PL_strchr(start, '|');
if(p != NULL)
*p = 0;
array[i] = PL_strdup(start);
if(p == NULL) // nothing more to look for
{ // fill everything else with empty strings (safer?)
for(; variants; i++)
array[i] = PL_strdup("");
break;
}
start = ++p;
}
return array;
}
Assignee | ||
Comment 16•24 years ago
|
||
Comment 17•24 years ago
|
||
As long as the memory gets freed, ok with me. r=edburns.
Comment 18•24 years ago
|
||
This looks good. With respect to freeing the memory, I believe that this'll
happen in nsPluginFile::FreePluginInfo(). I only have two nits to pick:
1. Put a comment in that says something to the effect of, "although we expect
the MIME type and extension arrays to be of the same length, some plugins don't
adhere to this, so we need to be paranoid."
2. Instead of writing
++i;
for (; i < variants; ++i)
/* blah */
why not write
while (++i < variants)
/* blah */
(In fact, you may even want to work up a cleaner version of the patch for the
trunk that loops conditioned on the results of strchr, and then a second loop
that pads out if you've got records left over.)
Anyway, make the two changes above, and sr=waterson
Assignee | ||
Comment 19•24 years ago
|
||
Assignee | ||
Comment 20•24 years ago
|
||
Now, as I have sr=waterson, r=edburns, r=serge, I assume I can nominate it for
rtm+. Clearing regression keyword.
Keywords: regression
Whiteboard: [FIX IN HAND][rtm need info] → [FIX IN HAND][rtm+]
Assignee | ||
Comment 22•24 years ago
|
||
Checked in to the branch.
Assignee | ||
Comment 23•24 years ago
|
||
Trunk got it too.
Assignee | ||
Comment 24•24 years ago
|
||
Matking fixed.
Status: ASSIGNED → RESOLVED
Closed: 24 years ago
Resolution: --- → FIXED
Comment 25•24 years ago
|
||
Verified that this is fixed on today's windows branch build. Adding keyword:
vtrunk for trunk verification. Mozilla QA, to verify this bug, rename the
attachment in this bug as "npjava32.dll' and save it in the plugins folder under
4.x installation and launch seamonkey. There should be no crash and the browser
should launch.
Keywords: vtrunk
Comment 26•24 years ago
|
||
shrir@netscape.com, thanks for the clear steps to verify. I saved and renamed
the attachment to my 4.7 plugins folder and then launched Mozilla Seamonkey
without a crash.
Verified Fixed on Mozilla trunk
win32 installer build 102604 NT 4
Setting bug to Verified and removing vtrunk keyword
Status: RESOLVED → VERIFIED
Keywords: vtrunk
Updated•3 years ago
|
Product: Core → Core Graveyard
You need to log in
before you can comment on or make changes to this bug.
Description
•