1
0
mirror of https://github.com/rkd77/elinks.git synced 2024-06-30 01:55:30 +00:00

SMJS: Use JS_GetInstancePrivate where applicable.

This is a further precaution against reading a pointer from the wrong
type of object.  All of the JS_GetPrivate calls were already protected
with JS_InstanceOf checks if assertions are enabled, and many of them
also if assertions are not enabled.

[ Backported from commit 99f648b911 in
  ELinks 0.12.GIT.  --KON ]
This commit is contained in:
Kalle Olavi Niemitalo 2007-05-27 18:32:53 +03:00 committed by Kalle Olavi Niemitalo
parent 9bbd795787
commit 59b8eeb7fb
9 changed files with 79 additions and 43 deletions

View File

@ -89,7 +89,8 @@ document_get_property(JSContext *ctx, JSObject *obj, jsval id, jsval *vp)
assert(JS_InstanceOf(ctx, parent_win, (JSClass *) &window_class, NULL));
if_assert_failed return JS_FALSE;
vs = JS_GetPrivate(ctx, parent_win); /* from @window_class */
vs = JS_GetInstancePrivate(ctx, parent_win,
(JSClass *) &window_class, NULL);
doc_view = vs->doc_view;
document = doc_view->document;
ses = doc_view->session;
@ -191,7 +192,8 @@ document_set_property(JSContext *ctx, JSObject *obj, jsval id, jsval *vp)
assert(JS_InstanceOf(ctx, parent_win, (JSClass *) &window_class, NULL));
if_assert_failed return JS_FALSE;
vs = JS_GetPrivate(ctx, parent_win); /* from @window_class */
vs = JS_GetInstancePrivate(ctx, parent_win,
(JSClass *) &window_class, NULL);
doc_view = vs->doc_view;
document = doc_view->document;

View File

