diff --git a/openrecoveryscript.cpp b/openrecoveryscript.cpp
index 40ad803..b45cf0a 100644
--- a/openrecoveryscript.cpp
+++ b/openrecoveryscript.cpp
@@ -95,13 +95,13 @@
 }
 
 int OpenRecoveryScript::run_script_file(void) {
-	FILE *fp = fopen(SCRIPT_FILE_TMP, "r");
 	int ret_val = 0, cindex, line_len, i, remove_nl, install_cmd = 0, sideload = 0;
 	char script_line[SCRIPT_COMMAND_SIZE], command[SCRIPT_COMMAND_SIZE],
 	     value[SCRIPT_COMMAND_SIZE], mount[SCRIPT_COMMAND_SIZE],
 	     value1[SCRIPT_COMMAND_SIZE], value2[SCRIPT_COMMAND_SIZE];
 	char *val_start, *tok;
 
+	FILE *fp = fopen(SCRIPT_FILE_TMP, "r");
 	if (fp != NULL) {
 		DataManager::SetValue(TW_SIMULATE_ACTIONS, 0);
 		DataManager::SetValue("ui_progress", 0); // Reset the progress bar
@@ -757,10 +757,21 @@
 
 	PartitionManager.Mount_All_Storage();
 	DataManager::SetValue(TW_SKIP_MD5_CHECK_VAR, 0);
+
 	LOGINFO("opening TW_ADB_BU_CONTROL\n");
 	adb_control_bu_fd = open(TW_ADB_BU_CONTROL, O_WRONLY | O_NONBLOCK);
+	if (adb_control_bu_fd < 0) {
+		LOGERR("Error opening TW_ADB_BU_CONTROL\n");
+		return -1;
+	}
 	LOGINFO("opening TW_ADB_TWRP_CONTROL\n");
 	adb_control_twrp_fd = open(TW_ADB_TWRP_CONTROL, O_RDONLY | O_NONBLOCK);
+	if (adb_control_twrp_fd < 0) {
+		LOGERR("Error opening TW_ADB_TWRP_CONTROL\n");
+		close(adb_control_bu_fd);
+		return -1;
+	}
+
 	memset(&adbmd5, 0, sizeof(adbmd5));
 
 	while (!breakloop) {
@@ -846,6 +857,8 @@
 					part_settings.progress = &progress;
 					if (!PartitionManager.Restore_Partition(&part_settings)) {
 						LOGERR("ADB Restore failed.\n");
+						close(adb_control_twrp_fd);
+						close(adb_control_bu_fd);
 						return 1;
 					}
 				}
@@ -881,6 +894,8 @@
 								LOGERR("Cannot write to ADB_CONTROL_BU_FD: %s\n", strerror(errno));
 							}
 							gui_msg(Msg(msg::kError, "restore_read_only=Cannot restore {1} -- mounted read only.")(part_settings.Part->Backup_Display_Name));
+							close(adb_control_twrp_fd);
+							close(adb_control_bu_fd);
 							return 1;
 
 						}
@@ -894,12 +909,16 @@
 					part_settings.progress = &progress;
 					if (!PartitionManager.Restore_Partition(&part_settings)) {
 						LOGERR("ADB Restore failed.\n");
+						close(adb_control_twrp_fd);
+						close(adb_control_bu_fd);
 						return 1;
 					}
 				}
 			}
 		}
 	}
+	close(adb_control_twrp_fd);
+	close(adb_control_bu_fd);
 	gui_msg("restore_complete=Restore Complete");
 
 	if (!twadbbu::Write_TWENDADB())
diff --git a/partition.cpp b/partition.cpp
index bbee37d..4644388 100644
--- a/partition.cpp
+++ b/partition.cpp
@@ -2906,6 +2906,7 @@
 		}
 	}
 exit:
+	close(fd);
 	return ret;
 #else
 	LOGINFO("Decrypt_Adopted: no crypto support\n");
