build: Add more assertions that fcntl locking works 64-bit
authorAndrew Bartlett <abartlet@samba.org>
Wed, 4 Apr 2012 23:59:41 +0000 (09:59 +1000)
committerAndrew Bartlett <abartlet@samba.org>
Thu, 5 Apr 2012 00:39:09 +0000 (02:39 +0200)
tests/fcntl_lock.c

index 3dc12a3..98d0285 100644 (file)
@@ -62,7 +62,7 @@ int main(int argc, char *argv[])
 
                lock.l_type = F_WRLCK;
                lock.l_whence = SEEK_SET;
-               lock.l_start = 0;
+               lock.l_start = 0x100000000LL;
                lock.l_len = 4;
                lock.l_pid = getpid();
                
@@ -92,16 +92,27 @@ int main(int argc, char *argv[])
        lock.l_type = F_WRLCK;
        lock.l_whence = SEEK_SET;
        lock.l_start = 0;
-       lock.l_len = 4;
+       lock.l_len = 0x100000004LL;
        lock.l_pid = getpid();
 
-       /* set a 4 byte write lock */
-       fcntl(fd,F_SETLK,&lock);
+       /* set a 100000004 byte write lock, should conflict with the above */
+       ret = fcntl(fd,F_SETLK,&lock);
 
        sys_waitpid(pid, &status, 0);
 
        unlink(DATA);
 
+       if (ret != 0) {
+               fprintf(stderr,"ERROR: failed to lock %s (errno=%d)\n", 
+                       DATA, (int)errno);
+               exit(1);
+       }
+
+       if (lock.l_len < 0x100000004LL) {
+               fprintf(stderr,"ERROR: settign lock overflowed\n");
+               exit(1);
+       }
+
 #if defined(WIFEXITED) && defined(WEXITSTATUS)
     if(WIFEXITED(status)) {
         status = WEXITSTATUS(status);