Skip to content

Commit 54c2a8b

Browse files
Daniel Ballayichoi
authored andcommitted
Add a more secure type validator to ADC module based on #911 (#980)
IoT.js-DCO-1.0-Signed-off-by: Daniel Balla [email protected]
1 parent 92faae1 commit 54c2a8b

File tree

1 file changed

+12
-16
lines changed

1 file changed

+12
-16
lines changed

src/modules/iotjs_module_adc.c

Lines changed: 12 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -18,15 +18,15 @@
1818
#include "iotjs_objectwrap.h"
1919

2020

21-
static void iotjs_adc_destroy(iotjs_adc_t* adc);
22-
IOTJS_DEFINE_NATIVE_HANDLE_INFO(adc);
21+
IOTJS_DEFINE_NATIVE_HANDLE_INFO_THIS_MODULE(adc);
2322
static iotjs_adc_t* iotjs_adc_instance_from_jval(const iotjs_jval_t* jadc);
2423

2524

2625
static iotjs_adc_t* iotjs_adc_create(const iotjs_jval_t* jadc) {
2726
iotjs_adc_t* adc = IOTJS_ALLOC(iotjs_adc_t);
2827
IOTJS_VALIDATED_STRUCT_CONSTRUCTOR(iotjs_adc_t, adc);
29-
iotjs_jobjectwrap_initialize(&_this->jobjectwrap, jadc, &adc_native_info);
28+
iotjs_jobjectwrap_initialize(&_this->jobjectwrap, jadc,
29+
&this_module_native_info);
3030

3131
return adc;
3232
}
@@ -46,14 +46,14 @@ static void iotjs_adc_destroy(iotjs_adc_t* adc) {
4646

4747

4848
static iotjs_adc_reqwrap_t* iotjs_adc_reqwrap_create(
49-
const iotjs_jval_t* jcallback, const iotjs_jval_t* jadc, AdcOp op) {
49+
const iotjs_jval_t* jcallback, iotjs_adc_t* adc, AdcOp op) {
5050
iotjs_adc_reqwrap_t* adc_reqwrap = IOTJS_ALLOC(iotjs_adc_reqwrap_t);
5151
IOTJS_VALIDATED_STRUCT_CONSTRUCTOR(iotjs_adc_reqwrap_t, adc_reqwrap);
5252

5353
iotjs_reqwrap_initialize(&_this->reqwrap, jcallback, (uv_req_t*)&_this->req);
5454

5555
_this->req_data.op = op;
56-
_this->adc_instance = iotjs_adc_instance_from_jval(jadc);
56+
_this->adc_instance = adc;
5757
return adc_reqwrap;
5858
}
5959

@@ -204,11 +204,11 @@ static void iotjs_adc_close_worker(uv_work_t* work_req) {
204204
}
205205

206206

207-
#define ADC_ASYNC(call, jthis, jcallback, op) \
207+
#define ADC_ASYNC(call, this, jcallback, op) \
208208
do { \
209209
uv_loop_t* loop = iotjs_environment_loop(iotjs_environment_get()); \
210210
iotjs_adc_reqwrap_t* req_wrap = \
211-
iotjs_adc_reqwrap_create(jcallback, jthis, op); \
211+
iotjs_adc_reqwrap_create(jcallback, this, op); \
212212
uv_work_t* req = iotjs_adc_reqwrap_req(req_wrap); \
213213
uv_queue_work(loop, req, iotjs_adc_##call##_worker, iotjs_adc_after_work); \
214214
} while (0)
@@ -226,20 +226,18 @@ JHANDLER_FUNCTION(AdcConstructor) {
226226
iotjs_adc_set_configuration(adc, JHANDLER_GET_ARG(0, object));
227227

228228
const iotjs_jval_t* jcallback = JHANDLER_GET_ARG(1, function);
229-
ADC_ASYNC(open, jadc, jcallback, kAdcOpOpen);
229+
ADC_ASYNC(open, adc, jcallback, kAdcOpOpen);
230230
}
231231

232232

233233
JHANDLER_FUNCTION(Read) {
234-
DJHANDLER_CHECK_THIS(object);
234+
JHANDLER_DECLARE_THIS_PTR(adc, adc);
235235
DJHANDLER_CHECK_ARG_IF_EXIST(0, function);
236236

237237
const iotjs_jval_t* jcallback = JHANDLER_GET_ARG_IF_EXIST(0, function);
238-
const iotjs_jval_t* jadc = JHANDLER_GET_THIS(object);
239-
iotjs_adc_t* adc = iotjs_adc_instance_from_jval(jadc);
240238

241239
if (jcallback) {
242-
ADC_ASYNC(read, jadc, jcallback, kAdcOpRead);
240+
ADC_ASYNC(read, adc, jcallback, kAdcOpRead);
243241
} else {
244242
int32_t value = iotjs_adc_read(adc);
245243
if (value < 0) {
@@ -252,15 +250,13 @@ JHANDLER_FUNCTION(Read) {
252250

253251

254252
JHANDLER_FUNCTION(Close) {
255-
DJHANDLER_CHECK_THIS(object);
253+
JHANDLER_DECLARE_THIS_PTR(adc, adc);
256254
DJHANDLER_CHECK_ARG_IF_EXIST(0, function);
257255

258256
const iotjs_jval_t* jcallback = JHANDLER_GET_ARG_IF_EXIST(0, function);
259-
const iotjs_jval_t* jadc = JHANDLER_GET_THIS(object);
260-
iotjs_adc_t* adc = iotjs_adc_instance_from_jval(jadc);
261257

262258
if (jcallback) {
263-
ADC_ASYNC(close, jadc, jcallback, kAdcOpClose);
259+
ADC_ASYNC(close, adc, jcallback, kAdcOpClose);
264260
} else {
265261
if (!iotjs_adc_close(adc)) {
266262
JHANDLER_THROW(COMMON, "ADC Close Error");

0 commit comments

Comments
 (0)