@@ -113,8 +113,8 @@ Loggable previousEntry() throws LogException {
113
113
// go back two bytes and read the back-link of the last entry
114
114
fc .position (fc .position () - LOG_ENTRY_BACK_LINK_LEN );
115
115
header .clear ().limit (LOG_ENTRY_BACK_LINK_LEN );
116
- final int bytes = fc .read (header );
117
- if (bytes < LOG_ENTRY_BACK_LINK_LEN ) {
116
+ final int read = fc .read (header );
117
+ if (read != LOG_ENTRY_BACK_LINK_LEN ) {
118
118
throw new LogException ("Unable to read journal entry back-link!" );
119
119
}
120
120
header .flip ();
@@ -159,17 +159,21 @@ Loggable lastEntry() throws LogException {
159
159
private @ Nullable
160
160
Loggable readEntry () throws LogException {
161
161
try {
162
- final long lsn = Lsn .create (fileNumber , (int ) fc .position () + 1 );
162
+ final long offset = fc .position ();
163
+ if (offset > Integer .MAX_VALUE ) {
164
+ throw new LogException ("Journal can only read log files of less that 2GB" );
165
+ }
166
+ final long lsn = Lsn .create (fileNumber , ((int )(offset & 0x7FFFFFFF )) + 1 );
163
167
164
168
// read the entry header
165
169
header .clear ();
166
- int bytes = fc .read (header );
167
- if (bytes <= 0 ) {
170
+ int read = fc .read (header );
171
+ if (read <= 0 ) {
168
172
return null ;
169
173
}
170
- if (bytes < LOG_ENTRY_HEADER_LEN ) {
174
+ if (read != LOG_ENTRY_HEADER_LEN ) {
171
175
throw new LogException ("Incomplete journal entry header found, expected "
172
- + LOG_ENTRY_HEADER_LEN + " bytes, but found " + bytes + " bytes" );
176
+ + LOG_ENTRY_HEADER_LEN + " bytes, but found " + read + " bytes" );
173
177
}
174
178
header .flip ();
175
179
@@ -192,8 +196,8 @@ Loggable readEntry() throws LogException {
192
196
payload = ByteBuffer .allocate (size + LOG_ENTRY_BACK_LINK_LEN );
193
197
}
194
198
payload .clear ().limit (size + LOG_ENTRY_BACK_LINK_LEN );
195
- bytes = fc .read (payload );
196
- if (bytes < size + LOG_ENTRY_BACK_LINK_LEN ) {
199
+ read = fc .read (payload );
200
+ if (read < size + LOG_ENTRY_BACK_LINK_LEN ) {
197
201
throw new LogException ("Incomplete log entry found!" );
198
202
}
199
203
payload .flip ();
0 commit comments