diff options
Diffstat (limited to 'liblight')
-rw-r--r-- | liblight/lights.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/liblight/lights.c b/liblight/lights.c index 1aa0b588..6fd12904 100644 --- a/liblight/lights.c +++ b/liblight/lights.c @@ -83,7 +83,7 @@ write_int(char const* path, int value) fd = open(path, O_RDWR); if (fd >= 0) { char buffer[20]; - int bytes = sprintf(buffer, "%d\n", value); + int bytes = snprintf(buffer, sizeof(buffer), "%d\n", value); ssize_t amt = write(fd, buffer, (size_t)bytes); close(fd); return amt == -1 ? -errno : 0; @@ -271,6 +271,10 @@ static int open_lights(const struct hw_module_t* module, char const* name, pthread_once(&g_init, init_globals); struct light_device_t *dev = malloc(sizeof(struct light_device_t)); + + if(!dev) + return -ENOMEM; + memset(dev, 0, sizeof(*dev)); dev->common.tag = HARDWARE_DEVICE_TAG; |