@ -125,7 +125,9 @@ static const JSFunctionSpec input_funcs[] = {
static struct form_state *
input_get_form_state(JSContext *ctx, JSObject *obj, struct view_state *vs)
{
int n = (int)(long)JS_GetPrivate(ctx, obj);
int n = (int)(long)JS_GetInstancePrivate(ctx, obj,
(JSClass *) &input_class,
NULL);
return &vs->form_info[n];
}
@ -160,7 +162,8 @@ input_get_property(JSContext *ctx, JSObject *obj, jsval id, jsval *vp)
assert(JS_InstanceOf(ctx, parent_win, (JSClass *) &window_class, NULL));
if_assert_failed return JS_FALSE;
vs = JS_GetPrivate(ctx, parent_win); /* from @window_class */
vs = JS_GetInstancePrivate(ctx, parent_win,
(JSClass *) &window_class, NULL);
doc_view = vs->doc_view;
document = doc_view->document;
fs = input_get_form_state(ctx, obj, vs);
@ -299,7 +302,8 @@ input_set_property(JSContext *ctx, JSObject *obj, jsval id, jsval *vp)
assert(JS_InstanceOf(ctx, parent_win, (JSClass *) &window_class, NULL));
if_assert_failed return JS_FALSE;
vs = JS_GetPrivate(ctx, parent_win); /* from @window_class */
vs = JS_GetInstancePrivate(ctx, parent_win,
(JSClass *) &window_class, NULL);
doc_view = vs->doc_view;
document = doc_view->document;
fs = input_get_form_state(ctx, obj, vs);
@ -405,7 +409,8 @@ input_click(JSContext *ctx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
assert(JS_InstanceOf(ctx, parent_win, (JSClass *) &window_class, NULL));
if_assert_failed return JS_FALSE;
vs = JS_GetPrivate(ctx, parent_win); /* from @window_class */
vs = JS_GetInstancePrivate(ctx, parent_win,
(JSClass *) &window_class, NULL);
doc_view = vs->doc_view;
document = doc_view->document;
ses = doc_view->session;
@ -457,7 +462,8 @@ input_focus(JSContext *ctx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
assert(JS_InstanceOf(ctx, parent_win, (JSClass *) &window_class, NULL));
if_assert_failed return JS_FALSE;
vs = JS_GetPrivate(ctx, parent_win); /* from @window_class */
vs = JS_GetInstancePrivate(ctx, parent_win,
(JSClass *) &window_class, NULL);
doc_view = vs->doc_view;
document = doc_view->document;
ses = doc_view->session;
@ -591,10 +597,12 @@ form_elements_get_property(JSContext *ctx, JSObject *obj, jsval id, jsval *vp)
assert(JS_InstanceOf(ctx, parent_win, (JSClass *) &window_class, NULL));
if_assert_failed return JS_FALSE;
vs = JS_GetPrivate(ctx, parent_win); /* from @window_class */
vs = JS_GetInstancePrivate(ctx, parent_win,
(JSClass *) &window_class, NULL);
doc_view = vs->doc_view;
document = doc_view->document;
form_view = JS_GetPrivate(ctx, parent_form); /* from @form_class */
form_view = JS_GetInstancePrivate(ctx, parent_form,
(JSClass *) &form_class, NULL);
form = find_form_by_form_view(document, form_view);
if (JSVAL_IS_STRING(id)) {
@ -647,10 +655,12 @@ form_elements_item(JSContext *ctx, JSObject *obj, uintN argc, jsval *argv, jsval
assert(JS_InstanceOf(ctx, parent_win, (JSClass *) &window_class, NULL));
if_assert_failed return JS_FALSE;
vs = JS_GetPrivate(ctx, parent_win); /* from @window_class */
vs = JS_GetInstancePrivate(ctx, parent_win,
(JSClass *) &window_class, NULL);
doc_view = vs->doc_view;
document = doc_view->document;
form_view = JS_GetPrivate(ctx, parent_form); /* from @form_class */
form_view = JS_GetInstancePrivate(ctx, parent_form,
(JSClass *) &form_class, NULL);
form = find_form_by_form_view(document, form_view);
if (argc != 1)
@ -704,10 +714,12 @@ form_elements_namedItem(JSContext *ctx, JSObject *obj, uintN argc, jsval *argv,
assert(JS_InstanceOf(ctx, parent_win, (JSClass *) &window_class, NULL));
if_assert_failed return JS_FALSE;
vs = JS_GetPrivate(ctx, parent_win); /* from @window_class */
vs = JS_GetInstancePrivate(ctx, parent_win,
(JSClass *) &window_class, NULL);
doc_view = vs->doc_view;
document = doc_view->document;
form_view = JS_GetPrivate(ctx, parent_form); /* from @form_class */
form_view = JS_GetInstancePrivate(ctx, parent_form,
(JSClass *) &form_class, NULL);
form = find_form_by_form_view(document, form_view);
if (argc != 1)
@ -804,9 +816,10 @@ form_get_property(JSContext *ctx, JSObject *obj, jsval id, jsval *vp)
assert(JS_InstanceOf(ctx, parent_win, (JSClass *) &window_class, NULL));
if_assert_failed return JS_FALSE;
vs = JS_GetPrivate(ctx, parent_win); /* from @window_class */
vs = JS_GetInstancePrivate(ctx, parent_win,
(JSClass *) &window_class, NULL);
doc_view = vs->doc_view;
fv = JS_GetPrivate(ctx, obj); /* from @form_class */
fv = JS_GetInstancePrivate(ctx, obj, (JSClass *) &form_class, NULL);
form = find_form_by_form_view(doc_view->document, fv);
assert(form);
@ -936,9 +949,10 @@ form_set_property(JSContext *ctx, JSObject *obj, jsval id, jsval *vp)
assert(JS_InstanceOf(ctx, parent_win, (JSClass *) &window_class, NULL));
if_assert_failed return JS_FALSE;
vs = JS_GetPrivate(ctx, parent_win); /* from @window_class */
vs = JS_GetInstancePrivate(ctx, parent_win,
(JSClass *) &window_class, NULL);
doc_view = vs->doc_view;
fv = JS_GetPrivate(ctx, obj); /* from @form_class */
fv = JS_GetInstancePrivate(ctx, obj, (JSClass *) &form_class, NULL);
form = find_form_by_form_view(doc_view->document, fv);
assert(form);
@ -1010,9 +1024,10 @@ form_reset(JSContext *ctx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
assert(JS_InstanceOf(ctx, parent_win, (JSClass *) &window_class, NULL));
if_assert_failed return JS_FALSE;
vs = JS_GetPrivate(ctx, parent_win); /* from @window_class */
vs = JS_GetInstancePrivate(ctx, parent_win,
(JSClass *) &window_class, NULL);
doc_view = vs->doc_view;
fv = JS_GetPrivate(ctx, obj); /* from @form_class */
fv = JS_GetInstancePrivate(ctx, obj, (JSClass *) &form_class, argv);
form = find_form_by_form_view(doc_view->document, fv);
assert(form);
@ -1045,10 +1060,11 @@ form_submit(JSContext *ctx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
assert(JS_InstanceOf(ctx, parent_win, (JSClass *) &window_class, NULL));
if_assert_failed return JS_FALSE;
vs = JS_GetPrivate(ctx, parent_win); /* from @window_class */
vs = JS_GetInstancePrivate(ctx, parent_win,
(JSClass *) &window_class, NULL);
doc_view = vs->doc_view;
ses = doc_view->session;
fv = JS_GetPrivate(ctx, obj); /* from @form_class */
fv = JS_GetInstancePrivate(ctx, obj, (JSClass *) &form_class, argv);
form = find_form_by_form_view(doc_view->document, fv);
assert(form);
@ -1127,7 +1143,8 @@ forms_get_property(JSContext *ctx, JSObject *obj, jsval id, jsval *vp)
assert(JS_InstanceOf(ctx, parent_win, (JSClass *) &window_class, NULL));
if_assert_failed return JS_FALSE;
vs = JS_GetPrivate(ctx, parent_win); /* from @window_class */
vs = JS_GetInstancePrivate(ctx, parent_win,
(JSClass *) &window_class, NULL);
doc_view = vs->doc_view;
document = doc_view->document;
@ -1171,7 +1188,8 @@ forms_item(JSContext *ctx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
assert(JS_InstanceOf(ctx, parent_win, (JSClass *) &window_class, NULL));
if_assert_failed return JS_FALSE;
vs = JS_GetPrivate(ctx, parent_win); /* from @window_class */
vs = JS_GetInstancePrivate(ctx, parent_win,
(JSClass *) &window_class, NULL);
if (argc != 1)
return JS_TRUE;
@ -1211,7 +1229,8 @@ forms_namedItem(JSContext *ctx, JSObject *obj, uintN argc, jsval *argv, jsval *r
assert(JS_InstanceOf(ctx, parent_win, (JSClass *) &window_class, NULL));
if_assert_failed return JS_FALSE;
vs = JS_GetPrivate(ctx, parent_win); /* from @window_class */
vs = JS_GetInstancePrivate(ctx, parent_win,
(JSClass *) &window_class, NULL);
doc_view = vs->doc_view;
document = doc_view->document;

View File

@ -158,7 +158,8 @@ location_get_property(JSContext *ctx, JSObject *obj, jsval id, jsval *vp)
assert(JS_InstanceOf(ctx, parent_win, (JSClass *) &window_class, NULL));
if_assert_failed return JS_FALSE;
vs = JS_GetPrivate(ctx, parent_win); /* from @window_class */
vs = JS_GetInstancePrivate(ctx, parent_win,
(JSClass *) &window_class, NULL);
if (!JSVAL_IS_INT(id))
return JS_TRUE;
@ -199,7 +200,8 @@ location_set_property(JSContext *ctx, JSObject *obj, jsval id, jsval *vp)
assert(JS_InstanceOf(ctx, parent_win, (JSClass *) &window_class, NULL));
if_assert_failed return JS_FALSE;
vs = JS_GetPrivate(ctx, parent_win); /* from @window_class */
vs = JS_GetInstancePrivate(ctx, parent_win,
(JSClass *) &window_class, NULL);
doc_view = vs->doc_view;
if (!JSVAL_IS_INT(id))

View File

@ -92,7 +92,8 @@ unibar_get_property(JSContext *ctx, JSObject *obj, jsval id, jsval *vp)
assert(JS_InstanceOf(ctx, parent_win, (JSClass *) &window_class, NULL));
if_assert_failed return JS_FALSE;
vs = JS_GetPrivate(ctx, parent_win); /* from @window_class */
vs = JS_GetInstancePrivate(ctx, parent_win,
(JSClass *) &window_class, NULL);
doc_view = vs->doc_view;
status = &doc_view->session->status;
bar = JS_GetPrivate(ctx, obj); /* from @menubar_class or @statusbar_class */
@ -150,7 +151,8 @@ unibar_set_property(JSContext *ctx, JSObject *obj, jsval id, jsval *vp)
assert(JS_InstanceOf(ctx, parent_win, (JSClass *) &window_class, NULL));
if_assert_failed return JS_FALSE;
vs = JS_GetPrivate(ctx, parent_win); /* from @window_class */
vs = JS_GetInstancePrivate(ctx, parent_win,
(JSClass *) &window_class, NULL);
doc_view = vs->doc_view;
status = &doc_view->session->status;
bar = JS_GetPrivate(ctx, obj); /* from @menubar_class or @statusbar_class */

View File

@ -126,7 +126,7 @@ window_get_property(JSContext *ctx, JSObject *obj, jsval id, jsval *vp)
if (!JS_InstanceOf(ctx, obj, (JSClass *) &window_class, NULL))
return JS_FALSE;
vs = JS_GetPrivate(ctx, obj); /* from @window_class */
vs = JS_GetInstancePrivate(ctx, obj, (JSClass *) &window_class, NULL);
/* No need for special window.location measurements - when
* location is then evaluated in string context, toString()
@ -256,7 +256,7 @@ window_set_property(JSContext *ctx, JSObject *obj, jsval id, jsval *vp)
if (!JS_InstanceOf(ctx, obj, (JSClass *) &window_class, NULL))
return JS_FALSE;
vs = JS_GetPrivate(ctx, obj); /* from @window_class */
vs = JS_GetInstancePrivate(ctx, obj, (JSClass *) &window_class, NULL);
if (JSVAL_IS_STRING(id)) {
if (!strcmp(jsval_to_string(ctx, &id), "location")) {
@ -304,7 +304,7 @@ window_alert(JSContext *ctx, JSObject *obj, uintN argc, jsval *argv, jsval *rval
if (!JS_InstanceOf(ctx, obj, (JSClass *) &window_class, argv)) return JS_FALSE;
vs = JS_GetPrivate(ctx, obj); /* from @window_class */
vs = JS_GetInstancePrivate(ctx, obj, (JSClass *) &window_class, argv);
if (argc != 1)
return JS_TRUE;
@ -363,7 +363,7 @@ window_open(JSContext *ctx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
if (!JS_InstanceOf(ctx, obj, (JSClass *) &window_class, argv)) return JS_FALSE;
vs = JS_GetPrivate(ctx, obj); /* from @window_class */
vs = JS_GetInstancePrivate(ctx, obj, (JSClass *) &window_class, argv);
doc_view = vs->doc_view;
ses = doc_view->session;

View File

@ -86,7 +86,8 @@ bookmark_get_property(JSContext *ctx, JSObject *obj, jsval id, jsval *vp)
if (!JS_InstanceOf(ctx, obj, (JSClass *) &bookmark_class, NULL))
return JS_FALSE;
bookmark = JS_GetPrivate(ctx, obj); /* from @bookmark_class */
bookmark = JS_GetInstancePrivate(ctx, obj,
(JSClass *) &bookmark_class, NULL);
if (!bookmark) return JS_FALSE;
@ -133,7 +134,8 @@ bookmark_set_property(JSContext *ctx, JSObject *obj, jsval id, jsval *vp)
if (!JS_InstanceOf(ctx, obj, (JSClass *) &bookmark_class, NULL))
return JS_FALSE;
bookmark = JS_GetPrivate(ctx, obj); /* from @bookmark_class */
bookmark = JS_GetInstancePrivate(ctx, obj,
(JSClass *) &bookmark_class, NULL);
if (!bookmark) return JS_FALSE;
@ -207,7 +209,8 @@ bookmark_folder_get_property(JSContext *ctx, JSObject *obj, jsval id, jsval *vp)
if (!JS_InstanceOf(ctx, obj, (JSClass *) &bookmark_folder_class, NULL))
return JS_FALSE;
folder = JS_GetPrivate(ctx, obj); /* from @bookmark_folder_class */
folder = JS_GetInstancePrivate(ctx, obj,
(JSClass *) &bookmark_folder_class, NULL);
title = JS_GetStringBytes(JS_ValueToString(ctx, id));
if (!title) {

View File

@ -45,7 +45,8 @@ cache_entry_get_property(JSContext *ctx, JSObject *obj, jsval id, jsval *vp)
if (!JS_InstanceOf(ctx, obj, (JSClass *) &cache_entry_class, NULL))
return JS_FALSE;
cached = JS_GetPrivate(ctx, obj); /* from @cache_entry_class */
cached = JS_GetInstancePrivate(ctx, obj,
(JSClass *) &cache_entry_class, NULL);
if (!cache_entry_is_valid(cached)) return JS_FALSE;
@ -108,7 +109,8 @@ cache_entry_set_property(JSContext *ctx, JSObject *obj, jsval id, jsval *vp)
if (!JS_InstanceOf(ctx, obj, (JSClass *) &cache_entry_class, NULL))
return JS_FALSE;
cached = JS_GetPrivate(ctx, obj); /* from @cache_entry_class */
cached = JS_GetInstancePrivate(ctx, obj,
(JSClass *) &cache_entry_class, NULL);
if (!cache_entry_is_valid(cached)) return JS_FALSE;
@ -160,7 +162,8 @@ cache_entry_finalize(JSContext *ctx, JSObject *obj)
assert(JS_InstanceOf(ctx, obj, (JSClass *) &cache_entry_class, NULL));
if_assert_failed return;
cached = JS_GetPrivate(ctx, obj); /* from @cache_entry_class */
cached = JS_GetInstancePrivate(ctx, obj,
(JSClass *) &cache_entry_class, NULL);
if (!cached) return;

View File

@ -29,7 +29,8 @@ keymap_get_property(JSContext *ctx, JSObject *obj, jsval id, jsval *vp)
if (!JS_InstanceOf(ctx, obj, (JSClass *) &keymap_class, NULL))
return JS_FALSE;
data = JS_GetPrivate(ctx, obj); /* from @keymap_class */
data = JS_GetInstancePrivate(ctx, obj,
(JSClass *) &keymap_class, NULL);
keystroke_str = JS_GetStringBytes(JS_ValueToString(ctx, id));
if (!keystroke_str) goto ret_null;
@ -83,7 +84,8 @@ keymap_set_property(JSContext *ctx, JSObject *obj, jsval id, jsval *vp)
if (!JS_InstanceOf(ctx, obj, (JSClass *) &keymap_class, NULL))
return JS_FALSE;
data = JS_GetPrivate(ctx, obj); /* from @keymap_class */
data = JS_GetInstancePrivate(ctx, obj,
(JSClass *) &keymap_class, NULL);
/* Ugly fact: we need to get the string from the id to give to bind_do,
* which will of course then convert the string back to an id... */
@ -155,7 +157,8 @@ keymap_finalize(JSContext *ctx, JSObject *obj)
assert(JS_InstanceOf(ctx, obj, (JSClass *) &keymap_class, NULL));
if_assert_failed return;
data = JS_GetPrivate(ctx, obj); /* from @keymap_class */
data = JS_GetInstancePrivate(ctx, obj,
(JSClass *) &keymap_class, NULL);
mem_free(data);
}

View File

@ -41,7 +41,8 @@ view_state_get_property(JSContext *ctx, JSObject *obj, jsval id, jsval *vp)
if (!JS_InstanceOf(ctx, obj, (JSClass *) &view_state_class, NULL))
return JS_FALSE;
vs = JS_GetPrivate(ctx, obj); /* from @view_state_class */
vs = JS_GetInstancePrivate(ctx, obj,
(JSClass *) &view_state_class, NULL);
undef_to_jsval(ctx, vp);
@ -81,7 +82,8 @@ view_state_set_property(JSContext *ctx, JSObject *obj, jsval id, jsval *vp)
if (!JS_InstanceOf(ctx, obj, (JSClass *) &view_state_class, NULL))
return JS_FALSE;
vs = JS_GetPrivate(ctx, obj); /* from @view_state_class */
vs = JS_GetInstancePrivate(ctx, obj,
(JSClass *) &view_state_class, NULL);
if (!JSVAL_IS_INT(id))
return JS_FALSE;