Skip to content

Commit 2a7e7c6

Browse files
committed
fix file descriptor leak in gpio_set_value()
Leak of the file descriptor was reported in issue #142. I have switched from open() to access() so no need to close fd.
1 parent 02f1335 commit 2a7e7c6

File tree

1 file changed

+3
-3
lines changed

1 file changed

+3
-3
lines changed

source/event_gpio.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -312,16 +312,16 @@ BBIO_err gpio_set_value(unsigned int gpio, unsigned int value)
312312
int led = gpio - USR_LED_GPIO_MIN;
313313

314314
snprintf(filename, sizeof(filename), "/sys/class/leds/beaglebone:green:usr%d/brightness", led);
315-
316-
if ((fd = open(filename, O_WRONLY)) < 0) {
315+
if (access(filename, W_OK) < 0) {
317316
snprintf(filename, sizeof(filename), "/sys/class/leds/beaglebone:green:%s/brightness", usr_led_trigger[led]);
318317
}
319318

320319
} else {
321320
snprintf(filename, sizeof(filename), "/sys/class/gpio/gpio%d/value", gpio);
322321
}
323322

324-
if ((fd = open(filename, O_WRONLY)) < 0) {
323+
fd = open(filename, O_WRONLY);
324+
if (fd < 0) {
325325
syslog(LOG_ERR, "gpio_set_value: %u couldn't open '%s': %i-%s",
326326
gpio, filename, errno, strerror(errno));
327327
return BBIO_SYSFS;

0 commit comments

Comments
 (0)