From 28d2a8104e6d50402d44e3deb0ff245e6d8e7714 Mon Sep 17 00:00:00 2001 From: Jerry Cao Date: Wed, 22 Jun 2011 06:43:44 +0000 Subject: Check for valid file descriptor after opening, before writing data into it --- diff --git a/lights.c b/lights.c index f0c1cb5..c387faf 100755 --- a/lights.c +++ b/lights.c @@ -5,20 +5,22 @@ #include #include - #define BACKLIGHT "/sys/class/backlight/aml-bl/brightness" + static int set_light_backlight(struct light_device_t* dev, struct light_state_t const* state) { - int nwr, ret, fd; + int nwr, ret = -1, fd; char value[20]; int light_level; light_level =state->color&0xff; fd = open(BACKLIGHT, O_RDWR); - nwr = sprintf(value, "%d\n", light_level); - ret = write(fd, value, nwr); - close(fd); + if (fd > 0) { + nwr = sprintf(value, "%d\n", light_level); + ret = write(fd, value, nwr); + close(fd); + } return ret; } @@ -27,44 +29,37 @@ static int open_lights(const struct hw_module_t* module, char const* name, struct hw_device_t** device) { int res = -EINVAL; - int (*set_light)(struct light_device_t* dev, - struct light_state_t const* state); if (strcmp(LIGHT_ID_BACKLIGHT, name) == 0) { - struct light_device_t *dev = malloc(sizeof(struct light_device_t)); - if (!dev) { - return res; - } - - set_light = set_light_backlight; - - memset(dev, 0, sizeof(*dev)); - dev->common.tag = HARDWARE_DEVICE_TAG; - dev->common.version = 0; - dev->common.module = (struct hw_module_t*)module; - dev->common.close = NULL; - dev->set_light = set_light; + struct light_device_t *dev = malloc(sizeof(struct light_device_t)); + if (!dev) { + return res; + } + + memset(dev, 0, sizeof(*dev)); + dev->common.tag = HARDWARE_DEVICE_TAG; + dev->common.version = 0; + dev->common.module = (struct hw_module_t*)module; + dev->common.close = NULL; + dev->set_light = set_light_backlight; - *device = (struct hw_device_t*)dev; - res = 0; + *device = (struct hw_device_t*)dev; + res = 0; } + return res; } - - - static struct hw_module_methods_t lights_module_methods = { .open = open_lights, }; + const struct hw_module_t HAL_MODULE_INFO_SYM = { .tag = HARDWARE_MODULE_TAG, .version_major = 1, .version_minor = 0, .id = LIGHTS_HARDWARE_MODULE_ID, - .name = "lights Module", - .author = "", + .name = "Backlight", + .author = "Amlogic", .methods = &lights_module_methods, }; - - -- cgit