aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Schlemmer <azarah@gentoo.org>2005-12-01 11:04:31 +0000
committerMartin Schlemmer <azarah@gentoo.org>2005-12-01 11:04:31 +0000
commit0d7ab77a4a9bec0bac85e1b05e3ca8fdd0c6d20f (patch)
tree0348ec53049866d3580ee90d18cbcb9ce35576ad
parentUse egetcwd() in sandbox.c. (diff)
downloadsandbox-0d7ab77a4a9bec0bac85e1b05e3ca8fdd0c6d20f.tar.gz
sandbox-0d7ab77a4a9bec0bac85e1b05e3ca8fdd0c6d20f.tar.bz2
sandbox-0d7ab77a4a9bec0bac85e1b05e3ca8fdd0c6d20f.zip
Rather use fstat() to get file size in file_length() than lseek().
Signed-off-by: Martin Schlemmer <azarah@gentoo.org>
-rw-r--r--ChangeLog2
-rw-r--r--src/sandbox_futils.c11
2 files changed, 8 insertions, 5 deletions
diff --git a/ChangeLog b/ChangeLog
index eefb992..28a1296 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -32,6 +32,8 @@
Use egetcwd() in sandbox.c.
+ Rather use fstat() to get file size in file_length() than lseek().
+
28 Nov 2005; Martin Schlemmer <azarah@gentoo.org> configure.in, sandbox.c,
sandbox_fdutils.c:
diff --git a/src/sandbox_futils.c b/src/sandbox_futils.c
index 1971b94..e7854d5 100644
--- a/src/sandbox_futils.c
+++ b/src/sandbox_futils.c
@@ -153,13 +153,14 @@ int is_dir(const char *pathname, int follow_link)
long file_length(int fd)
{
- long pos, len;
+ struct stat st;
+ int retval;
- pos = lseek(fd, 0L, SEEK_CUR);
- len = lseek(fd, 0L, SEEK_END);
- lseek(fd, pos, SEEK_SET);
+ retval = fstat(fd, &st);
+ if (retval < 0)
+ return 0;
- return (len);
+ return (st.st_size);
}
#endif /* OUTSIDE_LIBSANDBOX */