diff --git a/Makefile b/Makefile
index 89a3d2e..06b6da5 100644
--- a/Makefile
+++ b/Makefile
@@ -1,6 +1,6 @@
 VERSION = 1
 PATCHLEVEL = 5
-SUBLEVEL = 0
+SUBLEVEL = 1
 EXTRAVERSION =
 NAME = Unnamed
 
diff --git a/editors/sed.c b/editors/sed.c
index f7f22f7..8500989 100644
--- a/editors/sed.c
+++ b/editors/sed.c
@@ -481,7 +481,7 @@
 	if (bbg.add_cmd_line) {
 		char *tp = xasprintf("%s\n%s", bbg.add_cmd_line, cmdstr);
 		free(bbg.add_cmd_line);
-		bbg.add_cmd_line = tp;
+		cmdstr = bbg.add_cmd_line = tp;
 	}
 
 	/* If this line ends with backslash, request next line. */
diff --git a/miscutils/hdparm.c b/miscutils/hdparm.c
index 0138eed..b529777 100644
--- a/miscutils/hdparm.c
+++ b/miscutils/hdparm.c
@@ -1569,9 +1569,9 @@
 	if (set_mult) {
 		print_flag(get_mult, "multcount", mult);
 #ifdef HDIO_DRIVE_CMD
-		bb_ioctl(fd, HDIO_SET_MULTCOUNT, &mult, "HDIO_SET_MULTCOUNT");
+		bb_ioctl(fd, HDIO_SET_MULTCOUNT, (void *)mult, "HDIO_SET_MULTCOUNT");
 #else
-		force_operation |= (!bb_ioctl(fd, HDIO_SET_MULTCOUNT, &mult, "HDIO_SET_MULTCOUNT"));
+		force_operation |= (!bb_ioctl(fd, HDIO_SET_MULTCOUNT, (void *)mult, "HDIO_SET_MULTCOUNT"));
 #endif
 	}
 	if (set_readonly) {
diff --git a/networking/ifupdown.c b/networking/ifupdown.c
index 887c2ee..74646c6 100644
--- a/networking/ifupdown.c
+++ b/networking/ifupdown.c
@@ -1083,15 +1083,32 @@
 	return NULL;
 }
 
+/* read the previous state from the state file */
+static llist_t *read_iface_state(void) {
+	llist_t *state_list = NULL;
+	FILE *state_fp;
+	state_fp = fopen("/var/run/ifstate", "r");
+	if (state_fp) {
+		char *start, *end_ptr;
+		while ((start = xmalloc_fgets(state_fp)) != NULL) {
+			/* We should only need to check for a single character */
+			end_ptr = start + strcspn(start, " \t\n");
+			*end_ptr = '\0';
+			llist_add_to(&state_list, start);
+		}
+		fclose(state_fp);
+	}
+	return state_list;
+}
+
+
 int ifupdown_main(int argc, char **argv);
 int ifupdown_main(int argc, char **argv)
 {
 	int (*cmds)(struct interface_defn_t *) = NULL;
 	struct interfaces_file_t *defn;
-	llist_t *state_list = NULL;
 	llist_t *target_list = NULL;
 	const char *interfaces = "/etc/network/interfaces";
-	FILE *state_fp;
 	bool any_failures = 0;
 
 	cmds = iface_down;
@@ -1118,32 +1135,9 @@
 	startup_PATH = getenv("PATH");
 	if (!startup_PATH) startup_PATH = "";
 
-	/* Read the previous state from the state file */
-	state_fp = fopen("/var/run/ifstate", "r");
-	if (state_fp) {
-		char *start, *end_ptr;
-		while ((start = xmalloc_fgets(state_fp)) != NULL) {
-			/* We should only need to check for a single character */
-			end_ptr = start + strcspn(start, " \t\n");
-			*end_ptr = '\0';
-			llist_add_to(&state_list, start);
-		}
-		fclose(state_fp);
-	}
-
 	/* Create a list of interfaces to work on */
 	if (DO_ALL) {
-		if (cmds == iface_up) {
-			target_list = defn->autointerfaces;
-		} else {
-			/* iface_down */
-			const llist_t *list = state_list;
-			while (list) {
-				llist_add_to_end(&target_list, xstrdup(list->data));
-				list = list->link;
-			}
-			target_list = defn->autointerfaces;
-		}
+		target_list = defn->autointerfaces;
 	} else {
 		llist_add_to_end(&target_list, argv[optind]);
 	}
@@ -1170,6 +1164,7 @@
 		}
 
 		if (!FORCE) {
+			llist_t *state_list = read_iface_state();
 			const llist_t *iface_state = find_iface_state(state_list, iface);
 
 			if (cmds == iface_up) {
@@ -1185,6 +1180,7 @@
 					continue;
 				}
 			}
+			llist_free(state_list, free);
 		}
 
 #if ENABLE_FEATURE_IFUPDOWN_MAPPING
@@ -1239,6 +1235,8 @@
 			bb_error_msg("ignoring unknown interface %s", liface);
 			any_failures = 1;
 		} else {
+			/* update the state file */
+			llist_t *state_list = read_iface_state();
 			llist_t *iface_state = find_iface_state(state_list, iface);
 
 			if (cmds == iface_up) {
@@ -1254,19 +1252,21 @@
 				llist_unlink(&state_list, iface_state);
 				free(llist_pop(&iface_state));
 			}
-		}
-	}
 
-	/* Actually write the new state */
-	if (!NO_ACT) {
-		state_fp = xfopen("/var/run/ifstate", "w");
-		while (state_list) {
-			if (state_list->data) {
-				fprintf(state_fp, "%s\n", state_list->data);
+			/* Actually write the new state */
+			if (!NO_ACT) {
+				FILE *state_fp = xfopen("/var/run/ifstate", "w");
+				llist_t *state = state_list;
+				while (state) {
+					if (state->data) {
+						fprintf(state_fp, "%s\n", state->data);
+					}
+					state = state->link;
+				}
+				fclose(state_fp);
 			}
-			state_list = state_list->link;
+			llist_free(state_list, free);
 		}
-		fclose(state_fp);
 	}
 
 	return any_failures;
diff --git a/procps/ps.c b/procps/ps.c
index c1cb643..2be0b36 100644
--- a/procps/ps.c
+++ b/procps/ps.c
@@ -262,7 +262,9 @@
 		parse_o(default_o);
 	post_process();
 
-	terminal_width = INT_MAX;
+	/* Was INT_MAX, but some libc's go belly up with printf("%.*s")
+	 * and such large widths */
+	terminal_width = 30000;
 	if (isatty(1)) {
 		get_terminal_width_height(1, &terminal_width, NULL);
 		terminal_width--;
diff --git a/shell/hush.c b/shell/hush.c
index 7658aeb..cc0cb69 100644
--- a/shell/hush.c
+++ b/shell/hush.c
@@ -1840,7 +1840,7 @@
 			result = -1;
 		} else {
 			cur->name = strdup(name);
-			if (cur->name) {
+			if (!cur->name) {
 				free(cur);
 				result = -1;
 			} else {
