Skip to content

Commit f19e0ea

Browse files
robertsipkayichoi
authored andcommitted
Add a more secure type validator to PWM (#984)
IoT.js-DCO-1.0-Signed-off-by: Robert Sipka [email protected]
1 parent a8d0927 commit f19e0ea

File tree

1 file changed

+17
-13
lines changed

1 file changed

+17
-13
lines changed

src/modules/iotjs_module_pwm.c

Lines changed: 17 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -17,16 +17,16 @@
1717
#include "iotjs_module_pwm.h"
1818
#include "iotjs_objectwrap.h"
1919

20-
21-
static void iotjs_pwm_destroy(iotjs_pwm_t* pwm);
2220
static iotjs_pwm_t* iotjs_pwm_instance_from_jval(const iotjs_jval_t* jpwm);
23-
IOTJS_DEFINE_NATIVE_HANDLE_INFO(pwm);
21+
22+
IOTJS_DEFINE_NATIVE_HANDLE_INFO_THIS_MODULE(pwm);
2423

2524

2625
static iotjs_pwm_t* iotjs_pwm_create(const iotjs_jval_t* jpwm) {
2726
iotjs_pwm_t* pwm = IOTJS_ALLOC(iotjs_pwm_t);
2827
IOTJS_VALIDATED_STRUCT_CONSTRUCTOR(iotjs_pwm_t, pwm);
29-
iotjs_jobjectwrap_initialize(&_this->jobjectwrap, jpwm, &pwm_native_info);
28+
iotjs_jobjectwrap_initialize(&_this->jobjectwrap, jpwm,
29+
&this_module_native_info);
3030

3131
_this->period = -1;
3232
_this->duty_cycle = 0;
@@ -266,17 +266,19 @@ JHANDLER_FUNCTION(PWMConstructor) {
266266

267267

268268
JHANDLER_FUNCTION(SetPeriod) {
269+
JHANDLER_DECLARE_THIS_PTR(pwm, pwm);
270+
269271
DJHANDLER_CHECK_ARGS(1, number);
270272
DJHANDLER_CHECK_ARG_IF_EXIST(1, function);
271273

272274
const iotjs_jval_t* jcallback = JHANDLER_GET_ARG_IF_EXIST(1, function);
273-
const iotjs_jval_t* jpwm = JHANDLER_GET_THIS(object);
274-
iotjs_pwm_t* pwm = iotjs_pwm_instance_from_jval(jpwm);
275275

276276
IOTJS_VALIDATED_STRUCT_METHOD(iotjs_pwm_t, pwm);
277277
_this->period = JHANDLER_GET_ARG(0, number);
278278

279279
if (jcallback) {
280+
const iotjs_jval_t* jpwm = JHANDLER_GET_THIS(object);
281+
280282
PWM_ASYNC_COMMON_WORKER(iotjs_pwm_set_period, jpwm, jcallback,
281283
kPwmOpSetPeriod);
282284
} else {
@@ -290,17 +292,19 @@ JHANDLER_FUNCTION(SetPeriod) {
290292

291293

292294
JHANDLER_FUNCTION(SetDutyCycle) {
295+
JHANDLER_DECLARE_THIS_PTR(pwm, pwm);
296+
293297
DJHANDLER_CHECK_ARGS(1, number);
294298
DJHANDLER_CHECK_ARG_IF_EXIST(1, function);
295299

296300
const iotjs_jval_t* jcallback = JHANDLER_GET_ARG_IF_EXIST(1, function);
297-
const iotjs_jval_t* jpwm = JHANDLER_GET_THIS(object);
298-
iotjs_pwm_t* pwm = iotjs_pwm_instance_from_jval(jpwm);
299301

300302
IOTJS_VALIDATED_STRUCT_METHOD(iotjs_pwm_t, pwm);
301303
_this->duty_cycle = JHANDLER_GET_ARG(0, number);
302304

303305
if (jcallback) {
306+
const iotjs_jval_t* jpwm = JHANDLER_GET_THIS(object);
307+
304308
PWM_ASYNC_COMMON_WORKER(iotjs_pwm_set_dutycycle, jpwm, jcallback,
305309
kPwmOpSetDutyCycle);
306310
} else {
@@ -314,17 +318,18 @@ JHANDLER_FUNCTION(SetDutyCycle) {
314318

315319

316320
JHANDLER_FUNCTION(SetEnable) {
321+
JHANDLER_DECLARE_THIS_PTR(pwm, pwm);
322+
317323
DJHANDLER_CHECK_ARGS(1, boolean);
318324
DJHANDLER_CHECK_ARG_IF_EXIST(1, function);
319325

320326
const iotjs_jval_t* jcallback = JHANDLER_GET_ARG_IF_EXIST(1, function);
321-
const iotjs_jval_t* jpwm = JHANDLER_GET_THIS(object);
322-
iotjs_pwm_t* pwm = iotjs_pwm_instance_from_jval(jpwm);
323327

324328
IOTJS_VALIDATED_STRUCT_METHOD(iotjs_pwm_t, pwm);
325329
_this->enable = JHANDLER_GET_ARG(0, boolean);
326330

327331
if (jcallback) {
332+
const iotjs_jval_t* jpwm = JHANDLER_GET_THIS(object);
328333
PWM_ASYNC_COMMON_WORKER(iotjs_pwm_set_enable, jpwm, jcallback,
329334
kPwmOpSetEnable);
330335
} else {
@@ -338,14 +343,13 @@ JHANDLER_FUNCTION(SetEnable) {
338343

339344

340345
JHANDLER_FUNCTION(Close) {
341-
DJHANDLER_CHECK_THIS(object);
346+
JHANDLER_DECLARE_THIS_PTR(pwm, pwm);
342347
DJHANDLER_CHECK_ARG_IF_EXIST(0, function);
343348

344349
const iotjs_jval_t* jcallback = JHANDLER_GET_ARG_IF_EXIST(0, function);
345-
const iotjs_jval_t* jpwm = JHANDLER_GET_THIS(object);
346-
iotjs_pwm_t* pwm = iotjs_pwm_instance_from_jval(jpwm);
347350

348351
if (jcallback) {
352+
const iotjs_jval_t* jpwm = JHANDLER_GET_THIS(object);
349353
PWM_ASYNC_COMMON_WORKER(iotjs_pwm_close, jpwm, jcallback, kPwmOpClose);
350354
} else {
351355
if (!iotjs_pwm_close(pwm)) {

0 commit comments

Comments
 (0)