Save/load: pid_tracker feature.
[lttng-tools.git] / src / common / readwrite.c
index a559de76b1ea5f85387ab178eee47a21b7f101f1..a862d1cffd1f9e195ed294e13f1a3438dbf094f4 100644 (file)
  * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
  */
 
-#include <unistd.h>
-#include <errno.h>
+#define _GNU_SOURCE
+#define _LGPL_SOURCE
 #include <assert.h>
+#include <errno.h>
+#include <limits.h>
+#include <unistd.h>
+
 #include "readwrite.h"
 
 /*
@@ -33,6 +37,16 @@ ssize_t lttng_read(int fd, void *buf, size_t count)
        size_t i = 0;
        ssize_t ret;
 
+       assert(buf);
+
+       /*
+        * Deny a read count that can be bigger then the returned value max size.
+        * This makes the function to never return an overflow value.
+        */
+       if (count > SSIZE_MAX) {
+               return -EINVAL;
+       }
+
        do {
                ret = read(fd, buf + i, count - i);
                if (ret < 0) {
@@ -60,6 +74,16 @@ ssize_t lttng_write(int fd, const void *buf, size_t count)
        size_t i = 0;
        ssize_t ret;
 
+       assert(buf);
+
+       /*
+        * Deny a write count that can be bigger then the returned value max size.
+        * This makes the function to never return an overflow value.
+        */
+       if (count > SSIZE_MAX) {
+               return -EINVAL;
+       }
+
        do {
                ret = write(fd, buf + i, count - i);
                if (ret < 0) {
This page took 0.029388 seconds and 4 git commands to generate.