Don't write outside the requested range
[test-ssd.git] / test-ssd-write.c
index 5b7c8c4df06f218338d2cd7f96272fbd565fbd09..ea852481e6b94f776cf8df1b983fac7293249311 100644 (file)
@@ -146,13 +146,18 @@ static int rand_write(int fd, size_t len)
        uint64_t valcount;
        int ret;
 
+       if (len < BUFLEN) {
+               fprintf(stderr, "Error: File size needs to be at least %u\n", BUFLEN);
+               exit(EXIT_FAILURE);
+       }
+
        memset(buf, 0, BUFLEN);
 
        for (;;) {
                if (len > UINT32_MAX) {
-                       offset = (((size_t) rand() << 32) + (size_t) rand()) % len;
+                       offset = (((size_t) rand() << 32) + (size_t) rand()) % (len - BUFLEN);
                } else {
-                       offset = rand() % len;
+                       offset = rand() % (len - BUFLEN);
                }
 
                if ((offset >= validate_offset &&
This page took 0.029734 seconds and 4 git commands to generate.