Closed Bug 209884 Opened 22 years ago Closed 22 years ago

Fix bad users of JS_GetContextPrivate()

Categories

(Core :: DOM: Core & HTML, defect)

defect
Not set
normal

Tracking

()

RESOLVED FIXED

People

(Reporter: jst, Unassigned)

Details

Attachments

(1 file)

Some of our JS_GetContextPrivate() callers assume there's an nsIScriptContext as the contexts private, that's not necessarily true, and we have ways to verify that...
This fixes all bad callers, but it makes everyone who depends on the dom's nsIScriptContext now also depend on the js module, kinda lame, but not really. Thoughts?
Attachment #125986 - Flags: superreview?(peterv)
Attachment #125986 - Flags: review?(caillon)
Comment on attachment 125986 [details] [diff] [review] Add an inline helper to nsIScriptContext to safely get the nsIScriptContext from a JSContext Is there a way we can get rid of the multiple helpers which do the same thing? E.g. nsContentUtils::GetDynamicScriptContext, nsJSUtils::GetDynamicScriptContext, etc? Would it make sense to make GetScriptContextFromJSContext() a static instead of an inline and get rid of those helpers?
We can't do that due to linkage issues (if we did, we'd need to start making things link with the DOM component, not cool). The idea is to have the logic in an inline helper and in libraries where this is used a lot, we wrap the inline helper in a library-local function to reduce number of copies of the code in the inline helper.
Comment on attachment 125986 [details] [diff] [review] Add an inline helper to nsIScriptContext to safely get the nsIScriptContext from a JSContext Okay. r=caillon
Attachment #125986 - Flags: review?(caillon) → review+
Attachment #125986 - Flags: superreview?(peterv) → superreview+
FIXED.
Status: NEW → RESOLVED
Closed: 22 years ago
Resolution: --- → FIXED
Good catch, fix checked in.
tbox shown large code size increase libjsdom.so Total: +6704 (+11164/-4460) Code: +6404 (+6408/-4) Data: +300 (+4756/-4456) +6404 (+6408/-4) T (CODE) +6404 (+6408/-4) UNDEF:libjsdom.so:T +1036 ToLowerCase(nsAString const &, nsAString &) +1036 ToUpperCase(nsAString const &, nsAString &) +724 LocaleCompare(JSContext *, JSString *, JSString *, long *) +472 ToLowerCase(nsAString &) +472 ToUpperCase(nsAString &) +416 NS_InitCaseConversion(void) +296 ChangeCase(JSContext *, JSString *, long *, void (*)(nsAString const &, nsAString &)) +248 nsCaseInsensitiveStringComparator::operator()(unsigned short, unsigned short) const +192 nsShutdownObserver::QueryInterface(nsID const &, void **) +156 ToUpperCase(unsigned short) +148 ToLowerCase(unsigned short) +124 nsCaseInsensitiveStringComparator::operator()(unsigned short const *, unsigned short const *, unsigned int) const +120 ToLowerCase(nsASingleFragmentString &) +120 ToUpperCase(nsASingleFragmentString &) +92 nsShutdownObserver::Observe(nsISupports *, char const *, unsigned short const *) +72 ToLowerCase(nsString &) +72 ToUpperCase(nsString &) +68 CaseInsensitiveFindInReadable(nsAString const &, nsReadingIterator<unsigned short> &, nsReadingIterator<unsigned short> &) +60 nsShutdownObserver::Release(void) +60 nsShutdownObserver::~nsShutdownObserver(void) +56 nsShutdownObserver::nsShutdownObserver(void) +52 LocationImpl::SetHrefWithBase(nsAString const &, nsIURI *, int) +44 LocaleToLowerCase(JSContext *, JSString *, long *) +44 LocaleToUpperCase(JSContext *, JSString *, long *) +40 nsJSEnvironment::ShutDown(void) +36 nsJSContext::~nsJSContext(void) +28 nsICaseConversion::GetIID(void) +28 nsICollationFactory::GetIID(void) +28 nsILocaleService::GetIID(void) +24 nsJSUtils::GetDynamicScriptContext(JSContext *, nsIScriptContext **) +20 nsJSContext::nsJSContext(JSRuntime *) +16 nsShutdownObserver::AddRef(void) +8 GlobalWindowImpl::SecurityCheckURL(char const *) -4 GlobalWindowImpl::Close(void) +208 (+1396/-1188) R (DATA) +208 (+1396/-1188) UNDEF:libjsdom.so:R +724 kEventListenerManagerCID.7424 +391 prefix_nsI.5203 +104 format.1908 +96 kWindowMediatorCID +24 kCollationFactoryCID +16 _Q216nsILocaleService29GetIID__16nsILocaleService..0.iid +16 _Q217nsICaseConversion30GetIID__17nsICaseConversion..0.iid +16 _Q219nsICollationFactory32GetIID__19nsICollationFactory..0.iid +7 prefix_nsIDOM.5202 +2 EIGHT_BIT.7306 -2 EIGHT_BIT.7294 -7 prefix_nsIDOM.5199 -27 kJSRuntimeServiceContractID -37 kScriptSecurityManagerContractID -391 prefix_nsI.5200 -724 kEventListenerManagerCID.7412 +56 (+228/-172) D (DATA) +56 (+228/-172) UNDEF:libjsdom.so:D +64 hash_table_ops.2079 +64 nsDOMSOFactory virtual table +32 nsShutdownObserver virtual table +24 first.3881 +24 nsCaseInsensitiveStringComparator virtual table +12 localeCallbacks.3508 +4 count.5652 +4 gCaseConv -4 sSecurityManager -4 sRuntimeService -4 sReadyForGC -4 sGCTimer -4 sDidShutdown -4 sContextCount -4 nsJSEnvironment::sRuntime -4 first.3790 -4 errorDepth.3150 -4 count.5649 -12 gEventArgv -20 isInitialized.3800 -36 force_to_data -64 hash_table_ops.2076 +36 (+3132/-3096) B (DATA) +36 (+3132/-3096) UNDEF:libjsdom.so:B +52 interface_list.5377 +52 interface_list.5415 +52 interface_list.5617 +48 interface_list.5583 +44 interface_list.5511 +40 interface_list.5609 +36 interface_list.5611 +32 interface_list.5357 +32 interface_list.5513 +28 gCollation +28 interface_list.5413 +28 interface_list.5425 +28 interface_list.5429 +28 interface_list.5439 +28 interface_list.5455 +28 interface_list.5457 +28 interface_list.5469 +28 interface_list.5471 +28 interface_list.5473 +28 interface_list.5485 +28 interface_list.5501 +28 interface_list.5519 +28 interface_list.5535 +24 _.tmp_130.5618 +24 interface_list.5411 +24 interface_list.5427 +24 interface_list.5431 +24 interface_list.5433 +24 interface_list.5435 +24 interface_list.5437 +24 interface_list.5441 +24 interface_list.5443 +24 interface_list.5445 +24 interface_list.5447 +24 interface_list.5449 +24 interface_list.5451 +24 interface_list.5453 +24 interface_list.5459 +24 interface_list.5461 +24 interface_list.5463 +24 interface_list.5465 +24 interface_list.5467 +24 interface_list.5475 +24 interface_list.5477 +24 interface_list.5479 +24 interface_list.5481 +24 interface_list.5483 +24 interface_list.5487 +24 interface_list.5489 +24 interface_list.5491 +24 interface_list.5493 +24 interface_list.5495 +24 interface_list.5497 +24 interface_list.5499 +24 interface_list.5503 +24 interface_list.5505 +24 interface_list.5507 +24 interface_list.5509 +24 interface_list.5515 +24 interface_list.5517 +24 interface_list.5521 +24 interface_list.5523 +24 interface_list.5525 +24 interface_list.5527 +24 interface_list.5529 +24 interface_list.5531 +24 interface_list.5533 +24 interface_list.5537 +24 interface_list.5539 +24 interface_list.5541 +24 interface_list.5543 +16 interface_list.5375 +16 interface_list.5387 +16 interface_list.5391 +16 interface_list.5393 +16 interface_list.5395 +16 interface_list.5397 +16 interface_list.5419 +16 interface_list.5565 +16 interface_list.5567 +16 interface_list.5615 +12 interface_list.5359 +12 interface_list.5361 +12 interface_list.5365 +12 interface_list.5373 +12 interface_list.5379 +12 interface_list.5383 +12 interface_list.5385 +12 interface_list.5389 +12 interface_list.5417 +12 interface_list.5421 +12 interface_list.5577 +12 interface_list.5581 +12 interface_list.5585 +12 interface_list.5601 +12 interface_list.5613 +8 interface_list.5363 +8 interface_list.5367 +8 interface_list.5369 +8 interface_list.5371 +8 interface_list.5381 +8 interface_list.5399 +8 interface_list.5401 +8 interface_list.5403 +8 interface_list.5405 +8 interface_list.5407 +8 interface_list.5409 +8 interface_list.5423 +8 interface_list.5545 +8 interface_list.5547 +8 interface_list.5549 +8 interface_list.5551 +8 interface_list.5553 +8 interface_list.5555 +8 interface_list.5557 +8 interface_list.5559 +8 interface_list.5561 +8 interface_list.5563 +8 interface_list.5569 +8 interface_list.5571 +8 interface_list.5573 +8 interface_list.5575 +8 interface_list.5579 +8 interface_list.5587 +8 interface_list.5589 +8 interface_list.5591 +8 interface_list.5593 +8 interface_list.5595 +8 interface_list.5597 +8 interface_list.5599 +8 interface_list.5603 +8 interface_list.5605 +8 interface_list.5607 +4 _.tmp_0.5358 +4 _.tmp_1.5360 +4 _.tmp_10.5378 +4 _.tmp_100.5558 +4 _.tmp_101.5560 +4 _.tmp_102.5562 +4 _.tmp_103.5564 +4 _.tmp_104.5566 +4 _.tmp_105.5568 +4 _.tmp_106.5570 +4 _.tmp_107.5572 +4 _.tmp_108.5574 +4 _.tmp_109.5576 +4 _.tmp_11.5380 +4 _.tmp_110.5578 +4 _.tmp_111.5580 +4 _.tmp_112.5582 +4 _.tmp_113.5584 +4 _.tmp_114.5586 +4 _.tmp_115.5588 +4 _.tmp_116.5590 +4 _.tmp_117.5592 +4 _.tmp_118.5594 +4 _.tmp_119.5596 +4 _.tmp_12.5382 +4 _.tmp_120.5598 +4 _.tmp_121.5600 +4 _.tmp_122.5602 +4 _.tmp_123.5604 +4 _.tmp_124.5606 +4 _.tmp_125.5608 +4 _.tmp_126.5610 +4 _.tmp_127.5612 +4 _.tmp_128.5614 +4 _.tmp_129.5616 +4 _.tmp_13.5384 +4 _.tmp_131.6247 +4 _.tmp_14.5386 +4 _.tmp_15.5388 +4 _.tmp_16.5390 +4 _.tmp_17.5392 +4 _.tmp_18.5394 +4 _.tmp_19.5396 +4 _.tmp_2.5362 +4 _.tmp_20.5398 +4 _.tmp_21.5400 +4 _.tmp_22.5402 +4 _.tmp_23.5404 +4 _.tmp_24.5406 +4 _.tmp_25.5408 +4 _.tmp_26.5410 +4 _.tmp_27.5412 +4 _.tmp_28.5414 +4 _.tmp_29.5416 +4 _.tmp_3.5364 +4 _.tmp_30.5418 +4 _.tmp_31.5420 +4 _.tmp_32.5422 +4 _.tmp_33.5424 +4 _.tmp_34.5426 +4 _.tmp_35.5428 +4 _.tmp_36.5430 +4 _.tmp_37.5432 +4 _.tmp_38.5434 +4 _.tmp_39.5436 +4 _.tmp_4.5366 +4 _.tmp_40.5438 +4 _.tmp_41.5440 +4 _.tmp_42.5442 +4 _.tmp_43.5444 +4 _.tmp_44.5446 +4 _.tmp_45.5448 +4 _.tmp_46.5450 +4 _.tmp_47.5452 +4 _.tmp_48.5454 +4 _.tmp_49.5456 +4 _.tmp_5.5368 +4 _.tmp_50.5458 +4 _.tmp_51.5460 +4 _.tmp_52.5462 +4 _.tmp_53.5464 +4 _.tmp_54.5466 +4 _.tmp_55.5468 +4 _.tmp_56.5470 +4 _.tmp_57.5472 +4 _.tmp_58.5474 +4 _.tmp_59.5476 +4 _.tmp_6.5370 +4 _.tmp_60.5478 +4 _.tmp_61.5480 +4 _.tmp_62.5482 +4 _.tmp_63.5484 +4 _.tmp_64.5486 +4 _.tmp_65.5488 +4 _.tmp_66.5490 +4 _.tmp_67.5492 +4 _.tmp_68.5494 +4 _.tmp_69.5496 +4 _.tmp_7.5372 +4 _.tmp_70.5498 +4 _.tmp_71.5500 +4 _.tmp_72.5502 +4 _.tmp_73.5504 +4 _.tmp_74.5506 +4 _.tmp_75.5508 +4 _.tmp_76.5510 +4 _.tmp_77.5512 +4 _.tmp_78.5514 +4 _.tmp_79.5516 +4 _.tmp_8.5374 +4 _.tmp_80.5518 +4 _.tmp_81.5520 +4 _.tmp_82.5522 +4 _.tmp_83.5524 +4 _.tmp_84.5526 +4 _.tmp_85.5528 +4 _.tmp_86.5530 +4 _.tmp_87.5532 +4 _.tmp_88.5534 +4 _.tmp_89.5536 +4 _.tmp_9.5376 +4 _.tmp_90.5538 +4 _.tmp_91.5540 +4 _.tmp_92.5542 +4 _.tmp_93.5544 +4 _.tmp_94.5546 +4 _.tmp_95.5548 +4 _.tmp_96.5550 +4 _.tmp_97.5552 +4 _.tmp_98.5554 +4 _.tmp_99.5556 +4 errorDepth.3174 +4 isInitialized.3891 +4 nsJSEnvironment::sRuntime +4 sContextCount +4 sDidShutdown +4 sGCTimer +4 sReadyForGC +4 sRuntimeService +4 sSecurityManager +4 sSupportsIID.6246 -4 sSupportsIID.6243 -4 _.tmp_99.5553 -4 _.tmp_98.5551 -4 _.tmp_97.5549 -4 _.tmp_96.5547 -4 _.tmp_95.5545 -4 _.tmp_94.5543 -4 _.tmp_93.5541 -4 _.tmp_92.5539 -4 _.tmp_91.5537 -4 _.tmp_90.5535 -4 _.tmp_9.5373 -4 _.tmp_89.5533 -4 _.tmp_88.5531 -4 _.tmp_87.5529 -4 _.tmp_86.5527 -4 _.tmp_85.5525 -4 _.tmp_84.5523 -4 _.tmp_83.5521 -4 _.tmp_82.5519 -4 _.tmp_81.5517 -4 _.tmp_80.5515 -4 _.tmp_8.5371 -4 _.tmp_79.5513 -4 _.tmp_78.5511 -4 _.tmp_77.5509 -4 _.tmp_76.5507 -4 _.tmp_75.5505 -4 _.tmp_74.5503 -4 _.tmp_73.5501 -4 _.tmp_72.5499 -4 _.tmp_71.5497 -4 _.tmp_70.5495 -4 _.tmp_7.5369 -4 _.tmp_69.5493 -4 _.tmp_68.5491 -4 _.tmp_67.5489 -4 _.tmp_66.5487 -4 _.tmp_65.5485 -4 _.tmp_64.5483 -4 _.tmp_63.5481 -4 _.tmp_62.5479 -4 _.tmp_61.5477 -4 _.tmp_60.5475 -4 _.tmp_6.5367 -4 _.tmp_59.5473 -4 _.tmp_58.5471 -4 _.tmp_57.5469 -4 _.tmp_56.5467 -4 _.tmp_55.5465 -4 _.tmp_54.5463 -4 _.tmp_53.5461 -4 _.tmp_52.5459 -4 _.tmp_51.5457 -4 _.tmp_50.5455 -4 _.tmp_5.5365 -4 _.tmp_49.5453 -4 _.tmp_48.5451 -4 _.tmp_47.5449 -4 _.tmp_46.5447 -4 _.tmp_45.5445 -4 _.tmp_44.5443 -4 _.tmp_43.5441 -4 _.tmp_42.5439 -4 _.tmp_41.5437 -4 _.tmp_40.5435 -4 _.tmp_4.5363 -4 _.tmp_39.5433 -4 _.tmp_38.5431 -4 _.tmp_37.5429 -4 _.tmp_36.5427 -4 _.tmp_35.5425 -4 _.tmp_34.5423 -4 _.tmp_33.5421 -4 _.tmp_32.5419 -4 _.tmp_31.5417 -4 _.tmp_30.5415 -4 _.tmp_3.5361 -4 _.tmp_29.5413 -4 _.tmp_28.5411 -4 _.tmp_27.5409 -4 _.tmp_26.5407 -4 _.tmp_25.5405 -4 _.tmp_24.5403 -4 _.tmp_23.5401 -4 _.tmp_22.5399 -4 _.tmp_21.5397 -4 _.tmp_20.5395 -4 _.tmp_2.5359 -4 _.tmp_19.5393 -4 _.tmp_18.5391 -4 _.tmp_17.5389 -4 _.tmp_16.5387 -4 _.tmp_15.5385 -4 _.tmp_14.5383 -4 _.tmp_131.6244 -4 _.tmp_13.5381 -4 _.tmp_129.5613 -4 _.tmp_128.5611 -4 _.tmp_127.5609 -4 _.tmp_126.5607 -4 _.tmp_125.5605 -4 _.tmp_124.5603 -4 _.tmp_123.5601 -4 _.tmp_122.5599 -4 _.tmp_121.5597 -4 _.tmp_120.5595 -4 _.tmp_12.5379 -4 _.tmp_119.5593 -4 _.tmp_118.5591 -4 _.tmp_117.5589 -4 _.tmp_116.5587 -4 _.tmp_115.5585 -4 _.tmp_114.5583 -4 _.tmp_113.5581 -4 _.tmp_112.5579 -4 _.tmp_111.5577 -4 _.tmp_110.5575 -4 _.tmp_11.5377 -4 _.tmp_109.5573 -4 _.tmp_108.5571 -4 _.tmp_107.5569 -4 _.tmp_106.5567 -4 _.tmp_105.5565 -4 _.tmp_104.5563 -4 _.tmp_103.5561 -4 _.tmp_102.5559 -4 _.tmp_101.5557 -4 _.tmp_100.5555 -4 _.tmp_10.5375 -4 _.tmp_1.5357 -4 _.tmp_0.5355 -8 interface_list.5604 -8 interface_list.5602 -8 interface_list.5600 -8 interface_list.5596 -8 interface_list.5594 -8 interface_list.5592 -8 interface_list.5590 -8 interface_list.5588 -8 interface_list.5586 -8 interface_list.5584 -8 interface_list.5576 -8 interface_list.5572 -8 interface_list.5570 -8 interface_list.5568 -8 interface_list.5566 -8 interface_list.5560 -8 interface_list.5558 -8 interface_list.5556 -8 interface_list.5554 -8 interface_list.5552 -8 interface_list.5550 -8 interface_list.5548 -8 interface_list.5546 -8 interface_list.5544 -8 interface_list.5542 -8 interface_list.5420 -8 interface_list.5406 -8 interface_list.5404 -8 interface_list.5402 -8 interface_list.5400 -8 interface_list.5398 -8 interface_list.5396 -8 interface_list.5378 -8 interface_list.5368 -8 interface_list.5366 -8 interface_list.5364 -8 interface_list.5360 -12 interface_list.5610 -12 interface_list.5598 -12 interface_list.5582 -12 interface_list.5578 -12 interface_list.5574 -12 interface_list.5418 -12 interface_list.5414 -12 interface_list.5386 -12 interface_list.5382 -12 interface_list.5380 -12 interface_list.5376 -12 interface_list.5370 -12 interface_list.5362 -12 interface_list.5358 -12 interface_list.5356 -16 interface_list.5612 -16 interface_list.5564 -16 interface_list.5562 -16 interface_list.5416 -16 interface_list.5394 -16 interface_list.5392 -16 interface_list.5390 -16 interface_list.5388 -16 interface_list.5384 -16 interface_list.5372 -24 interface_list.5540 -24 interface_list.5538 -24 interface_list.5536 -24 interface_list.5534 -24 interface_list.5530 -24 interface_list.5528 -24 interface_list.5526 -24 interface_list.5524 -24 interface_list.5522 -24 interface_list.5520 -24 interface_list.5518 -24 interface_list.5514 -24 interface_list.5512 -24 interface_list.5506 -24 interface_list.5504 -24 interface_list.5502 -24 interface_list.5500 -24 interface_list.5496 -24 interface_list.5494 -24 interface_list.5492 -24 interface_list.5490 -24 interface_list.5488 -24 interface_list.5486 -24 interface_list.5484 -24 interface_list.5480 -24 interface_list.5478 -24 interface_list.5476 -24 interface_list.5474 -24 interface_list.5472 -24 interface_list.5464 -24 interface_list.5462 -24 interface_list.5460 -24 interface_list.5458 -24 interface_list.5456 -24 interface_list.5450 -24 interface_list.5448 -24 interface_list.5446 -24 interface_list.5444 -24 interface_list.5442 -24 interface_list.5440 -24 interface_list.5438 -24 interface_list.5434 -24 interface_list.5432 -24 interface_list.5430 -24 interface_list.5428 -24 interface_list.5424 -24 interface_list.5408 -24 _.tmp_130.5615 -28 interface_list.5532 -28 interface_list.5516 -28 interface_list.5498 -28 interface_list.5482 -28 interface_list.5470 -28 interface_list.5468 -28 interface_list.5466 -28 interface_list.5454 -28 interface_list.5452 -28 interface_list.5436 -28 interface_list.5426 -28 interface_list.5422 -28 interface_list.5410 -28 gOldJSGCCallback -32 interface_list.5510 -32 interface_list.5354 -36 interface_list.5608 -40 interface_list.5606 -44 interface_list.5508 -48 interface_list.5580 -52 interface_list.5614 -52 interface_list.5412 -52 interface_list.5374
Component: DOM → DOM: Core & HTML
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: