diff --git a/lib/ipmi_main.c b/lib/ipmi_main.c
index 3596206..8757373 100644
--- a/lib/ipmi_main.c
+++ b/lib/ipmi_main.c
@@ -756,6 +756,16 @@ ipmi_main(int argc, char ** argv,
 		}
 	}
 
+	if (password != NULL && intfname != NULL) {
+		if (strcmp(intfname, "lan") == 0 && strlen(password) > 16) {
+			lprintf(LOG_ERR, "%s: password is longer than 16 bytes.", intfname);
+			goto out_free;
+		} else if (strcmp(intfname, "lanplus") == 0 && strlen(password) > 20) {
+			lprintf(LOG_ERR, "%s: password is longer than 20 bytes.", intfname);
+			goto out_free;
+		}
+	} /* if (password != NULL && intfname != NULL) */
+
 	/* load interface */
 	ipmi_main_intf = ipmi_intf_load(intfname);
 	if (ipmi_main_intf == NULL) {
