Avoid calling overridable function from constructor

When a constructor calls an overridable function, it may allow an attacker to access the "this" reference prior to the object being fully initialized, which can in turn lead to a vulnerability.

Application -> getLocalPath
ProxyPanel -> get
AbortPanel -> get
RotatingBackgrounds -> makeEmpty

(Triggered by internal security audit and Fortify analysis.)
This commit is contained in:
Daniel Gredler
2018-09-13 16:20:53 -04:00
parent 712b06f8fb
commit fdd767086a
5 changed files with 6 additions and 6 deletions
@@ -36,7 +36,7 @@ import static java.nio.charset.StandardCharsets.UTF_8;
* Parses and provide access to the information contained in the <code>getdown.txt</code> * Parses and provide access to the information contained in the <code>getdown.txt</code>
* configuration file. * configuration file.
*/ */
public class Application public final class Application
{ {
/** The name of our configuration file. */ /** The name of our configuration file. */
public static final String CONFIG_FILE = "getdown.txt"; public static final String CONFIG_FILE = "getdown.txt";
@@ -28,14 +28,14 @@ import static com.threerings.getdown.Log.log;
/** /**
* Displays a confirmation that the user wants to abort installation. * Displays a confirmation that the user wants to abort installation.
*/ */
public class AbortPanel extends JFrame public final class AbortPanel extends JFrame
implements ActionListener implements ActionListener
{ {
public AbortPanel (Getdown getdown, ResourceBundle msgs) public AbortPanel (Getdown getdown, ResourceBundle msgs)
{ {
_getdown = getdown; _getdown = getdown;
_msgs = msgs; _msgs = msgs;
setLayout(new VGroupLayout()); setLayout(new VGroupLayout());
setResizable(false); setResizable(false);
setTitle(get("m.abort_title")); setTitle(get("m.abort_title"));
@@ -30,7 +30,7 @@ import static com.threerings.getdown.Log.log;
* Displays an interface with which the user can configure their proxy * Displays an interface with which the user can configure their proxy
* settings. * settings.
*/ */
public class ProxyPanel extends JPanel public final class ProxyPanel extends JPanel
implements ActionListener implements ActionListener
{ {
public ProxyPanel (Getdown getdown, ResourceBundle msgs) public ProxyPanel (Getdown getdown, ResourceBundle msgs)
@@ -10,7 +10,7 @@ import java.util.List;
import static com.threerings.getdown.Log.log; import static com.threerings.getdown.Log.log;
public class RotatingBackgrounds public final class RotatingBackgrounds
{ {
public interface ImageLoader { public interface ImageLoader {
/** Loads and returns the image with the supplied path. */ /** Loads and returns the image with the supplied path. */
@@ -36,7 +36,7 @@ import static com.threerings.getdown.Log.log;
/** /**
* Displays download and patching status. * Displays download and patching status.
*/ */
public class StatusPanel extends JComponent public final class StatusPanel extends JComponent
implements ImageObserver implements ImageObserver
{ {
public StatusPanel (ResourceBundle msgs) public StatusPanel (ResourceBundle msgs)