Skip to content

Commit e11bcfc

Browse files
Fixed: Log exception instead of crashing app on NumberFormatException for invalid termcap/terminfo string requested
java.lang.NumberFormatException: For input string: " a" at java.lang.Long.parseLong(Long.java:583) at java.lang.Long.valueOf(Long.java:781) at java.lang.Long.decode(Long.java:933) at com.termux.terminal.TerminalEmulator.doDeviceControl(TerminalEmulator.java:940) at com.termux.terminal.TerminalEmulator.processCodePoint(TerminalEmulator.java:813)
1 parent e3a50cb commit e11bcfc

File tree

1 file changed

+8
-1
lines changed

1 file changed

+8
-1
lines changed

terminal-emulator/src/main/java/com/termux/terminal/TerminalEmulator.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -935,10 +935,17 @@ private void doDeviceControl(int b) {
935935
for (String part : dcs.substring(2).split(";")) {
936936
if (part.length() % 2 == 0) {
937937
StringBuilder transBuffer = new StringBuilder();
938+
char c;
938939
for (int i = 0; i < part.length(); i += 2) {
939-
char c = (char) Long.decode("0x" + part.charAt(i) + "" + part.charAt(i + 1)).longValue();
940+
try {
941+
c = (char) Long.decode("0x" + part.charAt(i) + "" + part.charAt(i + 1)).longValue();
942+
} catch (NumberFormatException e) {
943+
Logger.logStackTraceWithMessage(mClient, LOG_TAG, "Invalid device termcap/terminfo encoded name \"" + part + "\"", e);
944+
continue;
945+
}
940946
transBuffer.append(c);
941947
}
948+
942949
String trans = transBuffer.toString();
943950
String responseValue;
944951
switch (trans) {

0 commit comments

Comments
 (0)