macloader: Use fchmod() to change permissions.

Change-Id: I18bca9b022dba24403867b022af9d858aad72bc4
Signed-off-by: Andreas Schneider <asn@cryptomilk.org>
diff --git a/macloader/macloader.c b/macloader/macloader.c
index 3e91ec5..89b657d 100644
--- a/macloader/macloader.c
+++ b/macloader/macloader.c
@@ -23,6 +23,7 @@
 #include <stdlib.h>
 #include <string.h>
 #include <sys/stat.h>
+#include <unistd.h>
 
 #include <cutils/log.h>
 
@@ -164,12 +165,19 @@
             ALOGE("Can't write to %s\n", CID_PATH);
             return -1;
         }
-        fclose(cidfile);
 
-        /* set permissions on cid file */
-        ALOGD("Setting permissions on %s\n", CID_PATH);
+        /* Change permissions of cid file */
+        ALOGD("Change permissions of %s\n", CID_PATH);
+
+        fd = fileno(cidfile);
         amode = S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH;
-        ret = chmod(CID_PATH, amode);
+        ret = fchmod(fd, amode);
+        fclose(cidfile);
+        if (ret != 0) {
+            ALOGE("Can't set permissions on %s - %s\n",
+                  CID_PATH, strerror(errno));
+            return 1;
+        }
 
         char* chown_cmd = (char*) malloc(strlen("chown system ") + strlen(CID_PATH) + 1);
         char* chgrp_cmd = (char*) malloc(strlen("chgrp system ") + strlen(CID_PATH) + 1);
@@ -178,12 +186,6 @@
         system(chown_cmd);
         system(chgrp_cmd);
 
-        if (ret != 0) {
-            fprintf(stderr, "chmod() on file %s failed\n", CID_PATH);
-            ALOGE("Can't set permissions on %s\n", CID_PATH);
-            return ret;
-        }
-
     } else {
         /* delete cid file if no specific type */
         ALOGD("Deleting file %s\n", CID_PATH);