summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Bartlett <abartlet@samba.org>2012-04-05 09:59:41 +1000
committerAndrew Bartlett <abartlet@samba.org>2012-04-05 02:39:09 +0200
commit0732311c805d83b06ccd6c56512723c50b5c83d6 (patch)
tree906bb257c129e6ee8c4a5d114c63b066efcfc194
parent22d9450100fd33ef3cc1fcb0fb92a1a20da5be75 (diff)
downloadsamba-0732311c805d83b06ccd6c56512723c50b5c83d6.tar.gz
samba-0732311c805d83b06ccd6c56512723c50b5c83d6.tar.bz2
samba-0732311c805d83b06ccd6c56512723c50b5c83d6.zip
build: Add more assertions that fcntl locking works 64-bit
-rw-r--r--tests/fcntl_lock.c19
1 files changed, 15 insertions, 4 deletions
diff --git a/tests/fcntl_lock.c b/tests/fcntl_lock.c
index 3dc12a3897..98d028572e 100644
--- a/tests/fcntl_lock.c
+++ b/tests/fcntl_lock.c
@@ -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);