Fix: Correctly handle invalid agent port file
authorAlexandre Montplaisir <alexmonthy@efficios.com>
Wed, 13 Jul 2016 19:36:19 +0000 (15:36 -0400)
committerMathieu Desnoyers <mathieu.desnoyers@efficios.com>
Wed, 13 Jul 2016 19:56:53 +0000 (15:56 -0400)
Handle the cases where the Java agent could find a port file
that is either empty, or contains text that cannot be parsed
to a number.

Signed-off-by: Alexandre Montplaisir <alexmonthy@efficios.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
liblttng-ust-java-agent/java/lttng-ust-agent-common/org/lttng/ust/agent/client/LttngTcpSessiondClient.java

index f78fdbd0f7c515d6bbecb589ae3454f2d2c83636..a0adceae6d32b0e9c1f9031b20dc422b07953678 100644 (file)
@@ -204,27 +204,34 @@ public class LttngTcpSessiondClient implements Runnable {
         * @return port value if found else 0.
         */
        private static int getPortFromFile(String path) throws IOException {
-               int port;
                BufferedReader br = null;
 
                try {
                        br = new BufferedReader(new InputStreamReader(new FileInputStream(path), PORT_FILE_ENCODING));
                        String line = br.readLine();
-                       port = Integer.parseInt(line, 10);
+                       if (line == null) {
+                               /* File exists but is empty. */
+                               return 0;
+                       }
+
+                       int port = Integer.parseInt(line, 10);
                        if (port < 0 || port > 65535) {
                                /* Invalid value. Ignore. */
                                port = 0;
                        }
+                       return port;
+
+               } catch (NumberFormatException e) {
+                       /* File contained something that was not a number. */
+                       return 0;
                } catch (FileNotFoundException e) {
                        /* No port available. */
-                       port = 0;
+                       return 0;
                } finally {
                        if (br != null) {
                                br.close();
                        }
                }
-
-               return port;
        }
 
        private void registerToSessiond() throws IOException {
This page took 0.025631 seconds and 4 git commands to generate.