stability: replace sprintf with snprintf to avoid potential overflows
Signed-off-by: Alex Tereschenko <alext.mkrs@gmail.com>
This commit is contained in:
@@ -248,7 +248,7 @@ mraa_gpio_interrupt_handler(void* arg)
|
|||||||
} else {
|
} else {
|
||||||
// open gpio value with open(3)
|
// open gpio value with open(3)
|
||||||
char bu[MAX_SIZE];
|
char bu[MAX_SIZE];
|
||||||
sprintf(bu, SYSFS_CLASS_GPIO "/gpio%d/value", dev->pin);
|
snprintf(bu, MAX_SIZE, SYSFS_CLASS_GPIO "/gpio%d/value", dev->pin);
|
||||||
fp = open(bu, O_RDONLY);
|
fp = open(bu, O_RDONLY);
|
||||||
if (fp < 0) {
|
if (fp < 0) {
|
||||||
syslog(LOG_ERR, "gpio%i: interrupt_handler: failed to open 'value' : %s", dev->pin, strerror(errno));
|
syslog(LOG_ERR, "gpio%i: interrupt_handler: failed to open 'value' : %s", dev->pin, strerror(errno));
|
||||||
|
|||||||
@@ -355,7 +355,7 @@ mraa_iio_trigger_buffer(mraa_iio_context dev, void (*fptr)(char* data), void* ar
|
|||||||
return MRAA_ERROR_NO_RESOURCES;
|
return MRAA_ERROR_NO_RESOURCES;
|
||||||
}
|
}
|
||||||
|
|
||||||
sprintf(bu, IIO_SLASH_DEV "%d", dev->num);
|
snprintf(bu, MAX_SIZE, IIO_SLASH_DEV "%d", dev->num);
|
||||||
dev->fp = open(bu, O_RDONLY | O_NONBLOCK);
|
dev->fp = open(bu, O_RDONLY | O_NONBLOCK);
|
||||||
if (dev->fp == -1) {
|
if (dev->fp == -1) {
|
||||||
return MRAA_ERROR_INVALID_RESOURCE;
|
return MRAA_ERROR_INVALID_RESOURCE;
|
||||||
@@ -505,7 +505,7 @@ mraa_iio_event_setup_callback(mraa_iio_context dev, void (*fptr)(struct iio_even
|
|||||||
return MRAA_ERROR_NO_RESOURCES;
|
return MRAA_ERROR_NO_RESOURCES;
|
||||||
}
|
}
|
||||||
|
|
||||||
sprintf(bu, IIO_SLASH_DEV "%d", dev->num);
|
snprintf(bu, MAX_SIZE, IIO_SLASH_DEV "%d", dev->num);
|
||||||
dev->fp = open(bu, O_RDONLY | O_NONBLOCK);
|
dev->fp = open(bu, O_RDONLY | O_NONBLOCK);
|
||||||
if (dev->fp == -1) {
|
if (dev->fp == -1) {
|
||||||
return MRAA_ERROR_INVALID_RESOURCE;
|
return MRAA_ERROR_INVALID_RESOURCE;
|
||||||
|
|||||||
@@ -102,8 +102,8 @@ mraa_pwm_write_duty(mraa_pwm_context dev, int duty)
|
|||||||
return MRAA_ERROR_INVALID_RESOURCE;
|
return MRAA_ERROR_INVALID_RESOURCE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
char bu[64];
|
char bu[MAX_SIZE];
|
||||||
int length = sprintf(bu, "%d", duty);
|
int length = snprintf(bu, MAX_SIZE, "%d", duty);
|
||||||
if (write(dev->duty_fp, bu, length * sizeof(char)) == -1)
|
if (write(dev->duty_fp, bu, length * sizeof(char)) == -1)
|
||||||
{
|
{
|
||||||
syslog(LOG_ERR, "pwm%i write_duty: Failed to write to duty_cycle: %s", dev->pin, strerror(errno));
|
syslog(LOG_ERR, "pwm%i write_duty: Failed to write to duty_cycle: %s", dev->pin, strerror(errno));
|
||||||
|
|||||||
@@ -157,7 +157,7 @@ mraa_spi_init_raw(unsigned int bus, unsigned int cs)
|
|||||||
}
|
}
|
||||||
|
|
||||||
char path[MAX_SIZE];
|
char path[MAX_SIZE];
|
||||||
sprintf(path, "/dev/spidev%u.%u", bus, cs);
|
snprintf(path, MAX_SIZE, "/dev/spidev%u.%u", bus, cs);
|
||||||
|
|
||||||
dev->devfd = open(path, O_RDWR);
|
dev->devfd = open(path, O_RDWR);
|
||||||
if (dev->devfd < 0) {
|
if (dev->devfd < 0) {
|
||||||
|
|||||||
@@ -140,7 +140,7 @@ mraa_intel_edison_pinmode_change(int sysfs, int mode)
|
|||||||
|
|
||||||
mraa_result_t ret = MRAA_SUCCESS;
|
mraa_result_t ret = MRAA_SUCCESS;
|
||||||
char mode_buf[MAX_MODE_SIZE];
|
char mode_buf[MAX_MODE_SIZE];
|
||||||
int length = sprintf(mode_buf, "%s%u", useDebugFS ? "mode" : "", mode);
|
int length = snprintf(mode_buf, MAX_MODE_SIZE, "%s%u", useDebugFS ? "mode" : "", mode);
|
||||||
if (write(modef, mode_buf, length * sizeof(char)) == -1) {
|
if (write(modef, mode_buf, length * sizeof(char)) == -1) {
|
||||||
ret = MRAA_ERROR_INVALID_RESOURCE;
|
ret = MRAA_ERROR_INVALID_RESOURCE;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user