diff options
author | Christian Balster <christian.balster@gmail.com> | 2015-06-15 17:46:29 +0200 |
---|---|---|
committer | Simon Shields <keepcalm444@gmail.com> | 2015-12-18 12:57:29 +1100 |
commit | a484daf3ddc1326f985592a5d6dd7953294295bc (patch) | |
tree | 5695b260c6c6a1fc5e7265ed47dcd518c32ffe33 /libsensors | |
parent | bc3ae2755ee6b8ffc0d98b9a07f41ba690746fa8 (diff) | |
download | device_samsung_i9300-a484daf3ddc1326f985592a5d6dd7953294295bc.zip device_samsung_i9300-a484daf3ddc1326f985592a5d6dd7953294295bc.tar.gz device_samsung_i9300-a484daf3ddc1326f985592a5d6dd7953294295bc.tar.bz2 |
i9300: libsensors: fix possible overflow while setting delay
Even though we changed the signature of the set_delay() methods,
we can still get an overflow while actually writing the values to sysfs.
Let's adapt sysfs_value_read() and sysfs_value_write() too.
Change-Id: If8eda7204831f0edabec890d4e3127be520fa3bf
Diffstat (limited to 'libsensors')
-rw-r--r-- | libsensors/input.c | 10 | ||||
-rw-r--r-- | libsensors/smdk4x12_sensors.h | 4 |
2 files changed, 7 insertions, 7 deletions
diff --git a/libsensors/input.c b/libsensors/input.c index eef2a8d..da3d6d7 100644 --- a/libsensors/input.c +++ b/libsensors/input.c @@ -214,10 +214,10 @@ int sysfs_path_prefix(char *name, char *path_prefix) return -1; } -int sysfs_value_read(char *path) +int64_t sysfs_value_read(char *path) { char buffer[100]; - int value; + int64_t value; int fd = -1; int rc; @@ -232,7 +232,7 @@ int sysfs_value_read(char *path) if (rc <= 0) goto error; - value = atoi(buffer); + value = (int64_t)strtoimax(buffer, NULL, 10); goto complete; error: @@ -245,7 +245,7 @@ complete: return value; } -int sysfs_value_write(char *path, int value) +int sysfs_value_write(char *path, int64_t value) { char buffer[100]; int fd = -1; @@ -258,7 +258,7 @@ int sysfs_value_write(char *path, int value) if (fd < 0) goto error; - snprintf((char *) &buffer, sizeof(buffer), "%d\n", value); + snprintf((char *) &buffer, sizeof(buffer), "%" PRId64 "\n", value); rc = write(fd, buffer, strlen(buffer)); if (rc < (int) strlen(buffer)) diff --git a/libsensors/smdk4x12_sensors.h b/libsensors/smdk4x12_sensors.h index da3d173..7100334 100644 --- a/libsensors/smdk4x12_sensors.h +++ b/libsensors/smdk4x12_sensors.h @@ -83,8 +83,8 @@ int uinput_rel_create(const char *name); void uinput_destroy(int uinput_fd); int input_open(char *name); int sysfs_path_prefix(char *name, char *path_prefix); -int sysfs_value_read(char *path); -int sysfs_value_write(char *path, int value); +int64_t sysfs_value_read(char *path); +int sysfs_value_write(char *path, int64_t value); int sysfs_string_read(char *path, char *buffer, size_t length); int sysfs_string_write(char *path, char *buffer, size_t length); |