summaryrefslogtreecommitdiffstats
path: root/libsensors
diff options
context:
space:
mode:
authorChristian Balster <christian.balster@gmail.com>2015-06-15 17:46:29 +0200
committerSimon Shields <keepcalm444@gmail.com>2015-12-18 12:57:29 +1100
commita484daf3ddc1326f985592a5d6dd7953294295bc (patch)
tree5695b260c6c6a1fc5e7265ed47dcd518c32ffe33 /libsensors
parentbc3ae2755ee6b8ffc0d98b9a07f41ba690746fa8 (diff)
downloaddevice_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.c10
-rw-r--r--libsensors/smdk4x12_sensors.h4
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);