diff options
author | Tobias Klauser <tklauser@distanz.ch> | 2007-04-13 16:15:39 +0200 |
---|---|---|
committer | Tobias Klauser <tklauser@xenon.tklauser.home> | 2007-04-13 16:15:39 +0200 |
commit | d7a9bccc00f2bc34dacd216ffd1a9bfa3bfa39fa (patch) | |
tree | d92c677d102dff6fd2808b08882ab806dc16e768 /inotail.c | |
parent | 261e3aecf11ea4b1c095fa728928504c70e97afe (diff) |
inotail.c: Fix an integer underflow in bytes_to_offset()
This also caused the bug that nothing was printed when a number greater
than the number of characters in the file was specifed with the -c
parameter.
Diffstat (limited to 'inotail.c')
-rw-r--r-- | inotail.c | 5 |
1 files changed, 3 insertions, 2 deletions
@@ -198,8 +198,9 @@ static off_t lines_to_offset(struct file_struct *f, unsigned long n_lines) static off_t bytes_to_offset(struct file_struct *f, unsigned long n_bytes) { - /* tail everything for 'inotail -c +0' */ - if (from_begin && n_bytes == 0) + /* tail everything for 'inotail -c +0' or if n_bytes greater than the + * total amount of chars in the file */ + if ((from_begin && n_bytes == 0) || ((off_t) n_bytes > f->st_size)) return 0; else return (from_begin ? ((off_t) n_bytes - 1) : (f->st_size - (off_t) n_bytes)); |