Private
Public Access
2
0

pwm.c: check error condition when doing read operations

Signed-off-by: Brendan Le Foll <brendan.le.foll@intel.com>
This commit is contained in:
Brendan Le Foll
2014-11-26 13:59:59 +00:00
parent be1a725db8
commit 9f3cc6e890

View File

@@ -75,7 +75,9 @@ static mraa_result_t
mraa_pwm_write_duty(mraa_pwm_context dev, int duty) mraa_pwm_write_duty(mraa_pwm_context dev, int duty)
{ {
if (dev->duty_fp == -1) { if (dev->duty_fp == -1) {
mraa_pwm_setup_duty_fp(dev); if (mraa_pwm_setup_duty_fp(dev) == 1) {
return MRAA_ERROR_INVALID_HANDLE;
}
} }
char bu[64]; char bu[64];
int length = sprintf(bu, "%d", duty); int length = sprintf(bu, "%d", duty);
@@ -99,9 +101,14 @@ mraa_pwm_read_period(mraa_pwm_context dev)
off_t size = lseek(period_f, 0, SEEK_END); off_t size = lseek(period_f, 0, SEEK_END);
lseek(period_f, 0, SEEK_SET); lseek(period_f, 0, SEEK_SET);
read(period_f, output, size + 1); ssize_t rb = read(period_f, output, size + 1);
close(period_f); close(period_f);
if (rb > 0) {
syslog(LOG_ERR, "pwm: Error in reading period");
return -1;
}
char *endptr; char *endptr;
long int ret = strtol(output, &endptr, 10); long int ret = strtol(output, &endptr, 10);
if ('\0' != *endptr && '\n' != *endptr) { if ('\0' != *endptr && '\n' != *endptr) {
@@ -119,14 +126,20 @@ static int
mraa_pwm_read_duty(mraa_pwm_context dev) mraa_pwm_read_duty(mraa_pwm_context dev)
{ {
if (dev->duty_fp == -1) { if (dev->duty_fp == -1) {
mraa_pwm_setup_duty_fp(dev); if (mraa_pwm_setup_duty_fp(dev) == 1) {
return MRAA_ERROR_INVALID_HANDLE;
}
} else { } else {
lseek(dev->duty_fp, 0, SEEK_SET); lseek(dev->duty_fp, 0, SEEK_SET);
} }
off_t size = lseek(dev->duty_fp, 0, SEEK_END); off_t size = lseek(dev->duty_fp, 0, SEEK_END);
lseek(dev->duty_fp, 0, SEEK_SET); lseek(dev->duty_fp, 0, SEEK_SET);
char output[MAX_SIZE]; char output[MAX_SIZE];
read(dev->duty_fp, output, size+1); ssize_t rb = read(dev->duty_fp, output, size+1);
if (rb > 0) {
syslog(LOG_ERR, "pwm: Error in reading duty");
return -1;
}
char *endptr; char *endptr;
long int ret = strtol(output, &endptr, 10); long int ret = strtol(output, &endptr, 10);