summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric Sandeen <sandeen@redhat.com>2011-09-16 15:49:39 -0500
committerTheodore Ts'o <tytso@mit.edu>2011-09-16 19:55:55 -0400
commit25726554ca557e22b96684d8a7ecf36ec80572a5 (patch)
tree43722fe347c722bee5e80e909acb78a4d22a65bc
parentfe65f1ecfc501b2470a20cfd9d07f4c9efa520d2 (diff)
downloade2fsprogs-25726554ca557e22b96684d8a7ecf36ec80572a5.tar.gz
e4defrag: Check error return of sysconf()
In theory sysconf() can fail, so check for an error return. Signed-off-by: Eric Sandeen <sandeen@redhat.com> Signed-off-by: Theodore Ts'o <tytso@mit.edu>
-rw-r--r--misc/e4defrag.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/misc/e4defrag.c b/misc/e4defrag.c
index eea30571..cdf4ffb0 100644
--- a/misc/e4defrag.c
+++ b/misc/e4defrag.c
@@ -399,13 +399,16 @@ static int calc_entry_counts(const char *file EXT2FS_ATTR((unused)),
static int page_in_core(int fd, struct move_extent defrag_data,
unsigned char **vec, unsigned int *page_num)
{
- long pagesize = sysconf(_SC_PAGESIZE);
+ long pagesize;
void *page = NULL;
loff_t offset, end_offset, length;
if (vec == NULL || *vec != NULL)
return -1;
+ pagesize = sysconf(_SC_PAGESIZE);
+ if (pagesize < 0)
+ return -1;
/* In mmap, offset should be a multiple of the page size */
offset = (loff_t)defrag_data.orig_start * block_size;
length = (loff_t)defrag_data.len * block_size;