Handle error from fopen_path in finish_recovery

The fopen_path will fail here e.g. if /cache is corrupt and could
not be mounted. Not properly handling an error code from
fopen_path() results in a boot loop into recovery as fwrite() on
a NULL FILE object will crash the recovery app.

Change-Id: I1ccff5a8cb620a32f32adfe97a3fae8e5e908f39
diff --git a/recovery.cpp b/recovery.cpp
index 28dd212..7bdf961 100644
--- a/recovery.cpp
+++ b/recovery.cpp
@@ -504,10 +504,12 @@
         if (has_cache) {
             LOGI("Saving locale \"%s\"\n", locale);
             FILE* fp = fopen_path(LOCALE_FILE, "w");
-            fwrite(locale, 1, len, fp);
-            fflush(fp);
-            fsync(fileno(fp));
-            check_and_fclose(fp, LOCALE_FILE);
+            if (fp != NULL) {
+                fwrite(locale, 1, len, fp);
+                fflush(fp);
+                fsync(fileno(fp));
+                check_and_fclose(fp, LOCALE_FILE);
+            }
         }
     }