summaryrefslogtreecommitdiff
path: root/flashrom.c
diff options
context:
space:
mode:
authorhailfinger <hailfinger@2b7e53f0-3cfb-0310-b3e9-8179ed1497e1>2013-08-13 07:09:57 +0000
committerhailfinger <hailfinger@2b7e53f0-3cfb-0310-b3e9-8179ed1497e1>2013-08-13 07:09:57 +0000
commit6eecc90132fa37a20b227246fb786bb65aa741ba (patch)
tree3dcc5846a0fee64271b2395f10385c86bc50d76c /flashrom.c
parentde4fbf79a662fb77cef3c09c3b4922ca8098e6c7 (diff)
downloadflashrom-6eecc90132fa37a20b227246fb786bb65aa741ba.tar.gz
An unused programmer parameter is a sign that the user wanted to either
do something not supported by the programmer or misspelled a parameter which may be essential for the given programmer. Aborting is the only safe choice. If the programmer parameter is unused because of an error during programmer init, aborting would have happened anyway due to that error. Signed-off-by: Carl-Daniel Hailfinger <c-d.hailfinger.devel.2006@gmx.net> Acked-by: Stefan Tauner <stefan.tauner@student.tuwien.ac.at> git-svn-id: https://code.coreboot.org/svn/flashrom/trunk@1708 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1
Diffstat (limited to 'flashrom.c')
-rw-r--r--flashrom.c20
1 files changed, 15 insertions, 5 deletions
diff --git a/flashrom.c b/flashrom.c
index 41e7bd8..86e64a2 100644
--- a/flashrom.c
+++ b/flashrom.c
@@ -392,13 +392,23 @@ int programmer_init(enum programmer prog, const char *param)
programmer_may_write = 1;
programmer_param = param;
- msg_pdbg("Initializing %s programmer\n",
- programmer_table[programmer].name);
+ msg_pdbg("Initializing %s programmer\n", programmer_table[programmer].name);
ret = programmer_table[programmer].init();
if (programmer_param && strlen(programmer_param)) {
- msg_perr("Unhandled programmer parameters: %s\n",
- programmer_param);
- /* Do not error out here, the init itself was successful. */
+ if (ret != 0) {
+ /* It is quite possible that any unhandled programmer parameter would have been valid,
+ * but an error in actual programmer init happened before the parameter was evaluated.
+ */
+ msg_pwarn("Unhandled programmer parameters (possibly due to another failure): %s\n",
+ programmer_param);
+ } else {
+ /* Actual programmer init was successful, but the user specified an invalid or unusable
+ * (for the current programmer configuration) parameter.
+ */
+ msg_perr("Unhandled programmer parameters: %s\n", programmer_param);
+ msg_perr("Aborting.\n");
+ ret = ERROR_FATAL;
+ }
}
return ret;
}