Skip to content

Commit 36b0ec4

Browse files
committed
Fix saved request serialization issue in FORM
Introduced when allowing infinite session timeouts. BZ69706
1 parent 6a94485 commit 36b0ec4

File tree

3 files changed

+12
-9
lines changed

3 files changed

+12
-9
lines changed

java/org/apache/catalina/authenticator/FormAuthenticator.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -646,8 +646,8 @@ protected boolean restoreRequest(Request request, Session session) throws IOExce
646646
request.getCoyoteRequest().queryString().toStringType();
647647
request.getCoyoteRequest().protocol().toStringType();
648648

649-
if (saved.getOriginalMaxInactiveIntervalOptional().isPresent()) {
650-
session.setMaxInactiveInterval(saved.getOriginalMaxInactiveIntervalOptional().getAsInt());
649+
if (saved.getOriginalMaxInactiveIntervalOptional() != null) {
650+
session.setMaxInactiveInterval(saved.getOriginalMaxInactiveIntervalOptional().intValue());
651651
}
652652

653653
return true;
@@ -724,14 +724,14 @@ protected void saveRequest(Request request, Session session) throws IOException
724724
session.setMaxInactiveInterval(getAuthenticationSessionTimeout());
725725
}
726726
} else if (previousSavedRequest != null &&
727-
previousSavedRequest.getOriginalMaxInactiveIntervalOptional().isPresent()) {
727+
previousSavedRequest.getOriginalMaxInactiveIntervalOptional() != null) {
728728
/*
729729
* The user may have refreshed the browser page during authentication. Transfer the original max inactive
730730
* interval from previous saved request to current one else, once authentication is completed, the session
731731
* will retain the shorter authentication session timeout
732732
*/
733733
saved.setOriginalMaxInactiveInterval(
734-
previousSavedRequest.getOriginalMaxInactiveIntervalOptional().getAsInt());
734+
previousSavedRequest.getOriginalMaxInactiveIntervalOptional().intValue());
735735
}
736736
}
737737

java/org/apache/catalina/authenticator/SavedRequest.java

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@
2424
import java.util.List;
2525
import java.util.Locale;
2626
import java.util.Map;
27-
import java.util.OptionalInt;
2827

2928
import javax.servlet.http.Cookie;
3029

@@ -182,9 +181,9 @@ public void setContentType(String contentType) {
182181
/**
183182
* The original maxInactiveInterval for the session.
184183
*/
185-
private OptionalInt originalMaxInactiveInterval = OptionalInt.empty();
184+
private Integer originalMaxInactiveInterval = null;
186185

187-
public OptionalInt getOriginalMaxInactiveIntervalOptional() {
186+
public Integer getOriginalMaxInactiveIntervalOptional() {
188187
return originalMaxInactiveInterval;
189188
}
190189

@@ -198,10 +197,10 @@ public OptionalInt getOriginalMaxInactiveIntervalOptional() {
198197
*/
199198
@Deprecated
200199
public int getOriginalMaxInactiveInterval() {
201-
return originalMaxInactiveInterval.orElse(-1);
200+
return (originalMaxInactiveInterval == null) ? -1 : originalMaxInactiveInterval.intValue();
202201
}
203202

204203
public void setOriginalMaxInactiveInterval(int originalMaxInactiveInterval) {
205-
this.originalMaxInactiveInterval = OptionalInt.of(originalMaxInactiveInterval);
204+
this.originalMaxInactiveInterval = Integer.valueOf(originalMaxInactiveInterval);
206205
}
207206
}

webapps/docs/changelog.xml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -131,6 +131,10 @@
131131
rewrite map files to align behaviour with Apache httpd. Pull request
132132
provided by Chenjp. (markt)
133133
</add>
134+
<fix>
135+
<bug>69706</bug>: Fix saved request serialization issue in FORM
136+
introduced when allowing infinite session timeouts. (remm)
137+
</fix>
134138
</changelog>
135139
</subsection>
136140
<subsection name="Coyote">

0 commit comments

Comments
 (0)